济南房地产网站建设三个字广告公司名称
任务槽
-  
TaskSlots: 任务槽,是TaskManager提供的用于执行Task的资源(CPU + 内存)
 -  
TaskManager提供的TaskSlots的个数:主要由Taskmanager所在机器的CPU核心数来决定,不能超过CPU的最大核心数
- 1.可以在flink/conf/flink-conf.yaml文件中的numberOfTaskSlot配置
 - 2.在yarn集群中运行flink时,任务槽的个数受到yarn中container的最大CPU数 vcores
 
 -  
一个作业的Task数量如何确定?
- 1.主要由算子数、算子链数、并行度共同来决定的
 - 2.如果禁用算子链合并,task的数量 = 算子数 * 并行度(并行度相同)
 - 3.如果存在算子链合并,task的数量 = 合并后的算子链数(包含不合并的算子)* 并行度(并行度相同)
 
 -  
Slot共享:flink允许将上下游的task共享给同一个slot。但是注意,同一个Task的并行子任务不允许共享
 -  
为什么要Slot共享?
- 1.当我们将资源密集型和非密集型的任务同时放到一个slot中,他们就可以自行分配对资源占用的比例,保证最重的活平均分配给所有的Taskmanager
 - 2.Slot共享另一个好处就是在一个Slot中可以保存完整的作业管道
 
 -  
能不能不共享?
- 通过设置共享组(算子.slotSharingGroup(“共享组名”))来实现共享或者不共享,默认的共享组为default,从source端往后传递,如果下游的算子没有具体设置共享组
 
 -  
一个作业的并行度如何确定?
- 作业的并行度由当前作业中并行度最大的算子的并行度决定
 - 一个作业需要多少个TaskSlot如何确定?
 - 作业需要多少个taskSlot由作业的并行度决定(前提是slot共享)
 
 
Yarn应用模式作业提交流程

- 客户端提交任务,Yarn的ResourceManager启动AM
 - AM中的Actor通信系统 
- 启动资源管理器
 - 启动分发器 
- 分发器启动JobMaster
 
 
 - JobMaster 
- 生成逻辑流图
 - 生成作业流图
 - 生成执行流图
 - 向资源管理器 注册请求Slot
 
 - 资源管理器向Yarn的Resource manager申请资源
 - Resource Manager启动TaskManager
 - TaskManager向AM中的资源管理器注册需要的Slot
 - AM的资源管理器分配slot给TaskManager
 - JobMaster获取目前TaskManager现有的Slot个数
 - JobMaster分配任务给各个TaskManager,各个TaskManager生成相应的物理流图并执行。
 
