日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Flink架构原理

發布時間:2024/1/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flink架构原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、流式任務執行過程
1.任務并行
? ? ?按照自己的理解,一個流程如下圖所示,除非經歷shuffle過程,否則流程并行度將由source的并行度決定,比如kafka分區數目,shuffle之后的并行度,可能會改變,Operator子任務(Task)彼此獨立,并且可以在不同的線程中執行,并且可能在不同的機器或容器上執行。

2.OperatorChain
? ? 原理同Spark 的Satge劃分相似,為了減少數據在傳輸過程中的序列化和反序列化損耗,將一些可以合并的Task進行合并,合并之后稱多個Task為一個OperatorChain,在遇到Shuffle和用戶編程時強制截斷時,不進行合并。

二、架構
1.組成


? ? a. JobClient是Flink程序和JobManager交互的橋梁(同Spark Driver),主要負責接收程序、解析程序的執行計劃、優化程序的執行計劃,然后提交執行計劃到JobManager。

? ? b.JobManager是一個進程,主要負責申請資源,協調以及控制整個job的執行過程,具體包括,調度任務、處理checkpoint、容錯等等,在接收到JobClient提交的執行計劃之后,針對收到的執行計劃,繼續解析,因為JobClient只是形成一個operaor層面的執行計劃,所以JobManager繼續解析執行計劃(根據算子的并發度,劃分task),形成一個可以被實際調度的由task組成的拓撲圖,如上圖被解析之后形成下圖的執行計劃,最后向集群申請資源,一旦資源就緒,就調度task到TaskManager。

? ? c.TaskManager是一個進程,及一個JVM(Flink用java實現)。主要作用是接收并執行JobManager發送的task,并且與JobManager通信,反饋任務狀態信息,比如任務分執行中,執行完等狀態,上文提到的checkpoint的部分信息也是TaskManager反饋給JobManager的。如果說JobManager是master的話,那么TaskManager就是worker主要用來執行任務。在TaskManager內可以運行多個task。多個task運行在一個JVM內有幾個好處,首先task可以通過多路復用的方式TCP連接,其次task可以共享節點之間的心跳信息,減少了網絡傳輸。
?

2.Task 執行
? ?Spark中每個Stage中的Task會被分配到一個Worker中的 -> Executor容器里面的 -> 一個線程池中被執行,Flink稱每個Executor為一個TaskManager,每個TaskManager中會有多個slot作為內存隔離:

Spark:Worker ?——> ? Executor ?——> ?線程池 ?——> ?線程

Flink: ?Worker ?——> ? TaskManager ?——> ?Slot ?——> ?線程

? ? Slot是TaskManager資源粒度的劃分,每個Slot都有自己獨立的內存。所有Slot平均分配TaskManger的內存,比如TaskManager分配給Solt的內存為8G,兩個Slot,每個Slot的內存為4G,四個Slot,每個Slot的內存為2G,值得注意的是,Slot僅劃分內存,不涉及cpu的劃分。同時Slot是Flink中的任務執行器(類似Storm中Executor),每個Slot可以運行多個task,而且一個task會以單獨的線程來運行。Slot主要的好處有以下幾點:
可以起到隔離內存的作用,防止多個不同job的task競爭內存。
Slot的個數就代表了一個Flink程序的最高并行度,簡化了性能調優的過程
允許多個Task共享Slot,提升了資源利用率,舉一個實際的例子,kafka有3個partition,對應flink的source有3個task,而keyBy我們設置的并行度為20,這個時候如果Slot不能共享的話,需要占用23個Slot,如果允許共享的話,那么只需要20個Slot即可(Slot的默認共享規則計算為20個)。

Slot 注意點:
a.隔離內存

b.Slot共享并不是必須配置,但是啟用可以加速任務執行

c. Task 共享同一個Slot,需要滿足:不同Task但是屬于同一個SlotShardingGroup,默認所有的Task屬于同一個default組

d.在不開啟Slot共享的情況下,Slot數量和Flink并行度相同,Slot 解析資料鏈接
————————————————
版權聲明:本文為CSDN博主「beTree_fc」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/u013560925/article/details/91381822

總結

以上是生活随笔為你收集整理的Flink架构原理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。