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

flink1.10版local模式提交job流程分析的更多相关文章

  1. spark 启动job的流程分析

    从WordCount開始分析 编写一个样例程序 编写一个从HDFS中读取并计算wordcount的样例程序: packageorg.apache.spark.examples importorg.ap ...

  2. Flink(一)【基础入门,Yarn、Local模式】

    目录 一.介绍 Spark | Flink 二.快速入门:WC案例 pom依赖 批处理 流处理 有界流 无界流(重要) 三.Yarn模式部署 安装 打包测试,命令行(无界流) Flink on Yar ...

  3. 如何注册Uber司机,加入uber(全国版最新最详细注册流程)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://www.cnblogs.com/mfry ...

  4. 如何注册Uber司机(全国版最新最详细注册流程)

    滴快车单单2.5倍,注册地址:http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单:http://didi-uber.com/archiv ...

  5. Flink-1.10.0中的readTextFile解读

    Flink-1.10.0中的readTextFile解读 最近在学习Flink,研究了一些东西,在准备自定义一个简单的监听文件的source作为练手的时候,遇到了一个问题.就是应该如何在自己的sour ...

  6. 简易版CMS后台管理系统开发流程

    目录 简易版CMS后台管理系统开发流程 MVC5+EF6 简易版CMS(非接口) 第一章:新建项目 MVC5+EF6 简易版CMS(非接口) 第二章:建数据模型 MVC5+EF6 简易版CMS(非接口 ...

  7. 【原】Storm Local模式和生产环境中Topology运行配置

    Storm入门教程 1. Storm基础 Storm Storm主要特点 Storm基本概念 Storm调度器 Storm配置 Guaranteeing Message Processing(消息处理 ...

  8. spark各种模式提交任务介绍

    前言 本文章部分内容翻译自: http://spark.apache.org/docs/latest/submitting-applications.html 应用提交 Spark的bin目录中的sp ...

  9. 004 Spark中的local模式的配置以及测试

    一:介绍 1.Spark的模式 Local:本地运行模式,主要用于开发.测试 Standalone:使用Spark自带的资源管理框架运行Spark程序,30%左右 Yarn: 将spark应用程序运行 ...

随机推荐

  1. docker-搭建 kafka+zookeeper集群

    拉取容器           docker pull wurstmeister/zookeeper           docker pull wurstmeister/kafka     这里演示使 ...

  2. spring boot:swagger3文档展示分页和分栏的列表数据(swagger 3.0.0 / spring boot 2.3.3)

    一,什么情况下需要展示分页和分栏的数据的文档? 分页时,页面上展示的是同一类型的列表的数据,如图: 分栏时,每行都是一个列表,而且展示的数据类型也可能不同 这也是两种常用的数据返回形式 说明:刘宏缔的 ...

  3. 面试官:为什么MySQL的索引要使用B+树,而不是其它树?比如B树?

    InnoDB的一棵B+树可以存放多少行数据? 答案:约2千万 为什么是这么多? 因为这是可以算出来的,要搞清楚这个问题,先从InnoDB索引数据结构.数据组织方式说起. 计算机在存储数据的时候,有最小 ...

  4. 浅谈NLP 文本分类/情感分析 任务中的文本预处理工作

    目录 浅谈NLP 文本分类/情感分析 任务中的文本预处理工作 前言 NLP相关的文本预处理 浅谈NLP 文本分类/情感分析 任务中的文本预处理工作 前言 之所以心血来潮想写这篇博客,是因为最近在关注N ...

  5. json expected name at 1 1

    问题1:导入新的java项目,报expected name at 1:1错误. 解决方法:勾选Derived复选框.

  6. 【Python 1-0】10个学习Python的理由以及Python的优势有哪些?

    Python的由来 首发地址 Python的创始人是吉多·范罗苏姆,1989年他在阿姆斯特丹的CWI工作,圣诞节期间,吉多·范罗苏姆为了打发圣诞节的无聊,决定开发一个新的脚本解释程序,作为ABC 语言 ...

  7. python定义函数后跟->的意义

    举例 def xxx(x)  后面跟着一个->数据类型 比如->int:(别忘了冒号) 作用很简单 挺流氓的 直接让函数返回值为这个类型 非常方(liu)便(mang)

  8. 模型评价指标:AUC

    参考链接:https://www.iteye.com/blog/lps-683-2387643 问题: AUC是什么 AUC能拿来干什么 AUC如何求解(深入理解AUC) AUC是什么 混淆矩阵(Co ...

  9. Cocos2d-x extensions库使用问题解决方法

    需要在加入头文件#include "cocos-ext.h" 1>e:\cocos\cocos2d-x\cocos2d-x-3.10\extensions\gui\cccon ...

  10. Tarjan缩点入门

    缩点 顾名思义,缩点就是把一个强连通分量缩成一个点 Tarjan 在dfs的过程中记录时间戳,若能够通过某个点返回已遍历的点,则可以缩点 inline void Tarjan(int x)// st栈 ...