NodeManager启动流程与服务
本文介紹了NodeManager的啟動(dòng)流程與服務(wù).
NodeManager主流程
????? 在main方法中new一個(gè) NodeManager, 然后初始化并啟動(dòng).
?????? 這里主要看initAndStartNodeManager方法.
?????? 首先是增加一個(gè)shutDownHook, 即CompositeServiceShutdownHook, 它的目的是為了在NodeManager crash的時(shí)候停止compositeService (它維護(hù)了nodeManager上所有的service列表).
然后初始化, init(conf):
1. 如果配置了安全選項(xiàng), 則需初始化containerTokenSecretManager.
2. 初始化ContainerExecutor, 顧名思義, ContainerExecutor封裝了nodeManager對(duì)Container操作的各種方法, 包括啟動(dòng)container, 查詢指定id的container是否活著,等操作. 根據(jù)配置yarn.nodemanager.container-executor.class決定ContainerExecutor的實(shí)例, 默認(rèn)為DefaultContainerExecutor.
3. New DeletionService, 用于刪除用戶文件 …..
4. New AsyncDispatcher, 和RM的AsyncDispatcher一樣. 異步分發(fā)器.
5. New NodeHealthCheckerService, 一個(gè)服務(wù), 可以通過(guò)此服務(wù)查詢node是否健康, 當(dāng)前node的健康狀態(tài)包括nodeHealthScriptRunner.isHealthy和dirsHandler.areDisksHealthy
6. 創(chuàng)建NodeStatusUpdater線程, 負(fù)責(zé)向RM注冊(cè)和發(fā)送心跳(更新狀態(tài)). 這里使用ResourceTracker協(xié)議向RM通信, 底層為YarnRPC. ResourceTracker接口提供了兩個(gè)方法; 提供注冊(cè)和心跳功能.
7. NodeResourceMonitor服務(wù), 繼承于AbstractService, 沒(méi)有自己定義方法. 監(jiān)控node的資源(即資源是否可用, 四種狀態(tài), stopped, inited, notinited, started)
8. 創(chuàng)建ContainerManagerImpl服務(wù), 管理container, 啟動(dòng)20個(gè)RPC處理線程, 使用ContainerManager協(xié)議, ContainerManager協(xié)議為APP向NodeManager通信的協(xié)議, 提供了三個(gè)方法:
注意, 這里獲取container的狀態(tài)包括NEW, RUNNING, COMPLETE. 而container的進(jìn)度信息其實(shí)是有container直接向AM匯報(bào)的.
9. 創(chuàng)建webServer, 啟動(dòng)NodeManager的web服務(wù). 通過(guò)yarn.nodemanagerwebapp.address設(shè)置地址, 默認(rèn)端口為8042.
10. 初始化Metrics
轉(zhuǎn)載請(qǐng)注明出處(http://www.cnblogs.com/shenh062326/archive/2012/11/24/NodeManager.html)
轉(zhuǎn)載于:https://www.cnblogs.com/shenh062326/archive/2012/11/24/NodeManager.html
總結(jié)
以上是生活随笔為你收集整理的NodeManager启动流程与服务的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Effective C++ 读书笔记(八
- 下一篇: win2012R2安装net4.6.2失