[flink]随笔

一、 flink运行模式

yarn上部署的过程是:客户端把Flink应用提交给Yarn的ResourceManager,Yarn的ResourceManager会向Yarn的NodeManager申请容器。在这些容器上,Flink会部署JobManager和TaskManager的实例,从而启动集群。Flink会根据运行在JobManager上的作业所需要的Slot数量动态分配TaskManager资源。

bash 复制代码
yarn-session.sh \
-d #后台运行 
-nm #在yarn上显示的名字

二、并行度优先级

代码算子>代码env>提交时限定>配置文件

复制代码
env.setParallelism(5); #env
.flatMap(xxx).setParallelism(5) #算子

三、算子链(Operator Chain)

一个数据流在算子之间传输数据的形式可以是一对一(one to one)的直通(forwarding)模式,也可以是打乱的重分区(redistributing)模式,具体是哪一种形式,取决于算子的种类。

1、算子间的数据传输

1)一对一(one to one,forwarding)

这种模式下,数据流维护着分区以及元素的顺序。比如图中的source和map算子,source算子读取数据之后,可以直接发送给map算子做处理,他们之间不需要重分区 ,也不需要调整数据的顺序 。这就意味着map算子的子任务,看到的元素个数和顺序跟source算子的子任务产生的完全一样,保证着'一对一'的关系。map、filter、flatMap等算子都是这种one-to-one的对应关系。这种关系类似于Spark中的窄依赖

2)重分区(Redistributing)

在这种模式下,数据流的分区会发生改变。比如图中的map和后面的keyBy/window算子之间,以及keyBy/window算子和sink算子之间,都是这样的关系。

每一个算子的子任务,会根据数据传输的策略,把数据发送到不同的下游目标任务 。这些传输方式都会引起重分区的过程,这一过程类似于Spark中的Shuffle

2、合并算子链

在Flink中,并行度相同的一对一(one to one)算子操作,可以直接链接在一起形成一个'大'的任务(task),这样原来的算子就成为了真正任务里的一部分,如下图所示。每个task会被一个线程执行。这样的技术被称为"算子链"(Operator Chain)。

上图中Source和map之间满足了算子链的要求,所以可以直接合并在一起,形成了一个任务;因为并行度为2,所以合并后也有两个并行子任务。这样,这个数据流图所表示的作业最终会有5个任务,由5个线程并行执行。

将算子链接成task事非常有效的优化;可以减少线程之间的切换和基于缓存区的数据交换,在减少时延的同时提高吞吐量。

Flink默认会按照算子链的原则进行链接合并,如果我们想要禁止合并或者自行定义,也可以在代码中对算子做一些特定的设置。

java 复制代码
//禁止算子链
.map(xxx).disableChaining;
//从当前算子开始新链
.map(xxx).startNewChain;

3、梳理算子链

1)算子间传输关系:

一对一、充分区

2)算子,串在一起的条件:

一对一 且 并行度相同

3)关于算子链的api

①全局禁用算子链:env.disableOperatorChaining();

②某个算子不参与链化:算子A(xxx).disableChaining(); 此时算子A不会与前面和后面的算子串 在一起

③从某个算子开启新的链条:算子A.startNewChain();算子A不与前面的算子串在一起,从A开 始正常链化。

4)禁用算子链的情况

计算逻辑复杂:如果一个task中的多个算子,每个算子计算逻辑都很复杂就不适合合在一起。

排错:如果在一起算子链中,就不知道是具体哪个算子出问题了。

相关推荐
千里码aicood4 小时前
计算机大数据、人工智能与智能系统开发定制开发
大数据·人工智能·深度学习·决策树·机器学习·森林树
非著名架构师6 小时前
城市通风廊道的科学依据:气候大数据如何指导未来城市规划设计
大数据·风光功率预测·高精度气象数据
IIIIIILLLLLLLLLLLLL6 小时前
Hadoop集群时间同步方法
大数据·hadoop·分布式
搞科研的小刘选手6 小时前
【经管专题会议】第五届大数据经济与数字化管理国际学术会议(BDEDM 2026)
大数据·区块链·学术会议·数据化管理·经济理论
蓝耘智算7 小时前
GPU算力租赁与算力云平台选型指南:从需求匹配到成本优化的实战思路
大数据·人工智能·ai·gpu算力·蓝耘
liliangcsdn7 小时前
如何用bootstrap模拟估计pass@k
大数据·人工智能·bootstrap
DMD1687 小时前
AI赋能旅游与酒店业:技术逻辑与开发实践解析
大数据·人工智能·信息可视化·重构·旅游·产业升级
Elastic 中国社区官方博客8 小时前
Elasticsearch 中使用 NVIDIA cuVS 实现最高快 12 倍的向量索引速度:GPU 加速第 2 章
大数据·人工智能·elasticsearch·搜索引擎·ai·全文检索·数据库架构
jqpwxt8 小时前
启点智慧景区多商户分账系统,多业态景区收银管理系统
大数据·旅游
jkyy20148 小时前
线上线下融合、跨场景协同—社区健康医疗小屋的智能升级
大数据·人工智能·物联网·健康医疗