flink1.10版local模式提交job流程分析
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
最新文章
- Mininet在创建拓扑的过程中为什么不打印信息了——了解Mininet的log系统
- Jetty应用服务器的安装详解
- 启动Eclipse弹出:Failed to load JavaHL Library 错误框的解决办法
- September 3rd 2016 Week 36th Saturday
- JAVA基础知识之JDBC——ResultSet的滚动和更新(statement的额外参数)
- dubbo 转
- iOS 瀑布流的基本原理
- MockMultipartFile
- 换成gnome3桌面后国际版qq不能输入中文问题
- 本地数据jqGrid分页
- Spark集群搭建_YARN
- HttpUtility.UrlEncode()关于空格的编码问题
- Premiere Pro 中的键盘快捷键
- C#在SharePoint文档库下动态新增文件夹
- java实现满天星swing&;awt
- BZOJ.3926.[ZJOI2015]诸神眷顾的幻想乡(广义后缀自动机)
- CentOS 7 快速部署 ELK
- UVA 11881 - Internal Rate of Return - [二分]
- Qt ------- QMap和QHash的区别
- 项目搭建系列之三:SpringMVC框架下使用Ehcache对象、数据缓存