大數據:Yarn應用程序提交流程

Hadoop向用戶提供了三種能力:分佈式文件系統HDFS、分佈式計算模式MapReduce和資源調度框架YARN。由於Hadoop的影響力較大,在大數據圈裡一直把“應用 on YARN”作為一個門檻條件,由YARN統一對資源管理和調度,實現應用和租戶的資源隔離。很多人把YARN當成是Hadoop圈裡面的K8S。接下向大家介紹應用程序如何部署到YARN上面去。

大數據:Yarn應用程序提交流程

整體交互圖

應用為了能夠跑在YARN上,需要編寫客戶端程序和ApplicationMaster程序。

客戶端應用程序,即上圖中的Client:

1.向Resource Manager發消息,獲取應用ID;

2.構造Application Master運行時所需要的上下文,包括應用ID、啟動的命令、依賴的JAR文件、需要的資源等;

3.向Resource Master提交Application Master。Resouce Master會選擇一個Node Manager啟動Application Master;

4.向Resource Master發消息,查詢Application Master的運行狀態或者殺掉應用程序;

Client可以通過與Resource Manager交互獲取Application Master的狀態,但是為了減輕Resource Manager的負擔,一般Client直接與Application Master通信,查詢其狀態。

ApplicationMaster程序:

1.向Resouce Manager註冊自己;

2.向Resource Manager申請資源,需要注意的時,申請資源的接口也是心跳的接口,所以Application Master在運行期間需要週期性地調用申請資源的接口;

3.Application Master收到分配的資源信息後,向Node Manager發送啟動容器的請求,Node Manager啟動容器;

4.Application Master週期性地向Node Manager發送消息,查詢容器運行狀態,當發現容易運行失敗時,可以嘗試重啟容器;

5.當任務運行完成後,Application Master向Node Manager發送停止容器的請求,釋放資源;

6.Application Master向Resource Manager發送應用完成的消息;

YARN應用整體的運行過程大體如上。可以看出,一個應用要跑在YARN上,需要做很多事情。目前開源社區為了方便應用上YARN,推出了YARN Service服務。這個服務幫用戶做了很多事情,包括上面提到的客戶端程序和Application Master,還有應用狀態的監控,故障後重新拉起等。YARN Service對外提供命令行工具和REST API。用戶編寫自己的應用程序描述文件,通過YARN Service提供的接口提交這份文件。YARN Service會按照描述文件分配指定的資源、啟動指定數據的應用實例。應用程序上YARN將會越來越容易。


分享到:


相關文章: