【大数据】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、任务槽和任务的分布将如下图所示,方括号内的数字为并行线程的编号。

在这里插入图片描述
由图中可以看出,由于算子链机制的存在,KeyAggSink 操作链接在了一起,作为一个 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 所示。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/378627.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【lesson48】进程通信之system V(信号量)

文章目录 信号量理解 信号量理解 为了进程通信—>我们需要让不同的进程看到同一份资源---->我们之前讲的所有通信方式&#xff0c;本质都是优先解决一个问题&#xff1a;让不同的进程看到同一份资源。 让不同的进程看到了同一份资源&#xff0c;但是也带来了一些问题&a…

nacos安装手册

1. 单机模式 1.1 准备安装介质 nacos-server-2.1.1.tar.gz1.2 环境准备 1台服务器安装JDK 1.8 1.3 解压 tar-zxvf nacos-server-2.1.1.tar.gz1.4 启动 进入解压的nacos目录&#xff0c;进入bin目录&#xff0c;运行&#xff1a; ./startup.sh -m standalone1.5 验证 na…

Markdown:简洁高效的文本标记语言

引言 在当今信息爆炸的时代&#xff0c;我们需要一种简洁、高效的文本标记语言来排版和发布内容。Markdown应运而生&#xff0c;它是一种轻量级的文本标记语言&#xff0c;以其简单易学、易读易写的特点&#xff0c;成为了广大写作者的首选工具。本文将介绍Markdown的语法优缺…

如何修复Mac的“ kernel_task” CPU使用率过高的Bug?

当计算机开始缓慢运行时&#xff0c;这从来都不是一件有趣的事情&#xff0c;但是当您弄不清它为何如此缓慢时&#xff0c;甚至会变得更糟。如果您已经关闭了所有程序&#xff0c;并且Mac上的所有内容仍然感觉像是在糖蜜中移动&#xff0c;这可能是令人讨厌的kernel_task导致高…

物理信息神经网络(PINN): 将物理知识融合到深度学习中

物理信息神经网络&#xff08;PINN&#xff09;: 将物理知识融合到深度学习中 物理信息神经网络&#xff08;PINN&#xff09;简介PINN的工作原理PINN模型如何利用物理法则指导模型训练1. 定义物理问题和相应的物理定律2. 构建神经网络3. 定义损失函数数据误差项 (Data-fidelit…

C语言--------指针(1)

0.指针&指针变量 32位平台&#xff0c;指针变量是4个字节&#xff08;32bit/84)--------x86 64位平台&#xff0c;指针变量是8个字节&#xff08;64bit/88)--------x64 编号指针地址&#xff1b;我们平常讲的p是指针就是说p是一个指针变量&#xff1b; ************只要…

【Java多线程案例】单例模式

1. 单例模式概念 设计模式&#xff1a;谈到单例模式&#xff0c;我们首先需要知道什么是设计模式&#xff0c;设计模式是软件工程中的一大重要概念&#xff0c;是被广泛认可并使用于解决特定实际问题的代码设计经验&#xff0c;校招中常考的设计模式有单例模式、工厂模式 等&a…

Linux学习笔记(centOS)—— 文件系统

目录 一、Linux中的文件 打开方式 二、目录结构​ 三、相关命令 切换目录命令 列出当前目录下的文件和目录命令 一、Linux中的文件 “万物皆文件。” 图1.1 所有文件 打开方式 图形化界面左上角的位置→计算机&#xff0c;打开以后就可以看到Linux全部的文件了&#xf…

Linux第43步_移植ST公司uboot的第4步_uboot测试

uboot移植结束后&#xff0c;需要进行测试。 1、烧录程序 1)、将STM32MP157开发板的网络接口与路由器的网络接口通过网线连接起来。 2)、将开发板的串口和电脑通过USB线连接起来。 3)、将开发板的USB OTG接口和电脑通过USB线连接起来。 4)、将开发板上拨码开关拨到“000”…

nodeJS 的 npm 设置国内高速镜像之淘宝镜像的方法

1、我们知道 nodeJS 是老外搞出来的&#xff0c;服务器放在了国外&#xff0c;国内的小朋友访问起来会比较慢&#xff0c;阿里巴巴的淘宝给出了有力支持&#xff0c;现在我们就将 nodeJS 的镜像地址切换为国内的淘宝镜像。 2、查看当前的镜像地址&#xff1a; npm get registr…

前端学习之路(6) npm详解

npm 是什么&#xff1f; npm&#xff08;node package manager&#xff09;&#xff1a;node.js 的包管理器&#xff0c;用于node插件管理&#xff08;包括安装、卸载、管理依赖等&#xff09; &#xff0c;npm 是随同 node.js 一起安装的包管理工具&#xff0c;能解决 node.j…

HTTP2:netty http2 StreamChannel多流实现与Http2StreamFrame解码器的源码分析

netty http2 server侧的核心逻辑个人认为&#xff0c;主要在编解码处理器和Stream Transform Channel这块&#xff0c;分别处理Http2 消息帧的编解码&#xff0c;以及连接的多流处理机制。对应用的处理类分别&#xff1a; ChannelHandlerDescio.netty.handler.codec.http2.Htt…

编译OpenSSL时报错,Can‘t locate IPC/Cmd.pm in @INC

编译OpenSSL 3.0.1时报错&#xff0c;错误信息如下 解决方法&#xff1a; 安装perl-CPAN yum install -y perl-CPAN进入CPAN的shell模式&#xff0c;首次进入需要配置shell&#xff0c;按照提示操作即可&#xff08;本人perl小白&#xff0c;全部选择默认配置&#xff0c;高…

Python算法题集_环形链表

Python算法题集_环形链表 题234&#xff1a;环形链表1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【集合检索】2) 改进版一【字典检测】3) 改进版二【双指针】 4. 最优算法 本文为Python算法题集之一的代码示例 题234&#xff1a;环形链表 …

FPGA高端项目:解码索尼IMX327 MIPI相机转USB3.0 UVC 输出,提供FPGA开发板+2套工程源码+技术支持

目录 1、前言免责声明 2、相关方案推荐我这里已有的 MIPI 编解码方案 3、本 MIPI CSI-RX IP 介绍4、个人 FPGA高端图像处理开发板简介5、详细设计方案设计原理框图IMX327 及其配置MIPI CSI RX图像 ISP 处理图像缓存UVC 时序USB3.0输出架构FPGA逻辑设计工程源码架构SDK软件工程源…

数学建模-灰色预测最强讲义 GM(1,1)原理及Python实现

目录 一、GM&#xff08;1&#xff0c;1&#xff09;模型预测原理 二、GM&#xff08;1&#xff0c;1&#xff09;模型预测步骤 2.1 数据的检验与处理 2.2 建立模型 2.3 检验预测值 三、案例 灰色预测应用场景&#xff1a;时间序列预测 灰色预测的主要特点是模型使用的…

改变AI服务器:探索界面互连芯片技术的创新突破

根据TrendForce的数据&#xff0c;AI服务器的出货量约为130,000台&#xff0c;占全球服务器总出货量的约1%。随着微软、Meta、百度和字节跳动等主要制造商相继推出基于生成式AI的产品和服务&#xff0c;订单量显著增加。预测显示&#xff0c;在ChatGPT等应用的持续需求推动下&a…

Java+微信小程序实现智慧家政系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块三、系统展示四、核心代码4.1 查询家政服务4.2 新增单条服务订单4.3 新增留言反馈4.4 小程序登录4.5 小程序数据展示 五、免责说明 一、摘要 1.1 项目介绍 基于微信小程序JAVAVueSpringBootMySQL的智慧家政系统&#xff0…

TCP 传输控制协议

1 TCP 1.1 TCP 最主要的特点 1.TCP 是面向连接的运输层协议。 2.每一条 TCP 连接只能有两个端点 (endpoint)&#xff0c;每一条 TCP 连接只能是点对点的&#xff08;一对一&#xff09;。 3.TCP 提供可靠交付的服务。 4.TCP 提供全双工通信。 5.面向字节流 TCP 中的“流…

redisson源码解析

由于synchronized跟ReetrantLock是JVM级别的锁&#xff0c;在分布式情况下失效&#xff0c;这时候我们通常会选择redisson基于redis封装好的分布式锁。下面我们一起来分析以下redisson的源码。 使用方式 流程 getLock源码 给命令执行器赋值给看门狗时间赋值&#xff0c;默认30…
最新文章