文章主要讲解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密集型操作可使用较高并行度