我试图看到用apacheflink作业(kuberentes作为底层infra)替换使用ssis包创建的数百个feed文件etl作业的可行性。我在一些文章中看到的一个建议是“为一种工作使用一个flink集群”。
既然我每天都有一些不同类型的工作,那么对我来说最好的方法就是在执行工作时动态创建flinkcluster并销毁它以释放资源,这是正确的方法吗?我正在建立没有工作经理的flinkcluster。
关于使用flink进行批量etl活动的最佳实践的任何建议。
可能是最重要的问题:flink是问题陈述的正确解决方案还是我应该更深入地研究talend和其他经典etl工具?
1条答案
按热度按时间72qzrwbm1#
flink非常适合运行etl工作负载。这两种部署模式提供以下属性:
会话群集
会话集群允许在同一组资源上运行多个作业(
TaskExecutors
). 在提交任何资源之前启动会话集群。好处:
提交作业时不需要额外的集群部署时间=>更快的作业提交
如果单个工作不需要太多资源,则可以提高资源利用率
一个控制你所有工作的地方
缺点:
工作之间没有严格的隔离
作业引起的故障
A
会引起工作B
重新启动工作
A
与作业在同一jvm中运行B
因此,如果statics
已使用每个作业群集
每个作业集群为每个作业启动一个专用的flink集群。
好处
严格的工作隔离
更可预测的资源消耗,因为只有一个作业在服务器上运行
TaskExecutors
####缺点集群部署时间是作业提交时间的一部分,导致提交时间更长
没有一个集群控制你所有的工作
建议
因此,如果您有许多需要快速响应的短期etl作业,那么我建议使用会话集群,因为您可以避免每个作业的集群启动时间。如果etl作业有一个很长的运行时间,那么这个额外的时间将不起任何作用,我将选择每个作业模式,由于严格的作业隔离,它将为您提供更可预测的运行时行为。