1. 程式人生 > >yarn架構學習

yarn架構學習

dfs exp 集群 rop 默認 工作流程 tasks version link

yarn的資源管理架構

技術分享

RM節點

資源調度算法

參數<property>yarn.resourcemanager.scheduler.class</property>

  • capacity scheduler,默認值<value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler</value>,可不配置
  • fair scheduler,參數設置為org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler,並將<property>yarn.scheduler.fair.max.assign<property>設置為1,允許單獨定義fair-scheduler.xml文件
  • FIFO,

Services

communication

yarn的交互模塊分三部分

  • ClientRMService,用戶交互模塊,處理用戶提出的 commit app申請,kill app申請,獲取app的status
  • AdminService,管理員交互模塊,yarn為管理員單獨提供一個通道,防止因user訪問過多造成管理員命令被餓死。

refreshQueues,刷新ResourceSchedule,

refreshNodes,刷新節點列表,exclude(可接入RM)/include(不可接入RM)

refreshSuperUserGroupGonfiguration,刷新用戶組配置

refreshUsertoGroupMapping,刷新用戶組的對應關系

refreshAdminAcls,通過yarn.admin.acls接口

refreshServiceAcls,更新服務訪問控制列表,ClientRmService/AppMasterService/ResourceTrackerService

  • WebApp,提供web ui頁面

NMService

技術分享

RMService

AppMasterService

技術分享

管理方法與狀態機

技術分享

  1. RM節點的AMLiveLinessMonitor服務,定期巡檢所有的AppMaster節點
  2. AM節點向RM節點發送心跳,由AppMasterService處理;RM超過yarn.am.liveness-monitor.expiry-interval-ms設置的心跳時間未收到AM的心跳反饋,則認為AM失敗
  3. 由RM的AppMasterLaucher,將該AM的所有container節點置為failed
  4. 由RM的AppMasterLaucher,向另一個NM節點提出發出創建ContainerManager的client的請求,內容包括命令,Jar包、環境變量等,打包發送,請求次數由yarn.resourcemanager.am.max-retries參數控制,然後再發起鏈接請求,協議為AMRMProtocol;
  5. NM受理並創建新的AM,與原AM工作一致
  6. 新的AM向RM進行註冊,由RM節點的AppMasterService服務受理
  7. 新AM能獲取到所有相關container的工作,覺得重要,則向RM提出新建container的申請,申請資源,由RM節點的AppMasterService服務受理
  8. 收到請求後,RM節點的AppMasterLauncher服務確認可用資源,並發起LaunchContainer的任務給NM,AppMaster所在的NM優先
  9. NM創建新的container,並向RM進行註冊,包含節點ID,可用的資源上限等信息,由RM的AppMasterService受理;
  10. 當處理完成後,由AM向RM發送finishApplicationMaster請求,由RM的AppMasterService受理;
  11. AppMasterLaucher通過RPC方式向NM發送Cleanup方法,並釋放所有container。

TaskScheduler

security

RM故障切換

RM的數據存儲在內存中,或者zookeeper中,這套集群存儲在zookeeper中,由配置參數

<property> <name>yarn.resourcemanager.zk-address</name> <value>zw-15-154:2181,zw-15-165:2181,zw-15-162:2181</value> </property>

控制,切換流程如下:

技術分享

NM節點

功能模塊

技術分享

工作流程

技術分享

  • 1.客戶端向hdfs提交jar包,二進制文件等
  • 2.客戶端向RM提交app程序
  • 3.RM向NM發出申請,請求啟動AppMaster,
  • 4.NM收到請求,從hdfs獲取所需要的文件,
  • 5.NM收到文件,啟動AM服務
  • 6.AM服務與RM進行通訊,請求資源
  • 7.RM分配所需要的資源,返回給AM
  • 8.AM向NM發送命令StartContainerRequest
  • 8.NM檢查是否第一次啟動container,如果是,則從hdfs下載所需文件,否則直接啟動應用。

Container生命周期

技術分享

AppMaster服務

ApplicationMaster也是一個Container,是application的第一個container,承擔

資源隔離

技術分享

yarn架構學習