0

我试图看看用 apache flink 作业(以及 kuberentes 作为底层基础)替换使用 SSIS 包创建的数百个提要文件 ETL 作业的可行性。我在一些文章中看到的一个建议是“将一个 flink 集群用于一种类型的工作”。

由于我每天每种作业类型都有少量作业,那么这意味着对我来说最好的方法是在执行作业时动态创建 flinkcluster 并销毁它以释放资源,这是正确的方法吗?我正在设置没有作业管理器的 flinkcluster。

关于使用 flink 进行批处理 ETL 活动的最佳实践的任何建议。

可能是最重要的问题:flink 是问题陈述的正确解决方案,还是我应该更多地研究 Talend 和其他经典 ETL 工具?

4

1 回答 1

0

Flink 非常适合运行 ETL 工作负载。这两种部署模式为您提供以下属性:

会话集群

会话集群允许在同一组资源上运行多个作业 ( TaskExecutors)。在提交任何资源之前启动会话集群。

好处:

  • 提交作业时无需额外的集群部署时间 => 更快的作业提交
  • 如果单个作业不需要很多资源,则可以更好地利用资源
  • 一个地方控制您的所有工作

缺点:

  • 作业之间没有严格的隔离
    • 作业导致的失败A会导致作业B重启
    • 作业A与作业在同一个 JVM 中运行,B因此如果statics使用它会影响它

每作业集群

每个作业集群为每个作业启动一个专用的 Flink 集群。

好处

  • 严格的工作隔离
  • 更可预测的资源消耗,因为只有一个作业在TaskExecutors

缺点

  • 集群部署时间是作业提交时间的一部分,导致提交时间较长
  • 没有一个集群可以控制您的所有工作

推荐

因此,如果您有许多需要快速响应的短期 ETL 作业,那么我建议您使用会话集群,因为您可以避免每个作业的集群启动时间。如果 ETL 作业的运行时间很长,那么这个额外的时间将毫无意义,我会选择 per-job 模式,因为严格的作业隔离,它可以为您提供更可预测的运行时行为。

于 2020-08-19T08:34:45.360 回答