使用flink/kubernetes替换etl作业(在ssis上):每个作业类型一个flink集群,或者每个作业执行创建



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

由于每种工作类型我每天都有少量的工作,这意味着对我来说,最好的方法是在执行工作时创建一个动态的"硬集群",并将其销毁以释放资源,这是正确的方法吗?在没有经理的情况下,我正在努力工作。

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

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

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

会话群集

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

优点:

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

缺点:

  • 作业之间没有严格隔离
    • 作业A引起的故障可导致作业B重新启动
    • 作业A与作业B在同一JVM中运行,因此如果使用statics,则会对其产生影响

每个作业集群

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

好处

  • 严格的工作隔离
  • 由于只有一个作业在TaskExecutors上运行,因此资源消耗更可预测

缺点

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

建议

因此,如果您有许多需要快速响应的短期ETL作业,那么我建议使用会话集群,因为您可以避免每个作业的集群启动时间。如果ETL作业的运行时间很长,那么这段额外的时间就没有意义了,我会选择按作业模式,因为严格的作业隔离,这会给你带来更可预测的运行时行为。

相关内容

  • 没有找到相关文章

最新更新