YARN应用场景、原理与资源调度
1.Hadoop YARN產生背景
源于MapReduce1.0
運維成本 如果采用“一個框架一個集群”的模式,則可能需要多個管理員管理這些集群,進而增加運維成本,而共享模式通常需要少數管理員即可完成多個框架的統一管理。
數據共享 隨著數據量的暴增,跨集群間的數據移動不僅需花費更長的時間,且硬件成本也會大大增加,而共享集群模式可讓多種框架共享數據和硬件資源,將大大減小數據移動帶來的成本。
直接源于MRv1在幾個方面的缺陷:
?擴展性受限
?單點故障
?難以支持MR之外的計算
多計算框架各自為戰,數據共享困難
?MR:離線計算框架
???Storm:實時計算框架
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Spark:內存計算框架
2.Hadoop YARN基本構成
ResourceManager
整個集群只有一個,負責集群資源的統一管理和調度
詳細功能
?處理客戶端請求
?啟動/監控ApplicationMaster
?監控NodeManager
?資源分配與調度
NodeManager
整個集群有多個,負責單節點資源管理和使用
詳細功能
?單個節點上的資源管理和任務管理
?處理來自ResourceManager的命令
?處理來自ApplicationMaster的命令
ApplicationMaster
每個應用有一個,負責應用程序的管理
詳細功能
?數據切分
?為應用程序申請資源,并進一步分配給內部任務
?任務監控與容錯
Container
?對任務運行環境的抽象
?描述一系列信息
?任務運行資源(節點、內存、CPU)
?任務啟動命令
?任務運行環境
3.YARN容錯性
ResourceManager
?存在單點故障;
?正在基于ZooKeeper實現HA。
NodeManager
?失敗后,RM將失敗任務告訴對應的AM;
?AM決定如何處理失敗的任務。
ApplicationMaster
?失敗后,由RM負責重啟;
?AM需處理內部任務的容錯問題;
?RMAppMaster會保存已經運行完成的Task,重啟后無需重新運行
4.YARN調度框架
雙層調度框架
?RM將資源分配給AM
?AM將資源進一步分配給各個Task
基于資源預留的調度策略
?資源不夠時,會為Task預留,直到資源充足
?與“all or nothing”策略不同(Apache Mesos)
5.Hadoop YARN資源調度?
YARN資源調度器
多類型資源調度
?采用DRF算法(論文:“Dominant Resource Fairness: Fair Allocation of Multiple Resource Types”)
?目前支持CPU和內存兩種資源
提供多種資源調度器
?FIFO
?Fair Scheduler
?Capacity Scheduler
多租戶資源調度器
?支持資源按比例分配
?支持層級隊列劃分方式
?支持資源搶占
YARN資源隔離方案
?支持內存和CPU兩種資源隔離
?內存是一種“決定生死”的資源
?CPU是一種“影響快慢”的資源
?內存隔離
?基于線程監控的方案
?基于Cgroups的方案
?CPU隔離
?默認不對CPU資源進行隔離
?基于Cgroups的方案
YARN支持的調度語義
?支持的語義
?請求某個特定節點/機架上的特定資源量
?將某些節點加入(或移除)黑名單,不再為自己分配這些節點上的資源
?請求歸還某些資源
?不支持的語義
?請求任意節點/機架上的特定資源量
?請求一組或幾組符合某種特質的資源
?超細粒度資源
?動態調整Container資源
6.Hadoop YARN上的計算框架
?離線計算框架:MapReduce
?DAG計算框架:Tez
?流式計算框架:Storm
?內存計算框架:Spark
轉載于:https://www.cnblogs.com/tmeily/p/4427711.html
總結
以上是生活随笔為你收集整理的YARN应用场景、原理与资源调度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vim global命令
- 下一篇: Win8节省C盘空间攻略