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流程分析
相關文章
- mapreduce job提交流程原始碼級分析(三)原始碼
- mapreduce job提交流程原始碼級分析(二)(原創)原始碼
- yarn-per-job提交流程Yarn
- job提交的原始碼分析原始碼
- Spark job分配流程原始碼分析Spark原始碼
- Spark3.0YarnCluster模式任務提交流程原始碼分析SparkYarn模式原始碼
- Mapreduce Job提交流程原始碼和切片原始碼詳解原始碼
- 第一個application WordCount,各種任務提交模式(local,yarn,standalone)APP模式Yarn
- flink1.10版本StreamGraph生成過程分析
- Spark on Yarn 任務提交流程原始碼分析SparkYarn原始碼
- Spark開發-Local模式Spark模式
- spark-submit提交任務時執行流程(簡單版)SparkMIT
- spark核心(下)——job任務提交原始碼解析Spark原始碼
- 【原始碼分析】XXL-JOB的執行器的註冊流程原始碼
- eclipse Java Spark local模式EclipseJavaSpark模式
- Flink提交Job的方式以及引數設定
- Hadoop MapReduce Job提交後的互動日誌Hadoop
- hadoop3.1.3 local 模式配置Hadoop模式
- MySQL事務提交流程概述MySql
- OpenStack提交程式碼的review流程View
- Job不能執行原因分析
- qmail-local程式碼分析(轉)AI
- hadoop window 遠端提交job到叢集並執行Hadoop
- git提交程式碼託管平臺流程Git
- git 常用命令及提交流程Git
- Oracle JOB異常中斷原因分析Oracle
- iOS APP上架被拒重新提交稽核流程iOSAPP
- Fescar - RM 全域性事務提交回滾流程
- printk 流程分析
- printk流程分析
- Python程式碼解析: job = next(job for job in jobs if job.job_id == job_id)Python
- elastic-job-lite 資料結構分析AST資料結構
- xcode APP 打包以及提交apple稽核詳細流程(新版本更新提交稽核)XCodeAPP
- xxl-job之實現流程任務編排思路
- Flutter setState流程分析Flutter
- Lifecycle 流程分析
- View draw流程分析View
- ORACLE程式之LOCAL=NO和LOCAL=YESOracle