Flink on YARN是如何确定TaskManager个数的

1. 计算公式

先看计算公式:(结果向上取整)

TaskManager个数 = Job的最大并行度 / 每个TaskManager分配的任务槽数

(注意老版本有参数-yn / --yarncontainer 来指定运行的 TaskManager个数,已经失效)

再来看看什么是并行度和任务槽数以及他们是如何确定的。

2. 并行度(parallelism)

一个Flink程序由多个Operator组成(source、transformation和 sink)。

一个Operator由多个并行的Task(线程)来执行, 一个Operator的并行Task(线程)数目就被称为该Operator(任务)的并行度(Parallel)。即并行度就是相对于Operator来说的。

并行度的指定,可以有4种级别来设置Operator的并行度

1) Operator Level(算子级别)

operator.setParallelism(3)

2)Execution Environment Level(执行环境级别)

streamExecutionEnvironment.setParallelism(3)

3)Client Level(客户端级别)

./bin/flink run -p 3 ...

4)System Level(系统默认级别,不推荐,因为会影响所有作业)

即在配置文件flink-conf.yaml中的配置项 parallelism.default

并行度的优先级:算子级别 > env级别 > 客户端级别 > 系统默认级别

3. 任务槽(task slot)

每个worker (TaskManager)是一个JVM进程,可以在单独的线程中执行一个或多个子任务。为了控制TaskManager接受的任务数量,它提出了任务槽的概念。每个任务槽代表TaskManager的一个固定的资源子集,每个TaskManager配置多个slot。由于Flink允许Sub-Tasks共享slot,一个Slot可以运行多个Sub-Task,但是这些Sub-Task必须是来自同一个Job的不同Task的Sub-Task。注意:同一个slot不能执行同一个Task的多个subTask,另外要注意,不是说一个slot里就只有一个线程,可能会有多个不同Task的Sub-Task,也就是多个线程的。slot目前仅对内存有限制,cpu无法限制。

任务槽数的指定,由参数 taskmanager.numberOfTaskSlots 决定。注意这里还会涉及一个问题就是因为是运行在yarn上的所以就会涉及到container的cpu个数分配,就会涉及一个配置项 yarn.containers.vcores(该值生效需要yarn配置调度器为org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler),该参数默认值是-1,没配置就会去取taskmanager.numberOfTaskSlots的值,也就是 taskmanager.numberOfTaskSlots是多少就会分配多少cpu给该TaskManager。不过如果配置了 yarn.containers.vcores为具体值,则分配给该TaskManager的cpu数就是yarn.containers.vcores的具体值。当然注意分配多少cpu给TaskManager和task slot没关系,只是他只能用这么多cpu。

所以运行脚本命令时可以通过 -Dtaskmanager.numberOfTaskSlots=3 来指定

任务槽共享后形成 ============>

4. 实践案例

测试1:parallelism设置为5,task slot设置为2,则计算 5/2 向上取整就是3个TaskManager

bash bin/flink run -t yarn-per-job -d -p 5 -Dtaskmanager.numberOfTaskSlots=2 ./examples/streaming/TopSpeedWindowing.jar

测试2:parallelism设置为6,task slot设置为3,则计算 6/3 向上取整就是2个TaskManager

bash bin/flink run -t yarn-per-job -d -p 6 -Dtaskmanager.numberOfTaskSlots=3 ./examples/streaming/TopSpeedWindowing.jar

相关推荐
Raas1006 小时前
MAI Gateway(魔芋企业级AI网关)技术揭秘:AI网关支持哪些模型?从原理到落地
大数据·人工智能·网关·gateway·mai gateway·企业级产品
YangYang9YangYan9 小时前
2026 校招商品分析岗位 JD 拆解,核心指标、工具与面试考点
大数据·数据库·数据分析
大大大大晴天9 小时前
OpenMetadata VS DataHub VS Atlas VS Gravitino
大数据
Qyr9912 小时前
2026全球汽车碳刷行业发展全景分析报告
大数据
蓝速科技13 小时前
便民服务大厅 AI 数字人一体机场景适配与落地指南丨蓝速科技
大数据·网络·数据结构·人工智能·自然语言处理·数据分析·运维开发
精益数智工坊13 小时前
云计算环境数据怎么同步?云计算集成方案有哪些?
大数据·人工智能·数据挖掘·数据可视化
huashengzsj15 小时前
什么是DMS经销商管理系统?国内经销商管理系统有哪些品牌
大数据
IT毕设梦工厂15 小时前
计算机毕业设计选题推荐:基于大数据的草鱼价格分析与可视化|毕业设计选题|计算机毕设|选题推荐|毕设指导|项目定制|源码|高质量项目
大数据·hadoop·python·数据挖掘·数据分析·课程设计·大数据毕设项目
辛迪聊物业数字化16 小时前
智慧社区物业管理软件新手部署与实操指南
大数据·php
字节跳动数据平台16 小时前
模型再强,为什么 Demo 还是进不了生产?
大数据