1 yarn 基本架構
yarn是一個資源管理與調度平臺,不僅hadoop跑在上面,flink也可以直接向yarn申請資源并運行上去,
- yarn使用cgroup隔離資源,實作了container,
- Resource Manager組件管理集群資源,
- Node Manager組件管理1臺機器,在上面運行Container,
- Container是一個具體容器,分配一定的CPU、記憶體、磁盤資源,在上面運行具體的任務
2 向yarn提交應用
向yarn提交應用的互動程序,大體如下

3 Flink on Yarn
3.1 涉及的組件
- ResourceManager
- NodeManager
- AppMater(jobmanager和它運行在一個Container中)
- Container(taskmanager運行在上面)
flink由JobManager和TaskManager組成,
- JobManager負責調度,只需要啟動1個,它也就是yarn的Application Master角色,
- TaskManager是執行計算的行程,可以啟動多個來分擔計算任務
3.2 flink 與yarn的互動
- flink client上傳flink jar、應用jar 和組態檔到HDFS上
- client向Yarn ResourceManager提交任務并申請資源
- ResourceManager分配Container資源并啟動ApplicationMaster, 然后AppMaster加載Flink的Jar包和配置構建環境,啟動JobManager
- JobManager和ApplicationMaster運行在同一個container上
- 一旦他們被成功啟動,AppMaster就知道JobManager的地址(AM它自己所在的機器),
- JobManager 為TaskManager生成一個新的Flink組態檔,這個組態檔也被上傳到HDFS上,AppMaster容器也提供了Flink的web服務介面,
- YARN所分配的所有埠都是臨時埠,這允許用戶并行執行多個Flink
- ApplicationMaster向ResourceManager申請作業資源,NodeManager加載Flink的Jar包和配置構建環境并啟動TaskManager
- TaskManager啟動后向JobManager發送心跳包,并等待JobManager向其分配任務

3.3 Flink On Yarn的好處
- yarn的資源能按需使用,可以提高集群的資源利用率
- yarn的任務有優先級,根據優先級運行作業
- 一套yarn集群,可以執行MR任務,spark任務,flink任務等…,不用維護多套計算集群
- 基于yarn調度系統,能夠自動化地處理各個角色的 Failover(容錯)
- JobManager 行程和 TaskManager 行程都由 Yarn NodeManager 監控
- 如果 JobManager 行程例外退出,則 Yarn ResourceManager 會重新調度 JobManager 到其他機器
- 如果 TaskManager 行程例外退出,JobManager 會收到訊息并重新向 Yarn ResourceManager 申請資源,重新啟動 TaskManager
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/299525.html
標籤:其他
