网站推广的表现方式福州关键词排名
Flink运行时架构
-  
JobManager:协调,决定何时调度下一个task,对失败任务做恢复。
- ResourceManager: 负责Flink集群中的资源提供、回收、分配,它负责管理task slot。standalone模式下,不能自行启动新的taskmanager
 - Dispatcher 
- 提供一个REST接口,用来提交Flink应用程序执行
 - 为每个提交的作业启动一个新的jobMaster
-运行Flink Web UI 
 - JobMaster: 负责管理单个JobGraph的执行,我们的代码Flink并不能直接执行,需要翻译为JobGraph才能执行。
 
 -  
TaskManger: 必须有一个
- taskManaer和taskManager之间有数据交流
 
 

核心概念
- 并行度 
-  
并发:多个任务,资源只有一份,需要竞争执行
 -  
并行:多个任务,资源有多份,可以同时执行
 -  
并行度:一个作业并行执行的程序(数量)
 -  
设置并行度
- 1.代码中设置全局并行度 :env.setParallelism(1);
 - 2.在idea中执行,,如果没有明确设置并行,默认为CPU核数
 - 3.在代码中设置算子并行度,map().setParallelism()
 - 4.不建议在代码中设置并行度,一般在提交作业到集群时指定并行度 bin/flink -p 并行度
 - 5.提交作业到集群,如果没有设置和代码中都没有设置,使用集群配置的并行度,一般为1
 
 -  
优先级:算子并行 > 全局并行度 > shell命令 > 配置文件
 
 -  
 - 算子链 
- 上下游算子数据分发规则(数据分区规则):ChannelSelector 
- RebalancePartitioner: 轮循方式,上下游并行度不一致时,默认是rebalance
 - RescalePartitioiiner: 相对负载均衡,按照轮循的方式将数据发送到下游组内Task的每个并行度中
 - ShufflePartitioner: 洗牌,按照随机的方式发送到下游Task的每个并行度中
 - BroadcastPartioner: 广播,根据下游并行度个数,每个发一份
 - GlobalPartitioner: 全局,所有的数据之后发送到下游task的第一个并行度中,强制并行度为1
 - KeyGroupStreamPartioner: keyBy的效果,按照key的hash值决定发往下游的哪个并行度中
 - ForwardPartitioner: 直连,上下游并行度一致。上游的并行度对应下游的并行度进行发送,如果上下游并行度一致,默认就是forward
 
 - 算子链: 将上下游的多个Task合并成一个大的Task,形成的链条就是算子链
 - 合并算子链: 
- 1.上下游并行度必须一样
 - 2.数据的分发规则是forward
 
 - 合并算子链的作用:减少线程间的切换,缓冲的开销,并且减少延迟的同时增加整体吞吐量
 - 能不能不合并?能 
- 1.全局禁用算子链合并 env.disableOperatorChaining()
 - 2.针对算子设置,startNewChain(): 开启新的算子链,从当前算子开始,与后面的进行合并disableNewChain():前面和后面不参与算子链合并
 
 
 - 上下游算子数据分发规则(数据分区规则):ChannelSelector 
 
