Flink集群架構

Flink集群架構

Flink采用Master-Slave架構,其中JobManager作為集群Master節(jié)點袁串,主要負責任務協(xié)調和資源分配呼巷,TaskWorker作為Salve節(jié)點王悍,用于執(zhí)行流task。除了JobManager和TaskManager压储,還有一個重要的角色就是Client。Client雖然不是Flink Cluster 運行態(tài)的一部分宇整,但也是Flink重要組件之一芋膘,用來提交流任務为朋。

Flink集群之間的通信,是通過Akka Actor System來進行管控通信的习寸。包括Client-JobManager和JobManager-TaskManager,而TaskManager之間的數(shù)據(jù)交換孵滞,是基于Netty實現(xiàn)的坊饶。

集群架構

Client

Client主要作用是將批或流應用程序編譯成Dataflow Graph(也就是JobGraph)殴蓬,然后將其提交給JobManager。詳細來看痘绎,Client主要功能如下:

  • 執(zhí)行Application 的Main方法肖粮。

  • Generate JobGraph。將用戶編寫的application code(DataStream/DataSet/SQL/Table API)代碼翻譯成JobGraph涩馆。

  • Optimize JobGraph。比如將進行Operator Chain悲龟,能夠減低數(shù)據(jù)延遲的同時增加系統(tǒng)吞吐冰寻。

  • 提交JobGraph和dependency jar到JobManager。

JobManager

JobManager負責協(xié)調Flink application的分布式執(zhí)行斩芭,比如task調度划乖、Checkpoint協(xié)調、Failover協(xié)調等等误算。具體功能如下:

  • JobGraph -> Execution Graph仰美。接收Client的JobGraph后咖杂,將邏輯執(zhí)行圖JobGraph轉換為物理執(zhí)行圖ExecutionGraph诉字。

  • Job分發(fā)(Job dispatcher)知纷。

  • Task的部署和調度。

  • Checkpoint Coordinator琅轧。

  • Recovery metadata。

其中JobManager內(nèi)部主要功能組件如下:

  • ResourceManager墨叛。ResourceManager負責Flink cluster中的資源調配工作漠趁,而資源調配的基本單位就是task slot。Flink為不同的環(huán)境和資源提供者(比如YARN闯传、Mesos甥绿、Kubernetes和standalone cluster)提供了多種實現(xiàn)则披。比如在standalone部署環(huán)境下,ResourceManager只能分配可用TaskManager的task slot图谷,不能去啟動一個新的TaskManager阱洪。

  • Dispatcher。Dispatcher提供了一個REST接口來讓Client提交任務承璃,并為提交的任務啟動一個新的JobMaster蚌本。同時Dispatcher還未任務提供了Flink WebUI來展示任務執(zhí)行信息隘梨。

  • JobMaster出嘹。JobMaster負責管理和執(zhí)行單個JobGraph咬崔。Flink Cluster能夠同時運行多個job,每個job都有自己的JobMaster垮斯。

一個Flink Cluster至少有一個JobManager只祠,在高可用部署模式下抛寝,可以有多個JobManager,但是只能有一個JobManager為leader盗舰,其它都為standby钻趋。

TaskManager

TaskManager主要用于執(zhí)行Dataflow的task,并且緩沖和交換數(shù)據(jù)流较沪。TaskManager中的task slot是集群的最小資源調度單位。TaskManager中的task slot數(shù)量尸曼,代表了該TaskManager所能并發(fā)處理的task數(shù)量萄焦。

TaskManager的主要功能如下:

  • 執(zhí)行task(Task Execution)楷扬。

  • 數(shù)據(jù)交換(Network manager)。

  • 內(nèi)存管理(包括類型系統(tǒng)躲株、數(shù)據(jù)序列化和反序列化)。

  • 向JobManager中的ResourceManager注冊自己镣衡,以便ResourceManager進行task調度霜定。

  • 向ResourceManager發(fā)送心跳档悠。

上面的Client、JobManager和TaskManager中都有一個相同的組件望浩,就是Actor System辖所。Akka Actor System用于節(jié)點之間消息傳輸。

Task

對于分布式任務執(zhí)行磨德,F(xiàn)link會將能夠chain到一起的operator放到一個Task中來執(zhí)行缘回,每個Task由一個Thread來執(zhí)行。

將可以chain到一起的operator放到一個task執(zhí)行典挑,是一種非常有效的優(yōu)化手段酥宴。因為它能夠減少線程到線程的切換開銷和緩存開銷,能夠降低延遲的同時增加吞吐量您觉。

JobGraph

上圖是Application Dataflow的JobGraph肆糕,最上面是Dataflow的邏輯視圖JobGraph诚啃,下面是帶有并發(fā)語義的JobGraph绍申。Task代表Dataflow中operator執(zhí)行任務极阅,而SubTask代表同一Operator(或Chain operator)的并發(fā)任務筋搏,比如上面的source-map chain operator代表一個task,source-map[1]代表該task的subtask髓迎。

Task Slot

Flink集群中的每個TaskManager是一個JVM進程排龄,TaskManager能夠執(zhí)行一個或多個task橄维。而TaskManager能夠執(zhí)行多少task争舞,就是通過task slot來表示的店溢。

每個task slot代表TaskManager中的固定資源子集逞怨,比如TaskManager中有3個task slot,則每個task slot所分配的資源為TaskManager所管理內(nèi)存的1/3革砸。需要注意的是算利,這里只隔離了內(nèi)存,像CPU缎患、I/O等資源都沒有做隔離挤渔。

slot

如果一個TaskManger只有一個task slot的話,意味著每個task group(之所以稱為組眼刃,是因為task slot會被共享)是JVM進程級別的隔離擂红。而一個TaskManager如果有多個Task slot弟头,則這些task之間能夠共享JVM資源涉茧,比如TPC鏈接伦连、心跳信息等惑淳;同時也可以共享數(shù)據(jù)集和數(shù)據(jù)結構,從而減少每個task的負載肚医。

對于默認情況下舰涌,F(xiàn)link是允許不同task的subtask共享slot的瓷耙,只要它們屬于同一job即可。通過共享slot落追,一個slot就可以容納一個job的整個pipeline轿钠,比如下面第一個TaskManager中的第一個Task Slot,被source-map[1]贷腕、keyby-window[1]和sink[1]整個pipeline所共享瞒斩,這樣整個最大限度的減少數(shù)據(jù)跨線程/進程的數(shù)據(jù)通信胸囱。

slot共享

共享slot除了可能執(zhí)行整個pipline外,還有以下兩個優(yōu)點:

  1. Flink集群只要保證slot總數(shù)與job中最大的并發(fā)度一致即可谤职,無需計算job中所有task總和。
  2. 提升集群資源利用率陷寝。避免非密集型計算task(比如source-map)和密集型計算task(比如window)使用相同的資源。
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市褐奥,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌版保,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件汞幢,死亡現(xiàn)場離奇詭異豺型,居然都是意外死亡姻氨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茂浮,“玉大人席揽,你說我怎么就攤上這事∈翳耄” “怎么了诊笤?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長止喷。 經(jīng)常有香客問我弹谁,道長,這世上最難降的妖魔是什么植康? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任冻记,我火速辦了婚禮演顾,結果婚禮上,老公的妹妹穿的比我還像新娘棉钧。我一直安慰自己,他們只是感情好奢驯,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布管跺。 她就那樣靜靜地躺著廉涕,像睡著了一般。 火紅的嫁衣襯著肌膚如雪婆瓜。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音晕讲,去河邊找鬼。 笑死勤婚,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播型雳,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼冤荆,長吁一口氣:“原來是場噩夢啊……” “哼乌妒!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤豪诲,失蹤者是張志新(化名)和其女友劉穎服赎,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年揖曾,在試婚紗的時候發(fā)現(xiàn)自己被綠了翔脱。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片错妖。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡痴施,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出神得,到底是詐尸還是另有隱情,我是刑警寧澤节榜,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站挪钓,受9級特大地震影響,放射性物質發(fā)生泄漏馏予。R本人自食惡果不足惜冕香,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望早龟。 院中可真熱鬧,春花似錦、人聲如沸妖混。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兽间。三九已至乓诽,卻和暖如春逮壁,著一層夾襖步出監(jiān)牢的瞬間巍杈,已是汗流浹背筷畦。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工渔肩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓衷敌,卻偏偏與公主長得像罐监,于是被迫代替她去往敵國和親侧但。 傳聞我的和親對象是個殘疾皇子屁药,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容