文章主要讲解Flink并行度的设置优先级、原理、配置与最佳实践。
并行度设置方式(按优先级从高到低):
- 算子级别(Operator Level):通过setParallelism()方法指定,如
.map(...).setParallelism(10) - 执行环境级别(Environment Level):
env.setParallelism(4) - 客户端级别(Client Level):通过flink命令的-p参数指定,如
flink run -p 10 your-job.jar - 系统级别(System Level):在flink-conf.yaml中配置
parallelism.default: 4
并行度优化建议:
- 并行度应与可用slot数量相匹配
- 简单ETL作业:4-8;复杂计算/窗口聚合:8-16;机器学习/图计算:16-32+
- 从低并行度开始测试,逐步增加直到资源利用率达到70-80%
- I/O密集型操作建议使用适中或较低并行度;CPU密集型操作可使用较高并行度