由于工作需要最近学习flink
现记录下Flink介绍和实际使用过程
这是flink系列的第六篇文章
并行度
一个任务(Source、Transformation、Sink)的并行实例(线程〉数目称为该任务的并行度
Slots
Slots概念
在flink中,把对资源的最小抽象称作slot,可以理解为是资源的最小管理单位,它是TaskManager资源的一个子集。通过slot,flink将资源进行有效的划分和管理。注意,CPU资源并不是每个slot所独享的,而是共享的。
每个TaskManager拥有几个slot,就代表这个TaskManager能够提供的并发能力就是几,但实际的并行度也有可能小于这个数字。
slot共享
flink中允许一个任务的不同子任务共享同一个slot,也允许不同任务的不同子任务共享同一个slot,前提是这些子任务不属于同一种操作类型的任务。通过slot共享,能够让资源密集型子任务(Source,Map)和资源密集型子任务(KeyBy/Window/Apply)能够充分利用资源,避免闲的闲死,忙的忙死。
并行度的使用方法
Operator Level (算子层面〉
Execution Environment Level (执行环境层面〉
Client Level (客户层面〉
客户端提交 Job到Flink时-p参数设置:
./bin/flink run -p 10 WordCount- java . jar
System Level (系统层面)
flink-conf. yaml文件
使用parallelism.default属性来设置所有执行环境的默认并行度。
并行度优先级
一个任务的并行度设置包含下面4个层面:
- Operator Level (算子层面〉
- Execution Environment Level (执行环境层面〉
- Client Level (客户 层面〉
- System Level (系统层面)
优先级为 Operator Level> Execution Environment Level>Client Level>System Level