首页
BOB网页客户端
BOB体育官网登陆
BOB注册首页

BOB体育官网登陆

你的位置:BOB(中国)官方入口-BOB投注网页版 > BOB体育官网登陆 > BOB体育官网登陆 Flink实走流程与源码分析

BOB体育官网登陆 Flink实走流程与源码分析

发布日期:2021-10-08 23:57    点击次数:79

BOB体育官网登陆

本文转载自微信公多号「大数据旁边手」,作者王了个博。转载本文请有关大数据旁边手公多号。

BOB体育官网登陆Flink主要组件 BOB体育官网登陆

BOB体育官网登陆作业管理器 BOB体育官网登陆

控制一个行使程序实走的主进程,也就是说,每个行使程序都会被一个差别的Jobmanager所控制实走

BOB体育官网登陆

和打包了一切的类、库和其它资源的JAR包。

BOB体育官网登陆

的和谐。

BOB体育官网登陆义务管理器 BOB体育官网登陆

。插槽的数目限定了Taskmanageri能够实走的义务数目。

BOB体育官网登陆

实走了。

BOB体育官网登陆

在实走过程中,一个Taskmanagera能够跟其它运走联相符行使程序的Taskmanager交换数据。

BOB体育官网登陆资源管理器 BOB体育官网登陆

Taskmanger插槽是Flink中定义的处理资源单元。

BOB体育官网登陆

Flink为差别的环境和资源管理工具挑供了差别资源管理器,比如YARNMesos、K8s,以及standalone安放。

BOB体育官网登陆

当Jobmanager申请插槽资源时,Resourcemanager会将有余暇插槽的Taskmanager?分配给Jobmanager。倘若Resourcemanagery异国有余的插槽已足Jobmanager的乞求,它还能够向资源挑供平台发首会话,以挑供启动Taskmanager进程的容器。

BOB体育官网登陆分发器 BOB体育官网登陆

能够跨作业运走,它为行使挑交挑供了REST接口。

BOB体育官网登陆

当一个行使被挑交实走时,分发器就会启动并将行使移交给Jobmanage

BOB体育官网登陆

Dispatcher他会启动一个WebUi,用方便地展现和监控作业实走的新闻。

BOB体育官网登陆义务挑交流程 BOB体育官网登陆

BOB体育官网登陆 BOB体育官网登陆挑交行使 BOB体育官网登陆启动并挑交行使 BOB体育官网登陆乞求slots BOB体育官网登陆义务启动 BOB体育官网登陆注册slots BOB体育官网登陆发出挑供slot的指令 BOB体育官网登陆挑供slots BOB体育官网登陆挑交要在slots中实走的义务 BOB体育官网登陆交换数据 BOB体育官网登陆 BOB体育官网登陆义务挑交流程 BOB体育官网登陆

BOB体育官网登陆

a.Flink义务挑交后,Client向HDFS上传Flink的Jar包和配置

BOB体育官网登陆

b.随后向YarnResourceManager挑交义务ResourceManager分配Container资源并知照对答的NodeManager启动

BOB体育官网登陆

c.ApplicationMaster,ApplicationMaster启动后添载Flink的Jar包和配置构建环境

BOB体育官网登陆

d.然后启动JobManager,之后ApplicationMaster向ResourceManager申请资源启动TaskManager

BOB体育官网登陆

e.ResourceManager分配Container资源后,由ApplicationMaster知照资源所在节点的NodeManager启动TaskManager

BOB体育官网登陆

f.NodeManager添载Flink的Jar包和配置构建环境并启动TaskManager

BOB体育官网登陆

g.TaskManager启动后向JobManager发送心跳包,并期待JobManager向其分配义务。

BOB体育官网登陆源码分析--集群启动JobManager启动分析 BOB体育官网登陆JobManager的内部包含专门主要的三大组件 BOB体育官网登陆 BOB体育官网登陆WebMonitorEndpoint BOB体育官网登陆ResourceManager BOB体育官网登陆Dispatcher BOB体育官网登陆 BOB体育官网登陆入口,启动主类:StandaloneSessionClusterEntrypoint BOB体育官网登陆
// 入 口 StandaloneSessionClusterEntrypoint.main 
BOB体育官网登陆1.initializeServices:初首化各栽服务 BOB体育官网登陆
// 初 首 化 和 启 动 AkkaRpcService, 内 部 其 实 包 装 了 一 个 ActorSystem commonRpcService = AkkaRpcServiceUtils.createRemoteRpcService 
BOB体育官网登陆2.createDispatcherResourceManagerComponentFactory初首化了多组件的工厂实例 BOB体育官网登陆
1、DispatcherRunnerFactory,默认实现:DefaultDispatcherRunnerFactory   2、ResourceManagerFactory,默认实现:StandaloneResourceManagerFactory   3、RestEndpointFactory,默认实现:SessionRestEndpointFactory  clusterComponent = dispatcherResourceManagerComponentFactory     .create; 
BOB体育官网登陆3.创建WebMonitorEndpoint BOB体育官网登陆
/*************************************************   *  创建 WebMonitorEndpoint 实例, 在 Standalone 模式下:DispatcherRestEndpoint   *  1、restEndpointFactory = SessionRestEndpointFactory   *  2、webMonitorEndpoint = DispatcherRestEndpoint   *  3、highAvailabilityServices.getClusterRestEndpointLeaderElectionService; 
BOB体育官网登陆4.创建resourceManager BOB体育官网登陆
/*************************************************  *  创建 StandaloneResourceManager 实例对象  *  1、resourceManager = StandaloneResourceManager  *  2、resourceManagerFactory = StandaloneResourceManagerFactory */ resourceManager = resourceManagerFactory.createResourceManager; 
BOB体育官网登陆
protected ResourceManager<ResourceID> createResourceManager;   }   
BOB体育官网登陆
/** requestSlot; 
BOB体育官网登陆
protected RpcEndpoint; 
BOB体育官网登陆5.在创建resourceManager同级:启动义务授与器StartingDispatcher BOB体育官网登陆
/*************************************************   *  创建 并启动 Dispatcher  *  1、dispatcherRunner = DispatcherRunnerLeaderElectionLifecycleManager  *  2、dispatcherRunnerFactory = DefaultDispatcherRunnerFactory  *  第一个参数:ZooKeeperLeaderElectionService  *  -  *  老版本: 这个地方是直接创建一个 Dispatcher 对象然后调用 dispatcher.start; 
BOB体育官网登陆

Dispatcher启动后,将会期待义务挑交,倘若有义务挑交,则会经过submitJob函数进入后续处理。

BOB体育官网登陆挑交 BOB体育官网登陆

BOB体育官网登陆最先望下一些名词 BOB体育官网登陆

StreamGraph

BOB体育官网登陆

是按照用户议定StreamAPI写的代码生成的最初的图。用外示程序的拓扑组织。能够用一个DAG外示),DAG的顶点是StreamNode,边是StreamEdge,边包含了由哪个StreamNode倚赖哪个StreamNode。

BOB体育官网登陆 BOB体育官网登陆StreamNode:用代外operator的类,并具有一切有关的属性,如并发度、入边和出边等。 BOB体育官网登陆StreamEdge:外示连接两个StreamNode的边。 BOB体育官网登陆 BOB体育官网登陆

BOB体育官网登陆

DataStream上常见的transformation有map、flatmap、filter等。这些transformation会组织出一棵StreamTransformation树,议定这棵树转换成StreamGraph

BOB体育官网登陆

以map手段为例BOB体育官网登陆,望望源码

BOB体育官网登陆
public <R> SingleOutputStreamOperator<R> map;    return returnStream; } 
BOB体育官网登陆

map转换将用户自定义的函数MapFunction包装到StreamMap这个Operator中,再将StreamMap包装到OneInputTransformation,末了该transformation存到env中,当调用env.execute时,BOB体育官网登陆遍历其中的transformation荟萃组织出StreamGraph

BOB体育官网登陆

JobGraph

BOB体育官网登陆

StreamGraph经过优化后生成了JobGraph挑交给JobManager的数据组织。主要的优化为将多个相符条件的节点chain在一首行为一个节点。

BOB体育官网登陆

BOB体育官网登陆 BOB体育官网登陆将并不涉及到shuffle的算子进走相符并。 BOB体育官网登陆对于联相符个operatorchain内里的多个算子会在联相符个task中实走。 BOB体育官网登陆对于不在联相符个operatorchain里的算子会在差别的task中实走。 BOB体育官网登陆 BOB体育官网登陆

构成的DAG图。

BOB体育官网登陆

JobGraph定义作业级别的配置而每个顶点和中心效果定义详细操作和中心数据的竖立。

BOB体育官网登陆

JobVertex

BOB体育官网登陆

JobVertex相等所以JobGraph的顶点。经过优化后相符条件的多个StreamNode能够会chain在一首生成一个JobVertex即一个JobVertex包含一个或多个operatorJobVertex的输入是JobEdge输出是IntermediateDataSet。

BOB体育官网登陆

IntermediateDataSet

BOB体育官网登陆

JobVertex的输出即经过operator处理产生的数据集。

BOB体育官网登陆

JobEdge

BOB体育官网登陆

jobgraph中的一条数据传输通道。source是IntermediateDataSetsink是JobVertex。即数据议定JobEdge由IntermediateDataSet传递给现在的JobVertex。

BOB体育官网登陆

最先是议定API会生成transformations议定transformations会生成StreamGraph。

BOB体育官网登陆

将StreamGraph的某些StreamNodeChain在一首生成JobGraph前两步转换都是在客户端完善。

BOB体育官网登陆

末了会将JobGraph转换为ExecutionGraph相比JobGraph会增补并走度的概念这一步是在Jobmanager里完善。

BOB体育官网登陆

BOB体育官网登陆

ExecutionJobVertex

BOB体育官网登陆

ExecutionJobVertex逐一对答JobGraph中的JobVertex

BOB体育官网登陆

ExecutionVertex

BOB体育官网登陆

一个ExecutionJobVertex对答n个ExecutionVertex其中n就是算子的并走度。ExecutionVertex就是并走义务的一个子义务

BOB体育官网登陆

Execution

BOB体育官网登陆

Execution是对ExecutionVertex的一次实走议定ExecutionAttemptId唯一标识。

BOB体育官网登陆

IntermediateResult

BOB体育官网登陆

在JobGraph中用IntermediateDataSet外示JobVertex的对外输出一个JobGraph能够有n个创造者每个创造者的在响答的IntermediateResult上的输出对答一个IntermediateResultPartition。IntermediateResultPartition外示的是ExecutionVertex的一个输出分区

BOB体育官网登陆

ExecutionEdge

BOB体育官网登陆

ExecutionEdge外示ExecutionVertex的输入议定ExecutionEdge将ExecutionVertex和IntermediateResultPartition连接首进而在差别的ExecutionVertex之间竖立有关。

BOB体育官网登陆

ExecutionGraph的构建

BOB体育官网登陆 BOB体育官网登陆构建JobInformation BOB体育官网登陆构建ExecutionGraph BOB体育官网登陆将JobGraph进走拓扑排序获取sortedTopology顶点荟萃 BOB体育官网登陆 BOB体育官网登陆
// ExecutionGraphBuilder  public static ExecutionGraph buildGraph;    return executionGraph;  } 
BOB体育官网登陆

构建ExecutionJobVertex连接IntermediateResultPartition和ExecutionVertex

BOB体育官网登陆
//ExecutionGraph  public void attachJobGraph;    }   }  } 
BOB体育官网登陆

拆分计划

BOB体育官网登陆
// ExecutionVertex  public void connectSource;   }    return edges;  } 
BOB体育官网登陆

BOB体育官网登陆

返回ExecutionGraph

BOB体育官网登陆TaskManager BOB体育官网登陆

TaskManager启动

BOB体育官网登陆
public static void runTaskManager; } 
BOB体育官网登陆

TaskExecutor:submitTask

BOB体育官网登陆

接着的主要函数是shumitTask。

BOB体育官网登陆
public CompletableFuture<Acknowledge> submitTask;    }  
BOB体育官网登陆

末了创建实走Task的线程然后调用startTaskThread手段承载了被实走的核心逻辑。

BOB体育官网登陆

Task是实走在TaskExecutor进程里的一个线程下面望望其run手段

BOB体育官网登陆

检测现在状态平常情况为CREATED倘若是FAILED或CANCELING直接返回其余状态将抛变态。

BOB体育官网登陆

读取DistributedCache文件。

BOB体育官网登陆

启动ResultPartitionWriter和InputGate。

BOB体育官网登陆

向taskEventDispatcher注册partitionWriter。

BOB体育官网登陆

按照nameOfInvokableClass添载对答的类并实例化。

BOB体育官网登陆

将状态置为RUNNING并实走invoke手段。

BOB体育官网登陆
public void run; 
BOB体育官网登陆总结 BOB体育官网登陆

团体的流程与架构能够三两张图或者言简意赅就能够勾勒出画面但是背后源码的实现是艰辛的。源码的复杂度和当初设计框架的抓狂感吾们只有想象。现在吾们只是站在巨人的肩膀上往学习。

BOB体育官网登陆

本篇的主题是"Flink架构与实走流程"做下幼结FlinkonYarn的挑交实走流程:

BOB体育官网登陆

1Flink义务挑交后Client向HDFS上传Flink的Jar包和配置。

BOB体育官网登陆

2向YarnResourceManager挑交义务。

BOB体育官网登陆

3ResourceManager分配Container资源并知照对答的NodeManager启动ApplicationMaster。

BOB体育官网登陆

4ApplicationMaster启动后添载Flink的Jar包和配置构建环境。

BOB体育官网登陆

5启动JobManager之后ApplicationMaster向ResourceManager申请资源启动TaskManager。

BOB体育官网登陆

6ResourceManager分配Container资源后由ApplicationMaster知照资源所在节点的NodeManager启动TaskManager。

BOB体育官网登陆

7NodeManager添载Flink的Jar包和配置构建环境并启动TaskManager。

BOB体育官网登陆

8TaskManager启动后向JobManager发送心跳包并期待JobManager向其分配义务。

BOB体育官网登陆

BOB体育官网登陆 BOB体育官网登陆 BOB体育官网登陆物联网炎潮引发了主要的坦然题目 BOB体育官网登陆为什么物联网坦然在当今这样主要? BOB体育官网登陆微步在线OneDNS助力地产走业网络坦然 BOB体育官网登陆如何行使生物识别技术添强智能家居坦然 BOB体育官网登陆医疗走业网络坦然市场未五年将高速添长 BOB体育官网登陆 BOB体育官网登陆 BOB体育官网登陆

Powered by BOB(中国)官方入口-BOB投注网页版 @2013-2021 RSS地图 HTML地图