Based on Flink 1.10.1
本文主要讲解下 flink 中 flink-conf.yaml 中有关 slots 的 配置,与 Yarn 中 container 以及 cores 的相应关系。
主要涉及以下两个参数
# The number of task slots that each TaskManager offers. Each slot runs one parallel pipeline.
taskmanager.numberOfTaskSlots: 2
解释:每个 TaskManager 中 slots 的数量。 该 slot 数量 与 YARN 中 core 一一对应。
# The parallelism used for programs that did not specify and other parallelism.
parallelism.default: 2
解释:当不做指定的时候,默认启动的slot 的数量
在 yarn 中 (1.flink single job 2. flink session )提交一个 flink 任务, container 数量计算方式如下
container.num == taskmanager.num == ( parallelism.default / taskmanager.numberOfTaskSlots )
taskmanager.numberOfTaskSlots: 1
parallelism.default: 2
看下上面配置在 flink on yarn session 下的表现, 提交一个 streaming wordcount 程序
flink run -d --class flink.FlinkTest flink_demo-1.0-SNAPSHOT-shaded.jar
-d 表示提交后,后台退出
我们先看下YARN 的资源管理界面,占用了 3个core, 3个container。
container 为 3 == 1 (AppMaster + JobManger) + 2 (parallelism.default / taskmanager.numberOfTaskSlots ) ->TaskManager数量
可以清楚的从上面的界面看到
taskmanager 为 2, task slots 为2