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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Flink 部署模式,session 、pre job、aplication三种主要模式

發(fā)布時間:2024/3/26 编程问答 80 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flink 部署模式,session 、pre job、aplication三种主要模式 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

長久以來,在YARN集群中部署Flink作業(yè)有兩種模式,即Session Mode和Per-Job Mode,而在Flink 1.11版本中,又引入了第三種全新的模式:Application Mode。本文先回顧兩種傳統(tǒng)模式的做法與存在的問題,再簡要介紹Application Mode。

傳統(tǒng)部署模式
Session模式
Session模式是預分配資源的,也就是提前根據(jù)指定的資源參數(shù)初始化一個Flink集群,并常駐在YARN系統(tǒng)中,擁有固定數(shù)量的JobManager和TaskManager(注意JobManager只有一個)。提交到這個集群的作業(yè)可以直接運行,免去每次分配資源的overhead。但是Session的資源總量有限,多個作業(yè)之間又不是隔離的,故可能會造成資源的爭用;如果有一個TaskManager宕機,它上面承載著的所有作業(yè)也都會失敗。另外,啟動的作業(yè)越多,JobManager的負載也就越大。所以,Session模式一般用來部署那些對延遲非常敏感但運行時長較短的作業(yè)。

Per-Job模式
顧名思義,在Per-Job模式下,每個提交到YARN上的作業(yè)會各自形成單獨的Flink集群,擁有專屬的JobManager和TaskManager。可見,以Per-Job模式提交作業(yè)的啟動延遲可能會較高,但是作業(yè)之間的資源完全隔離,一個作業(yè)的TaskManager失敗不會影響其他作業(yè)的運行,JobManager的負載也是分散開來的,不存在單點問題。當作業(yè)運行完成,與它關聯(lián)的集群也就被銷毀,資源被釋放。所以,Per-Job模式一般用來部署那些長時間運行的作業(yè)。

存在的問題

Deployer代表向YARN集群發(fā)起部署請求的節(jié)點,一般來講在生產環(huán)境中,也總有這樣一個節(jié)點作為所有作業(yè)的提交入口(即客戶端)。在main()方法開始執(zhí)行直到env.execute()方法之前,客戶端也需要做一些工作,即:

獲取作業(yè)所需的依賴項;
通過執(zhí)行環(huán)境分析并取得邏輯計劃,即StreamGraph→JobGraph;
將依賴項和JobGraph上傳到集群中。
只有在這些都完成之后,才會通過env.execute()方法觸發(fā)Flink運行時真正地開始執(zhí)行作業(yè)。試想,如果所有用戶都在Deployer上提交作業(yè),較大的依賴會消耗更多的帶寬,而較復雜的作業(yè)邏輯翻譯成JobGraph也需要吃掉更多的CPU和內存,客戶端的資源反而會成為瓶頸——不管Session還是Per-Job模式都存在此問題。為了解決它,社區(qū)在傳統(tǒng)部署模式的基礎上實現(xiàn)了Application模式。

Application模式

此模式下的作業(yè)提交框圖如下。

可見,原本需要客戶端做的三件事被轉移到了JobManager里,也就是說main()方法在集群中執(zhí)行(入口點位于ApplicationClusterEntryPoint),Deployer只需要負責發(fā)起部署請求了。另外,如果一個main()方法中有多個env.execute()/executeAsync()調用,在Application模式下,這些作業(yè)會被視為屬于同一個應用,在同一個集群中執(zhí)行(如果在Per-Job模式下,就會啟動多個集群)。可見,Application模式本質上是Session和Per-Job模式的折衷。
?

----------------

Session-Cluster模式

Session-Cluster模式需要先啟動集群,然后再提交作業(yè),接著會向yarn申請一塊空間后,資源永遠保持不變。如果資源滿了,下一個作業(yè)就無法提交,只能等到y(tǒng)arn中的其中一個作業(yè)執(zhí)行完成后,釋放了資源,下個作業(yè)才會正常提交。所有作業(yè)共享Dispatcher和ResourceManager;共享資源;適合規(guī)模小執(zhí)行時間短的作業(yè)。

Per-Job-Cluster模式

一個任務會對應一個Job,每提交一個作業(yè)會根據(jù)自身的情況,都會單獨向yarn申請資源,直到作業(yè)執(zhí)行完成,一個作業(yè)的失敗與否并不會影響下一個作業(yè)的正常提交和運行。獨享Dispatcher和ResourceManager,按需接受資源申請;適合規(guī)模大長時間運行的作業(yè)。

總結

以上是生活随笔為你收集整理的Flink 部署模式,session 、pre job、aplication三种主要模式的全部內容,希望文章能夠幫你解決所遇到的問題。

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