【大数据】Flink on YARN,如何确定 TaskManager 数
Flink on YARN,如何确定 TaskManager 数
- 1.问题
- 2.并行度(Parallelism)
- 3.任务槽(Task Slot)
- 4.确定 TaskManager 数

1.问题
在 Flink 1.5 Release Notes 中,有这样一段话,直接上截图。

这说明从 1.5 版本开始,Flink on YARN 时的容器数量,即 TaskManager 数量,将由程序的并行度自动推算,也就是说 flink run 脚本的 -yn / --yarncontainer 参数不起作用了(该参数用于设置 TaskManager 的个数)。那么自动推算的规则是什么呢?要弄清楚它,先来复习 Flink 的 并行度(Parallelism)和 任务槽(Task Slot)。
2.并行度(Parallelism)
与 Spark 类似地,一个 Flink Job 在生成执行计划时也划分成多个 Task。Task 可以是 Source、Sink、算子或算子链。Task 可以由多线程并发执行,每个线程处理 Task 输入数据的一个子集,而并发的数量就称为 Parallelism,即 并行度。
Flink 程序中设定并行度有 4 种级别,从低到高分别为:算子级别、执行环境级别(ExecutionEnvironment)、客户端(命令行)级别、配置文件级别(flink-conf.yaml)。实际执行时,优先级则是反过来的,算子级别最高。简单示例如下:
- 1️⃣ 算子级别
dataStream.flatMap(new SomeFlatMapFunction()).setParallelism(4);
- 2️⃣ 执行环境级别
streamExecutionEnvironment.setParallelism(4);
- 3️⃣ 命令行级别
bin/flink -run --parallelism 4 example-0.1.jar
- 4️⃣
flink-conf.yaml级别
parallelism.default: 4
3.任务槽(Task Slot)
Flink 运行时由两个组件组成:JobManager 与 TaskManager,与 Spark Standalone 模式下的 Master 与 Worker 是同等概念。

JobManager 和 TaskManager 本质上都是 JVM 进程。为了提高 Flink 程序的运行效率和资源利用率,Flink 在 TaskManager 中实现了 任务槽(Task Slot)。任务槽是 Flink 计算资源的基本单位,每个任务槽可以在同一时间执行一个 Task,而 TaskManager 可以拥有一个或者多个任务槽。
任务槽可以实现 TaskManager 中不同 Task 的资源隔离,不过是逻辑隔离,并且只隔离内存,亦即在调度层面认为每个任务槽 “应该” 得到 taskmanager.heap.size 的 1 / N 1/N 1/N 大小的内存,CPU 资源不算在内。
TaskManager 的任务槽个数在使用 flink run 脚本提交 on YARN 作业时用 -ys / --yarnslots 参数来指定,另外在 flink-conf.yaml 文件中也有默认值 taskManager.numberOfTaskSlots。一般来讲,我们设定该参数时可以将它理解成一个 TaskManager 可以利用的 CPU 核心数,因此也要根据实际情况(集群的 CPU 资源和作业的计算量)来确定。
4.确定 TaskManager 数
以 Flink 自带示例中简化的 WordCount 程序为例:
// 执行环境并行度设为6
env.setParallelism(6);
// Source并行度为1
DataStream<String> text = env.readTextFile(params.get("input")).setParallelism(1);
DataStream<Tuple2<String, Integer>> counts = text.flatMap(new Tokenizer()).keyBy(0).sum(1);
counts.print();
用 --yarnslots 3 参数来执行,即每个 TaskManager 分配 3 个任务槽。TaskManager、任务槽和任务的分布将如下图所示,方括号内的数字为并行线程的编号。

由图中可以看出,由于算子链机制的存在,KeyAgg 与 Sink 操作链接在了一起,作为一个 Task 来执行。
Flink 允许任务槽共享,即来自同一个 Job 的不同 SubTask(即 算子的并发实例)进入同一个槽位,因此在图中也可以见到任务槽 X 中同时存在 FlatMap[X] 与 KeyAgg[X] + Sink[X]。任务槽共享有两点好处:
- 能够让每个 SubTask 都均摊到不同的 TaskManager,避免负载倾斜。
- 不需要再计算 App 一共需要起多少个 Task,因为作业需要的任务槽数量肯定等于 Job 中最大的并行度。
所以,可以得出 Flink on YARN 时,TaskManager 数 = Job 的最大并行度 / 每个TaskManager 分配的任务槽数,结果向上取整。例如,一个最大并行度为 10,每个 TaskManager 有 2 个任务槽的作业,就会启动 5 个 TaskManager,如 Web UI 所示。

相关文章:
【大数据】Flink on YARN,如何确定 TaskManager 数
Flink on YARN,如何确定 TaskManager 数 1.问题2.并行度(Parallelism)3.任务槽(Task Slot)4.确定 TaskManager 数 1.问题 在 Flink 1.5 Release Notes 中,有这样一段话,直接上截图。 这说明从 …...
ES节点故障的容错方案
ES节点故障的容错方案 1. es启动加载逻辑1.1 segment和translg组成和分析1.2 es节点启动流程1.3 es集群的初始化和启动过程 2. master高可用2.1 选主逻辑2.1.1 过滤选主的节点列表2.1.2 Bully算法2.1.2 类Raft协议2.1.3 元数据合并 2.2 HA切换 3. 分片高可用3.1 集群分片汇报3.…...
【Flink】FlinkSQL实现数据从Kafka到MySQL
简介 未来Flink通用化,代码可能就会转换为sql进行执行,大数据开发工程师研发Flink会基于各个公司的大数据平台或者通用的大数据平台,去提交FlinkSQL实现任务,学习Flinksql势在必行。 本博客在sql-client中模拟大数据平台的sql编辑器执行FlinkSQL,使用Flink实现数据从Kafka传…...
Unity GC
本文由 简悦 SimpRead 转码, 原文地址 mp.weixin.qq.com 简略版本 在 Unity 中,垃圾回收(Garbage Collection,GC)采用的是基于标记-清除(Mark and Sweep)算法的自动内存管理机制。 基于标记-清…...
Vue源码系列讲解——变化侦测篇【下】(Array的变化侦测)
目录 1. 前言 2. 在哪里收集依赖 3. 使Array型数据可观测 3.1 思路分析 3.2 数组方法拦截器 3.3 使用拦截器 4. 再谈依赖收集 4.1 把依赖收集到哪里 4.2 如何收集依赖 4.3 如何通知依赖 5. 深度侦测 6. 数组新增元素的侦测 7. 不足之处 8. 总结 1. 前言 上一篇文…...
【机器学习笔记】贝叶斯学习
贝叶斯学习 文章目录 贝叶斯学习1 贝叶斯学习背景2 贝叶斯定理3 最大后验假设MAP(Max A Posterior)4 极大似然假设ML(Maximum Likelihood)5 朴素贝叶斯NB6 最小描述长度MDL 1 贝叶斯学习背景 试图发现两件事情的关系(因果关系,先决条件&结论&#x…...
ElasticSearch之倒排索引
写在前面 本文看下es的倒排索引相关内容。 1:正排索引和倒排索引 正排索引就是通过文档id找文档内容,而倒排索引就是通过文档内容找文档id,如下图: 2:倒排索引原理 假定我们有如下的数据: 为了建立倒…...
win11安装mysql8.3.0压缩包版 240206
mysql社区版安装包版windows安装包下载地址 在系统环境变量path无点.的情况下 powershell 可以 .\ 或 ./ 开头表示当前文件夹cmd 可以直接命令或.\开头, 不能./开头 所以 .\ 在cmd和powershell中通用 步骤 在解压目录 .\mysqld --initialize-insecure root无密码初始化.\m…...
数据库索引与优化:深入了解索引的种类、使用与优化
数据库索引与优化:深入了解索引的种类、使用与优化 索引的种类 数据库索引是提高查询速度的重要手段之一,主要分为以下几种类型: 主键索引(Primary Key Index): 唯一标识表中的每一行数据,保…...
React 错误边界组件 react-error-boundary 源码解析
文章目录 捕获错误 hook创建错误边界组件 Provider定义错误边界组件定义边界组件状态捕捉错误渲染备份组件重置组件通过 useHook 控制边界组件 捕获错误 hook getDerivedStateFromError 返回值会作为组件的 state 用于展示错误时的内容 componentDidCatch 创建错误边界组件 P…...
分享66个相册特效,总有一款适合您
分享66个相册特效,总有一款适合您 66个相册特效下载链接:https://pan.baidu.com/s/1jqctaho4sL_iGSNExhWB6A?pwd8888 提取码:8888 Python采集代码下载链接:采集代码.zip - 蓝奏云 学习知识费力气,收集整理更不…...
chagpt的原理详解
GPT(Generative Pre-trained Transformer)是一种基于Transformer架构的生成式预训练模型。GPT-3是其中的第三代,由OpenAI开发。下面是GPT的基本原理: Transformer架构: GPT基于Transformer架构,该架构由Att…...
dockerfile 详细讲解
当编写 Dockerfile 时,你需要考虑你的应用程序所需的环境和依赖项,并将其描述为一系列指令。下面是一个简单的示例,演示如何编写一个用于部署基于 Node.js 的网站的 Dockerfile: Dockerfile # 使用官方 Node.js 镜像作为基础镜像…...
跟着pink老师前端入门教程-day23
苏宁网首页案例制作 设置视口标签以及引入初始化样式 <meta name"viewport" content"widthdevice-width, user-scalableno, initial-scale1.0, maximum-scale1.0, minimum-scale1.0"> <link rel"stylesheet" href"css/normaliz…...
JRT监听程序
本次设计避免以往设计缺陷,老的主要为了保持兼容性,在用的设计就不好调了。 首先,接口抽象时候就不在给参数放仪器ID和处理类了,直接放仪器配置实体,接口实现想用什么属性就用什么属性,避免老方式要扩参数时…...
MCU+SFU视频会议一体化,视频监控,指挥调度(AR远程协助)媒体中心解决方案。
视频互动应用已经是政务和协同办公必备系统,早期的分模块,分散的视频应该不能满足业务需要,需要把视频监控,会议,录存一体把视频资源整合起来,根据客户需求,需要能够多方视频互动,直…...
1184. 欧拉回路(欧拉回路,模板题)
活动 - AcWing 给定一张图,请你找出欧拉回路,即在图中找一个环使得每条边都在环上出现恰好一次。 输入格式 第一行包含一个整数 t,t∈{1,2},如果 t1,表示所给图为无向图,如果 t2,表示所给图为…...
学习 Redis 基础数据结构,不讲虚的。
学习 Redis 基础数据结构,不讲虚的。 一个群友给我发消息,“该学的都学了,怎么就找不到心意的工作,太难了”。 很多在近期找过工作的同学一定都知道了,背诵八股文已经不是找工作的绝对王牌。企业最终要的是可以创造价…...
Android 11 webview webrtc无法使用问题
问题:Android 11 webview 调用webrtc无法使用, 看logcat日志会报如下错误 [ERROR:address_tracker_linux.cc(245)] Could not send NETLINK request: Permission denied (13) 查了下相关的网络权限都有配置了还是不行,还是报这个权限问题 原因࿱…...
嵌入式单片机中晶振的工作原理
晶振在单片机中是必不可少的元器件,只要用到CPU的地方就必定有晶振的存在,那么晶振是如何工作的呢? 什么是晶振 晶振一般指晶体振荡器,晶体振荡器是指从一块石英晶体上按一定方位角切下的薄片,简称为晶片。 石英晶体谐…...
(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
题目:3442. 奇偶频次间的最大差值 I 思路 :哈希,时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况,哈希表这里用数组即可实现。 C版本: class Solution { public:int maxDifference(string s) {int a[26]…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
转转集团旗下首家二手多品类循环仓店“超级转转”开业
6月9日,国内领先的循环经济企业转转集团旗下首家二手多品类循环仓店“超级转转”正式开业。 转转集团创始人兼CEO黄炜、转转循环时尚发起人朱珠、转转集团COO兼红布林CEO胡伟琨、王府井集团副总裁祝捷等出席了开业剪彩仪式。 据「TMT星球」了解,“超级…...
新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
Map相关知识
数据结构 二叉树 二叉树,顾名思义,每个节点最多有两个“叉”,也就是两个子节点,分别是左子 节点和右子节点。不过,二叉树并不要求每个节点都有两个子节点,有的节点只 有左子节点,有的节点只有…...
tree 树组件大数据卡顿问题优化
问题背景 项目中有用到树组件用来做文件目录,但是由于这个树组件的节点越来越多,导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多,导致的浏览器卡顿,这里很明显就需要用到虚拟列表的技术&…...
【JVM】Java虚拟机(二)——垃圾回收
目录 一、如何判断对象可以回收 (一)引用计数法 (二)可达性分析算法 二、垃圾回收算法 (一)标记清除 (二)标记整理 (三)复制 (四ÿ…...
三分算法与DeepSeek辅助证明是单峰函数
前置 单峰函数有唯一的最大值,最大值左侧的数值严格单调递增,最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值,最小值左侧的数值严格单调递减,最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...
