精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Flink 原理與實現:架構和拓撲概覽

移動開發 開發
我們關心的問題是:系統部署成功后各個節點都啟動了哪些服務,各個服務之間又是怎么交互和協調的。

要了解一個系統,一般都是從架構開始。我們關心的問題是:系統部署成功后各個節點都啟動了哪些服務,各個服務之間又是怎么交互和協調的。下方是 Flink 集群啟動后架構圖。

 

Flink 集群啟動后架構圖

當 Flink 集群啟動后,首先會啟動一個 JobManger 和一個或多個的 TaskManager。由 Client 提交任務給 JobManager,JobManager 再調度任務到各個 TaskManager 去執行,然后 TaskManager 將心跳和統計信息匯報給 JobManager。TaskManager 之間以流的形式進行數據的傳輸。上述三者均為獨立的 JVM 進程。

  • Client 為提交 Job 的客戶端,可以是運行在任何機器上(與 JobManager 環境連通即可)。提交 Job 后,Client 可以結束進程(Streaming的任務),也可以不結束并等待結果返回。
  • JobManager 主要負責調度 Job 并協調 Task 做 checkpoint,職責上很像 Storm 的 Nimbus。從 Client 處接收到 Job 和 JAR 包等資源后,會生成優化后的執行計劃,并以 Task 的單元調度到各個 TaskManager 去執行。
  • TaskManager 在啟動的時候就設置好了槽位數(Slot),每個 slot 能啟動一個 Task,Task 為線程。從 JobManager 處接收需要部署的 Task,部署啟動后,與自己的上游建立 Netty 連接,接收數據并處理。

可以看到 Flink 的任務調度是多線程模型,并且不同Job/Task混合在一個 TaskManager 進程中。雖然這種方式可以有效提高 CPU 利用率,但是個人不太喜歡這種設計,因為不僅缺乏資源隔離機制,同時也不方便調試。類似 Storm 的進程模型,一個JVM 中只跑該 Job 的 Tasks 實際應用中更為合理。

Job 例子

本文所示例子為 flink-1.0.x 版本

我們使用 Flink 自帶的 examples 包中的 SocketTextStreamWordCount ,這是一個從 socket 流中統計單詞出現次數的例子。

  • 首先,使用 netcat 啟動本地服務器:

    $ nc -l 9000
    
  • 然后提交 Flink 程序

    $ bin/flink run examples/streaming/SocketTextStreamWordCount.jar \
     --hostname 10.218.130.9 \
     --port 9000
    

在netcat端輸入單詞并監控 taskmanager 的輸出可以看到單詞統計的結果。

SocketTextStreamWordCount 的具體代碼如下:

public static void main(String[] args) throws Exception{
 // 檢查輸入
 final ParameterTool params = ParameterTool.fromArgs(args);
 ...

 // set up the execution environment
 final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

 // get input data
 DataStream<String> text =
 env.socketTextStream(params.get("hostname"), params.getInt("port"), '\n', 0);

 DataStream<Tuple2<String, Integer>> counts =
 // split up the lines in pairs (2-tuples) containing: (word,1)
 text.flatMap(new Tokenizer())
 // group by the tuple field "0" and sum up tuple field "1"
 .keyBy(0)
 .sum(1);
 counts.print();
 
 // execute program
 env.execute("WordCount from SocketTextStream Example");
}

我們將***一行代碼 env.execute 替換成 System.out.println(env.getExecutionPlan()); 并在本地運行該代碼(并發度設為2),可以得到該拓撲的邏輯執行計劃圖的 JSON 串,將該 JSON 串粘貼到 http://flink.apache.org/visualizer/ 中,能可視化該執行圖。

但這并不是最終在 Flink 中運行的執行圖,只是一個表示拓撲節點關系的計劃圖,在 Flink 中對應了 SteramGraph。另外,提交拓撲后(并發度設為2)還能在 UI 中看到另一張執行計劃圖,如下所示,該圖對應了 Flink 中的 JobGraph。

Graph

看起來有點亂,怎么有這么多不一樣的圖。實際上,還有更多的圖。Flink 中的執行圖可以分成四層:StreamGraph -> JobGraph -> ExecutionGraph -> 物理執行圖。

  • StreamGraph: 是根據用戶通過 Stream API 編寫的代碼生成的最初的圖。用來表示程序的拓撲結構。
  • JobGraph: StreamGraph經過優化后生成了 JobGraph,提交給 JobManager 的數據結構。主要的優化為,將多個符合條件的節點 chain 在一起作為一個節點,這樣可以減少數據在節點之間流動所需要的序列化/反序列化/傳輸消耗。
  • ExecutionGraph: JobManager 根據 JobGraph 生成的分布式執行圖,是調度層最核心的數據結構。
  • 物理執行圖: JobManager 根據 ExecutionGraph 對 Job 進行調度后,在各個TaskManager 上部署 Task 后形成的“圖”,并不是一個具體的數據結構。

例如上文中的2個并發度(Source為1個并發度)的 SocketTextStreamWordCount 四層執行圖的演變過程如下圖所示(點擊查看大圖):

 

四層執行圖的演變過程

這里對一些名詞進行簡單的解釋。

  • StreamGraph:根據用戶通過 Stream API 編寫的代碼生成的最初的圖。

    • StreamNode:用來代表 operator 的類,并具有所有相關的屬性,如并發度、入邊和出邊等。
    • StreamEdge:表示連接兩個StreamNode的邊。
  • JobGraph:StreamGraph經過優化后生成了 JobGraph,提交給 JobManager 的數據結構。

    • JobVertex:經過優化后符合條件的多個StreamNode可能會chain在一起生成一個JobVertex,即一個JobVertex包含一個或多個operator,JobVertex的輸入是JobEdge,輸出是IntermediateDataSet。
    • IntermediateDataSet:表示JobVertex的輸出,即經過operator處理產生的數據集。producer是JobVertex,consumer是JobEdge。
    • JobEdge:代表了job graph中的一條數據傳輸通道。source 是 IntermediateDataSet,target 是 JobVertex。即數據通過JobEdge由IntermediateDataSet傳遞給目標JobVertex。
  • ExecutionGraph:JobManager 根據 JobGraph 生成的分布式執行圖,是調度層最核心的數據結構。

    • ExecutionJobVertex:和JobGraph中的JobVertex一一對應。每一個ExecutionJobVertex都有和并發度一樣多的 ExecutionVertex。
    • ExecutionVertex:表示ExecutionJobVertex的其中一個并發子任務,輸入是ExecutionEdge,輸出是IntermediateResultPartition。
    • IntermediateResult:和JobGraph中的IntermediateDataSet一一對應。每一個IntermediateResult的IntermediateResultPartition個數等于該operator的并發度。
    • IntermediateResultPartition:表示ExecutionVertex的一個輸出分區,producer是ExecutionVertex,consumer是若干個ExecutionEdge。
    • ExecutionEdge:表示ExecutionVertex的輸入,source是IntermediateResultPartition,target是ExecutionVertex。source和target都只能是一個。
    • Execution:是執行一個 ExecutionVertex 的一次嘗試。當發生故障或者數據需要重算的情況下 ExecutionVertex 可能會有多個 ExecutionAttemptID。一個 Execution 通過 ExecutionAttemptID 來唯一標識。JM和TM之間關于 task 的部署和 task status 的更新都是通過 ExecutionAttemptID 來確定消息接受者。
  • 物理執行圖:JobManager 根據 ExecutionGraph 對 Job 進行調度后,在各個TaskManager 上部署 Task 后形成的“圖”,并不是一個具體的數據結構。

    • Task:Execution被調度后在分配的 TaskManager 中啟動對應的 Task。Task 包裹了具有用戶執行邏輯的 operator。
    • ResultPartition:代表由一個Task的生成的數據,和ExecutionGraph中的IntermediateResultPartition一一對應。
    • ResultSubpartition:是ResultPartition的一個子分區。每個ResultPartition包含多個ResultSubpartition,其數目要由下游消費 Task 數和 DistributionPattern 來決定。
    • InputGate:代表Task的輸入封裝,和JobGraph中JobEdge一一對應。每個InputGate消費了一個或多個的ResultPartition。
    • InputChannel:每個InputGate會包含一個以上的InputChannel,和ExecutionGraph中的ExecutionEdge一一對應,也和ResultSubpartition一對一地相連,即一個InputChannel接收一個ResultSubpartition的輸出。

那么 Flink 為什么要設計這4張圖呢,其目的是什么呢?Spark 中也有多張圖,數據依賴圖以及物理執行的DAG。其目的都是一樣的,就是解耦,每張圖各司其職,每張圖對應了 Job 不同的階段,更方便做該階段的事情。我們給出更完整的 Flink Graph 的層次圖。

 

 Flink Graph 的層次圖

首先我們看到,JobGraph 之上除了 StreamGraph 還有 OptimizedPlan。OptimizedPlan 是由 Batch API 轉換而來的。StreamGraph 是由 Stream API 轉換而來的。為什么 API 不直接轉換成 JobGraph?因為,Batch 和 Stream 的圖結構和優化方法有很大的區別,比如 Batch 有很多執行前的預分析用來優化圖的執行,而這種優化并不普適于 Stream,所以通過 OptimizedPlan 來做 Batch 的優化會更方便和清晰,也不會影響 Stream。JobGraph 的責任就是統一 Batch 和 Stream 的圖,用來描述清楚一個拓撲圖的結構,并且做了 chaining 的優化,chaining 是普適于 Batch 和 Stream 的,所以在這一層做掉。ExecutionGraph 的責任是方便調度和各個 tasks 狀態的監控和跟蹤,所以 ExecutionGraph 是并行化的 JobGraph。而“物理執行圖”就是最終分布式在各個機器上運行著的tasks了。所以可以看到,這種解耦方式極大地方便了我們在各個層所做的工作,各個層之間是相互隔離的。

責任編輯:張子龍 來源: 推酷
相關推薦

2021-03-04 09:00:00

架構Lambda工具

2018-11-09 10:09:38

RAC硬件軟件

2022-06-21 14:02:29

MongoDB數據庫存儲

2021-10-14 18:21:52

架構IstioService

2018-11-14 09:01:23

Apache FlinSQL代碼

2017-03-13 08:58:46

Spring Clou概覽架構

2025-08-04 06:05:00

RAG大型語言模型語言模型

2015-09-23 16:14:03

Ryu拓撲結構

2014-11-26 10:44:33

DockerOpenStack云計算

2024-10-30 10:06:51

2021-12-07 07:32:09

kafka架構原理

2022-09-24 09:05:16

關系型數據庫架構

2024-08-15 08:03:52

2017-05-16 15:33:42

Python網絡爬蟲核心技術框架

2021-07-12 09:17:54

Memory Comp系統內存

2015-09-25 09:56:37

負載均衡

2024-08-19 02:35:00

模型量化深度學習

2016-12-26 18:05:00

單點登錄原理簡單實現

2012-08-08 10:04:41

IBM但W

2017-07-26 14:50:37

前端模板
點贊
收藏

51CTO技術棧公眾號

一本大道综合伊人精品热热| 日本欧美一区二区三区| 亚洲第一网中文字幕| 免费国产黄色网址| 东凛在线观看| 国产成人免费视频一区| 欧美中文字幕视频| 亚洲综合视频网站| 欧美高清视频看片在线观看| 中国一级大黄大黄大色毛片| 欧美日韩理论片| 青青草原av在线| 182在线播放| 动漫视频在线一区| 一本一道综合狠狠老| 成人性生交大片免费看网站| 欧美日韩亚洲一区二区三区在线| 亚洲福利视频二区| 中文字幕第88页| 99爱在线视频| 中文字幕中文乱码欧美一区二区| 黄色91av| 国产日产亚洲系列最新| 国产中文字幕在线观看| 一区二区三区韩国免费中文网站| 欧美日韩免费视频| 亚洲熟妇av一区二区三区漫画| 3p在线观看| 91麻豆国产在线观看| 91青青草免费观看| 黄页网站在线| 久久精品视频在线看| 亚洲自拍高清视频网站| 波多野结衣mp4| 亚洲激情午夜| 久久99精品国产99久久6尤物| 加勒比一区二区| www.成人.com| 伊人久久大香线| 亚洲欧美国产日韩中文字幕| 日批视频免费看| 国产色99精品9i| 欧美喷水一区二区| 中文字幕天天干| 国产欧美精品va在线观看| 在线播放av中文字幕| 欧美理论影院| 欧美日韩免费看| 国产一区二区四区| 亚洲小说区图片区都市| 中文字幕 日本| 黄色免费网站在线| 欧美极品xxx| 日本高清久久一区二区三区| 天天色棕合合合合合合合| 大尺度一区二区| 91亚色免费| 午夜美女福利视频| 国产成人午夜片在线观看高清观看| 国产在线日韩在线| 99国产精品一区二区三区| 激情综合亚洲精品| 91亚洲人电影| 亚洲成人77777| 成人黄页毛片网站| 国产中文一区二区| 免费毛片在线| 国产精品久久久久久久浪潮网站| 中文视频一区视频二区视频三区| av网址在线看| 亚洲一二三四久久| 国产h视频在线播放| 成人一区二区三区四区| 91看片在线免费观看| 成人自拍av| 欧美在线高清视频| 三上悠亚在线一区| 精品国产伦一区二区三区观看说明 | 亚洲综合视频在线| 俄罗斯av网站| 99久久亚洲国产日韩美女| 欧美精品亚洲二区| 精品影片一区二区入口| 成人女性视频| 欧美成人亚洲成人日韩成人| 日本视频www| 日本va欧美va精品| 粉嫩av四季av绯色av第一区| 国产在线观看网站| 亚洲人成在线播放网站岛国| 少妇高潮毛片色欲ava片| 成人免费av电影| 91精品国产欧美一区二区成人| 污污污www精品国产网站| 精品av一区二区| 欧美激情18p| 青娱乐在线免费视频| 国产精品乡下勾搭老头1| 久久人人九九| 国产网友自拍视频导航网站在线观看 | 精品日韩一区二区| 黄色片网站免费| 国产精品sm| 国产精品第二页| 亚洲欧美强伦一区二区| 欧美国产欧美亚州国产日韩mv天天看完整| 免费观看国产视频在线| 三上悠亚激情av一区二区三区| 日韩欧美一级特黄在线播放| 妺妺窝人体色WWW精品| 精久久久久久| 91亚洲va在线va天堂va国| 免费人成黄页在线观看忧物| 亚洲图片自拍偷拍| 污污视频网站在线| 国产成人一区| 久久男人的天堂| а√中文在线资源库| 国产精品久久久久久久浪潮网站 | 热re99久久精品国99热蜜月| 污视频网站在线免费| 欧美日韩免费一区二区三区视频| 人妻少妇一区二区| 1024精品一区二区三区| 7777奇米亚洲综合久久| 日本高清在线观看wwwww色| 91成人在线观看喷潮| 屁屁影院国产第一页| 欧美女人交a| 91蜜桃网站免费观看| 毛片在线播放a| 欧美亚洲一区二区三区四区| 日韩av在线看免费观看| 亚洲精选成人| 国产精品亚洲不卡a| 日本动漫理论片在线观看网站| 欧美精品一二三| 99久久精品久久亚洲精品| 日韩中文字幕一区二区三区| 欧洲一区二区日韩在线视频观看免费 | 亚洲精品99| 成人黄色av网站| 麻豆传媒视频在线观看免费| 欧美日韩视频在线一区二区| 丰满的亚洲女人毛茸茸| 奇米影视7777精品一区二区| 日本一区高清在线视频| 欧美日韩五码| 中文字幕亚洲在线| 在线观看毛片av| 国产精品女主播av| 182午夜在线观看| 国产精品99一区二区三| 亚洲jizzjizz日本少妇| 91精品国产91久久久久久青草| 欧美一区二区三区爱爱| 久久久久久蜜桃| fc2成人免费人成在线观看播放 | 亚洲国产小视频| 国产一级片毛片| 久久精品人人爽人人爽| 天堂av在线网站| 香蕉视频官网在线观看日本一区二区| 91精品视频一区| 日本三级在线观看网站| 亚洲成人黄色在线| 亚洲免费在线观看av| 久久久久久久久蜜桃| 亚洲黄色a v| 国产精品91一区二区三区| 999视频在线免费观看| 91老司机福利在线| 亚洲天堂av高清| 一二三四区在线| 亚洲综合区在线| 国产精品三级在线观看无码| 蜜桃视频一区二区| 成人在线观看毛片| 天天做夜夜做人人爱精品 | 欧美极品xxx| 日本黄色一级网站| 国产美女一区| 在线视频亚洲自拍| 青青草久久爱| 91精品国产自产在线老师啪| 美女精品导航| 亚洲深夜福利视频| www.国产欧美| 在线精品视频一区二区三四| 欧美日韩三级在线观看| 91视频免费播放| 亚洲精品无码久久久久久久| 99在线|亚洲一区二区| 亚洲欧美日产图| 久久午夜影院| 91久久精品在线| 美女的胸无遮挡在线观看| 久久精品成人欧美大片| 亚洲色图21p| 日韩欧美aaaaaa| 一级一级黄色片| 午夜精品久久久久久| 国产精品18在线| 久久新电视剧免费观看| 三大队在线观看| 免费亚洲电影在线| 国产v片免费观看| 亚洲成人免费| 日韩欧美精品一区二区三区经典| 91蝌蚪精品视频| 国产精品一区二区三区久久久| 日韩av影片| 欧美激情区在线播放| 美女国产在线| 中文字幕精品久久久久| 青青草手机在线| 亚洲第一天堂av| 亚洲第一天堂在线观看| 在线播放/欧美激情| 无码人妻丰满熟妇精品区| 亚洲成年人影院| 欧美黄色免费观看| 中文字幕亚洲一区二区va在线| 偷拍夫妻性生活| 92精品国产成人观看免费| 欧美xxxx日本和非洲| 国产精品资源在线观看| 岛国av免费在线| 久久精品国产999大香线蕉| 国产97色在线 | 日韩| 国产精品资源| 日本a视频在线观看| 欧美日韩精品免费观看视频完整| 国产成人免费高清视频| 久久精品青草| 一区中文字幕在线观看| 久久国产精品亚洲人一区二区三区| 日韩欧美精品在线不卡 | 国风产精品一区二区| 五月天激情综合网| 中文字幕欧美人与畜| 欧美电影免费播放| 一区二区冒白浆视频| 欧美独立站高清久久| 制服国产精品| 亚洲精品97| 国产又粗又长又爽视频| 欧美日韩三级| 3d动漫一区二区三区| 亚洲视频www| 日韩免费高清在线| 另类人妖一区二区av| www.成人黄色| 国产风韵犹存在线视精品| 蜜桃色一区二区三区| 成人动漫一区二区在线| 国产精品边吃奶边做爽| 91免费观看在线| 妖精视频在线观看免费| 亚洲日本va在线观看| 国产精彩视频在线| 欧美日韩亚洲国产一区| 久久久久久av无码免费看大片| 欧美日韩国产综合一区二区| 999精品国产| 亚洲第一区中文字幕| 国产福利片在线| 久热爱精品视频线路一| av在线不卡免费| 日本中文字幕不卡免费| 另类一区二区| 高清不卡日本v二区在线| 香蕉久久精品日日躁夜夜躁| 亚洲国产欧洲综合997久久| 欧美一区不卡| avav在线看| 精品中文字幕一区二区小辣椒| 国产免费无码一区二区| 91伊人久久大香线蕉| 正在播放国产对白害羞| 亚洲在线视频一区| 在线免费观看av网址| 日韩一级二级三级| 你懂的免费在线观看视频网站| 最近2019年手机中文字幕| 三级资源在线| 国产精品九九九| 亚洲一区 二区| 色一情一区二区三区四区 | 中文字幕一区二区三区色视频| 国产精品二区一区二区aⅴ| 日本高清无吗v一区| 精品人妻无码一区二区| 亚洲欧美制服第一页| 最近中文字幕免费mv2018在线| 日韩av免费在线观看| 亚洲精品v亚洲精品v日韩精品| 秋霞毛片久久久久久久久| 欧美日韩视频| 欧美成人福利在线观看| 91网站黄www| 丰满少妇高潮久久三区| 在线视频国内自拍亚洲视频| 成人免费视频国产免费麻豆| 中文字幕九色91在线| 午夜影院在线播放| 超碰97在线人人| 欧美激情欧美| 国产福利一区视频| 不卡一区二区三区四区| 日韩欧美国产成人精品免费| 色诱视频网站一区| 日本wwwxxxx| 精品中文字幕在线2019| 日本亚洲欧洲无免费码在线| 欧美一区二区在线| 亚洲国产国产亚洲一二三| 中文字幕亚洲影院| 国产人成一区二区三区影院| 婷婷激情五月网| 亚洲电影在线观看| 日本高清成人vr专区| 国产区精品视频| 日韩精品看片| 成人免费xxxxx在线视频| 91麻豆国产福利在线观看| 国产在线视频99| 日韩精品一区二区三区蜜臀| 大地资源网3页在线观看| 国产精品视频白浆免费视频| 国产精品嫩模av在线| 欧美国产激情视频| 99国内精品久久| 日本少妇全体裸体洗澡| 欧美xxxxxxxx| 搞黄网站在线看| 成人在线免费网站| 欧美三级网页| 精品国产一二区| 亚洲综合一区二区| 精品人妻少妇AV无码专区 | 在线不卡日本| 国产专区欧美精品| 美女福利视频在线观看| 日韩女优视频免费观看| 欧美草逼视频| 国产精品久久精品国产| 亚洲麻豆一区| 国产偷人妻精品一区| 一本大道综合伊人精品热热| 国产福利电影在线| 国产日产久久高清欧美一区| 天天插综合网| 无码av免费精品一区二区三区| 一级精品视频在线观看宜春院| 嫩草影院一区二区| 91国产在线精品| 国产精品片aa在线观看| 日韩大片一区二区| 亚洲码国产岛国毛片在线| 亚洲精品国产av| 国产91精品黑色丝袜高跟鞋| 国产九一精品| 亚洲日本黄色片| 性感美女极品91精品| 国产在线观看高清视频| 91精品综合视频| 亚洲高清二区| 日韩人妻无码精品综合区| 欧美精品久久99久久在免费线| 日本在线观看高清完整版| 九九九九精品| 蜜臀久久99精品久久久久久9 | 狠狠爱综合网| 亚洲AV无码国产成人久久| 欧美日韩国产乱码电影| 欧美xxxx做受欧美88bbw| 欧美日韩一区在线播放| 久久99国产乱子伦精品免费| 免费网站观看www在线观| 亚洲欧美激情精品一区二区| 日日夜夜精品| 久久视频这里有精品| 国产精品黄色在线观看| 欧美性受xxxx狂喷水| 国产精品久久婷婷六月丁香| 午夜欧美精品| wwwww黄色| 亚洲成人激情在线| 国产91在线精品| 国产不卡一区二区视频| 中文天堂在线一区| 日韩在线视频观看免费| 国产日本欧美一区| 夜夜嗨一区二区三区| 91视频免费在线看| 在线电影av不卡网址| jizz性欧美2| 热久久久久久久久| 色偷偷一区二区三区|