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

6mzjoqzu  于 2021-06-21  发布在  Flink
关注(0)|答案(1)|浏览(487)

我试图看到用apacheflink作业(kuberentes作为底层infra)替换使用ssis包创建的数百个feed文件etl作业的可行性。我在一些文章中看到的一个建议是“为一种工作使用一个flink集群”。
既然我每天都有一些不同类型的工作,那么对我来说最好的方法就是在执行工作时动态创建flinkcluster并销毁它以释放资源,这是正确的方法吗?我正在建立没有工作经理的flinkcluster。
关于使用flink进行批量etl活动的最佳实践的任何建议。
可能是最重要的问题:flink是问题陈述的正确解决方案还是我应该更深入地研究talend和其他经典etl工具?

72qzrwbm

72qzrwbm1#

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

会话群集

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

好处:

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

缺点:

工作之间没有严格的隔离
作业引起的故障 A 会引起工作 B 重新启动
工作 A 与作业在同一jvm中运行 B 因此,如果 statics 已使用

每个作业群集

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

好处

严格的工作隔离
更可预测的资源消耗,因为只有一个作业在服务器上运行 TaskExecutors ####缺点
集群部署时间是作业提交时间的一部分,导致提交时间更长
没有一个集群控制你所有的工作

建议

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

相关问题