您的位置:首页 > 其它

flink1.10版local模式提交job流程分析

2020-11-19 20:49 267 查看

1、WordCount程序实例

2、本地监听9000端口后测试结果

3、job提交流程

4、local模式执行StreamGraph任务

5、流程分析
flink job提交流程个人理解可以大致分为定义和提交两个环节:以下以WordCount程序为例进行分析
5.1 定义流程
流程定义包含执行环境构建和算法流程定义:
5.1.1 执行环境构建
执行环境是整个flink程序执行的上下文,记录其相关配置,并提供一系列方法,如读取输入流等,同时提供execute真正开启提交计算的入口。

下面具体来看getExecutionEnvironment方法

本地运行时,其实执行的是createStreamExecutionEnvironment方法

继续往下看发现不断重载createLocalEnvironment方法,最终new了一个LocalStreamEnvironment对象,并设置其并行度等于当前机器的CPU核心数

至此执行环境构建完毕,返回一个LocalStreamEnvironment对象

5.1.2 算法流程定义
算法流程简单来说通常包含三个部分:定义source、operator和sink,对应到示例程序为socketTextStream、(flatMap、keyBy、sum)和print三部分
首先:socketTextStream其本质是向执行环境中添加了SocketTextStreamFunction作为source


其次:faltMap、keyBy和sum其本质是向执行环境中添加FlatMapFunction、KeySelector和AggregationFunction三种算子




下面分别为keyBy和sum的关键细节



最后:print其本质是向执行环境中添加PrintSinkFunction作为sink

5.2 提交任务
提交任务个人理解又包含client提交作业和Executor提交作业两部分
5.2.1 第一个环节client根据流程定义提交作业如job提交流程图所示
这个过程其实又可以可以分为两部分:生成StreamGraph和executeAsync两部分:
首先看生成StreamGraph部分,这一部分比较简单,将执行环境中定义好的流程参数构建出StreamGraph即可,核心细节如下:


executeAsync部分其实就是加载一个PipelineExecutor提交StreamGraph,细节如下:


5.2.2 第二个环节Executor提交作业部分源码如下:

本地模式主要包含了以下环节:
1> 由StreamGraph生成JobGraph
2> 创建启动miniCluster集群,启动JobMaster等等
3> 提交任务到JobMaster

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: