李林超博客
首页
归档
留言
友链
动态
关于
归档
留言
友链
动态
关于
首页
大数据
正文
11.Flink并行度和任务链
Leefs
2022-01-10 PM
1752℃
0条
[TOC] ### 一、并行度(Parallelism) #### 1.1 概念 Flink程序的执行具有并行、分布式的特性。 在执行过程中,一个流(stream)包含一个或多个分区(stream partition),而每一个算子(operator)可以包含一个或多个子任务(operator subtask),这些子任务在不同的线程、不同的物理机或不同的容器中彼此互不依赖地执行。 **一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。** 一般情况下,一个流程序的并行度,可以认为就是其所有算子中最大的并行度。一个程序中,不同的算子可能具有不同的并行度。 ![11.Flink并行度和任务链01.png](https://lilinchao.com/usr/uploads/2022/01/1561340575.png) #### 1.2 并行度模式 Stream在算子之间传输数据的形式可以是one-to-one(forwarding)的模式也可以是redistributing的模式,具体是哪一种形式,取决于算子的种类。 + **One-to-one**:stream(比如在source和map operator之间)维护着分区以及元素的顺序。那意味着map算子的子任务看到的元素的个数以及顺序跟source算子的子任务生产的元素的个数、顺序相同,map、fliter、flatMap等算子都是one-to-one的对应关系。 **类似于spark中的窄依赖** + **Redistributing**:stream(map()跟keyBy/window之间或者keyBy/window跟sink之间)的分区会发生改变。每一个算子的子任务依据所选择的transformation发送数据到不同的目标任务。例如,keyBy()基于hashCode重分区、broadcast和rebalance会随机重新分区,这些算子都会引起 redistribute过程,而redistribute过程就类似于Spark中的shuffle过程。 **类似于spark中的宽依赖** ### 二、任务链(Operator Chains) Flink采用了一种称为任务链的优化技术,可以在特定条件下减少本地通信的开销。为了满足任务链的要求,必须将两个或多个算子设为相同的并行度,并通过本地转发(local forward)的方式进行连接。 ![11.Flink并行度和任务链02.png](https://lilinchao.com/usr/uploads/2022/01/1969417507.png) 上图所示的算子管道满足这些要求。它由三个算子组成,这些算子的任务并行度都被设为2,并且通过本地转发方式相连接。 ![11.Flink并行度和任务链03.png](https://lilinchao.com/usr/uploads/2022/01/2426364261.png) 上图展示了管道以任务链方式运行的过程。算子的函数被融合成了一个单一的任务,由一个线程执行。由函数生成的数据通过一个简单的方法调用移交给下一个函数;这样在函数之间直接传递数据,基本上没有序列化和通信成本。 任务链可以显著降低本地任务之间的通信成本,但也有一些场景,在没有链接的情况下运行管道操作是有意义的。例如,如果任务链中某个函数执行的开销巨大,那就可以将一条长的任务链管道断开,或者将一条链断开为两个任务,从而可以将这个开销大的函数调度到不同的槽(slots)中。 ![11.Flink并行度和任务链04.png](https://lilinchao.com/usr/uploads/2022/01/2579656673.png) 上图显示了在没有任务链的情况下相同管道操作的执行情况。所有函数都由独立的单个任务来评估,每个任务都在专有的线程中运行。 *附:* *[参考文章链接](https://confucianzuoyuan.github.io/flink-tutorial/book/chapter03-02-02-%E4%BB%BB%E5%8A%A1%E9%93%BE.html)*
标签:
Flink
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:
https://lilinchao.com/archives/1825.html
上一篇
10.Flink数据流和执行图介绍
下一篇
12.Flink流处理API之Environment
评论已关闭
栏目分类
随笔
2
Java
326
大数据
229
工具
31
其它
25
GO
47
NLP
4
标签云
前端
稀疏数组
正则表达式
MyBatis
nginx
RSA加解密
Zookeeper
Azkaban
JavaWEB项目搭建
Golang基础
Eclipse
MyBatis-Plus
SpringCloudAlibaba
设计模式
微服务
Spark Streaming
gorm
FileBeat
机器学习
Map
Quartz
Java阻塞队列
Yarn
Scala
ajax
持有对象
FastDFS
Java编程思想
JavaWeb
递归
友情链接
申请
范明明
庄严博客
Mx
陶小桃Blog
虫洞
评论已关闭