【Flink】基础二、本地与远程启动
一、本地模式下的excute
根据代码生成streamGraph,再生成jobGraph,发送给Flink生成task,将JobGraph和配置交给flink集群去运行,启动任务。
二、远程模式下excute
第一步仍然是获取StreamGraph,然后调用executeRemotely方法进行远程执行。client生成jobGarph,交个jobClient,与JobManage通过atcor通讯。
三、本地启动
minicluster,调用submitJob方法
到dispatcher接受job之后,启动一个jobmanageRunner,启动job,再交给jobMaster去处理,使用executionGraph启动整个执行图,任务就启动了。
四、三层图结构
最后的物理执行图并非flink的数据结构,而是程序开始执行后,各个task分布在不同的节点上,所形成的物理上的关系。
StreamGraph和JobGraph,还有一种是ExecutionGraph,是用于调度的基本数据结构。
五、operator chain
多个操作算子放在一个线程执行,减少线程切换,减少消息的序列化/反序列化,减少数据在缓冲区的交换,减少了延迟的同时提高整体的吞吐量
六、jobGraph
JobManager的actor接收到来自client端的请求后,会执行一个submitJob方法,主要做以下事情:
- 向BlobLibraryCacheManager注册该Job;
- 构建ExecutionGraph对象;
- 对JobGraph中的每个顶点进行初始化;
- 将DAG拓扑中从source开始排序,排序后的顶点集合附加到Exec> - utionGraph对象;
- 获取检查点相关的配置,并将其设置到ExecutionGraph对象;
- 向ExecutionGraph注册相关的listener;
- 执行恢复操作或者将JobGraph信息写入SubmittedJobGraphStore以在后续用于恢复目的;
- 响应给客户端JobSubmitSuccess消息;
- 对ExecutionGraph对象进行调度执行;
最后,JobManger会返回消息给JobClient,通知该任务是否提交成功。
七、ExecutionGraph
在jobmanage端生成,只是改动了JobGraph的每个节点
八、任务调度
Flink 集群启动后,首先会启动一个 JobManger 和多个的 TaskManager。JobManager 再把来自不同用户的任务发给 不同的TaskManager 去执行,每个TaskManager管理着多个task,task是执行计算的最小结构。TaskManager 之间以流的形式进行数据的传输。TaskManager和job并非一一对应的关系。flink调度的最小单元是task而非TaskManager,也就是说,来自不同job的不同task可能运行于同一个TaskManager的不同线程上。
Task slot是一个TaskManager内资源分配的最小载体,每个TaskManager会将其所占有的资源平分给它的slot。每个 TaskManager 有一个slot,也就意味着每个task运行在独立的 JVM 中。每个 TaskManager 有多个slot的话,也就是说多个task运行在同一个JVM中。同一个JVM进程中的task,可以共享TCP连接(基于多路复用)和心跳消息,可以减少数据的网络传输,也能共享一些数据结构,一定程度上减少了每个task的消耗。每个slot可以接受单个task,也可以接受多个连续task组成的pipeline。
为了达到共用slot的目的,除了可以以chain的方式pipeline算子,我们还可以允许SlotSharingGroup。
可以把不能被chain成一条的两个操作如flatmap和key&sink放在一个TaskSlot里执行,这样做可以获得以下好处:
- 共用slot使得我们不再需要计算每个任务需要的总task数目,直接取最高算子的并行度即可
- 对计算资源的利用率更高。例如,通常的轻量级操作map和重量级操作Aggregate不再分别需要一个线程,而是可以在同一个线程内执行,而且对于slot有限的场景,我们可以增大每个task的并行度了。 接下来我们还是用官网的图来说明flink是如何重用slot的:
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号