大數據(三) - YARN
YARN是資源管理系統,理論上支持多種資源,目前支持CPU和內存兩種資源
YARN產生背景
直接源于MRv1在幾個方面的缺陷
擴展性受限
單點故障
難以支持MR之外的計算
多計算框架各自為戰,數據共享困難
MR:離線計算框架
Storm:實時計算框架
Spark:內存計算框架
YARN設計目標
通用的統一資源管理系統
同時運行長應用程序和短應用程序
長應用程序
通常情況下,永不停止運行的程序
Service、HTTP Server等
短應用程序
短時間(秒級、分鐘級、小時級)內會運行結束的程序
MR job、Spark Job等
</div>
YARN基本架構

ResourceManager
整個集群只有一個,負責集群資源的統一管理和調度
詳細功能
處理客戶端請求
啟動/監控ApplicationMaster
監控NodeManager
資源分配與調度
NodeManager
整個集群有多個,負責單節點資源管理和使用
詳細功能
單個節點上的資源管理和任務管理
處理來自ResourceManager的命令
處理來自ApplicationMaster的命令
ApplicationMaster
每個應用有一個,負責應用程序的管理
詳細功能
數據切分
為應用程序申請資源,并進一步分配給內部任務
任務監控與容錯
Container
對任務運行環境的抽象
描述一系列信息
任務運行資源(節點、內存、CPU)
任務啟動命令
任務運行環境
YARN運行過程

YARN容錯性
ResourceManager
存在單點故障;
正在基于ZooKeeper實現HA。
NodeManager
失敗后,RM將失敗任務告訴對應的AM;
AM決定如何處理失敗的任務。
ApplicationMaster
失敗后,由RM負責重啟;
AM需處理內部任務的容錯問題;
RMAppMaster會保存已經運行完成的Task,重啟后無需重新運行。
YARN調度框架
雙層調度框架
RM將資源分配給AM
AM將資源進一步分配給各個Task
基于資源預留的調度策略
資源不夠時,會為Task預留,直到資源充足
與“all or nothing”策略不同(Apache Mesos)
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資源
運行在YARN上的計算框架 (還有別的)
離線計算框架:MapReduce
DAG計算框架:Tez
流式計算框架:Storm
內存計算框架:Spark
離線計算框架:MapReduce
僅適合離線批處理
具有很好的容錯性和擴展性
適合簡單的批處理任務
缺點明顯
啟動開銷大、過多使用磁盤導致效率低下等
DAG計算框架:Apache Tez
DAG計算:多個作業之間存在數據依賴關系,并形成一個依賴關系有向圖( Directed Acyclic Graph ),該圖的計算稱為“DAG計算”
和Mapreduce相比

Tez應用場景
直接編寫應用程序
Tez提供了一套通用編程接口
適合編寫有依賴關系的作業
優化Pig、Hive等引擎
下一代Hive:Stinger
好處1: 避免查詢語句轉換成過多的MapReduce作業后產生大量不必要的網絡和磁盤IO
好處2:更加智能的任務處理引擎

流式計算框架:Storm

Storm on YARN(和其他如mapreduce、tez、spartk等都不同,其他計算框架的client)

內存計算框架:Spark
已經形成了自己的生態系統

來自: http://blog.csdn.net//matthewei6/article/details/50520719
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!