此架構(gòu)會(huì)有以下問題:
總的來說就是單點(diǎn)問題和資源利用率問題
YARN就是將 JobTracker 的職責(zé)進(jìn)行拆分,將資源管理和任務(wù)調(diào)度監(jiān)控拆分成獨(dú)立的進(jìn)程:一個(gè)全局的資源管理和一個(gè)每個(gè)作業(yè)的管理(ApplicationMaster) ResourceManager 和 NodeManager 提供了計(jì)算資源的分配和管理,而 ApplicationMaster 則完成應(yīng)用程序的運(yùn)行
YARN架構(gòu)下形成了一個(gè)通用的資源管理平臺(tái)和一個(gè)通用的應(yīng)用計(jì)算平臺(tái),避免了舊架構(gòu)的單點(diǎn)問題和資源利用率問題,同時(shí)也讓在其上運(yùn)行的應(yīng)用不再局限于 MapReduce 形式
1. Job submission
從ResourceManager 中獲取一個(gè)Application ID 檢查作業(yè)輸出配置,計(jì)算輸入分片 拷貝作業(yè)資源(job jar、配置文件、分片信息)到 HDFS,以便后面任務(wù)的執(zhí)行
2. Job initialization
ResourceManager 將作業(yè)遞交給 Scheduler(有很多調(diào)度算法,一般是根據(jù)優(yōu)先級(jí))Scheduler 為作業(yè)分配一個(gè) Container,ResourceManager 就加載一個(gè) application master process 并交給 NodeManager。
管理 ApplicationMaster 主要是創(chuàng)建一系列的監(jiān)控進(jìn)程來跟蹤作業(yè)的進(jìn)度,同時(shí)獲取輸入分片,為每一個(gè)分片創(chuàng)建一個(gè) Map task 和相應(yīng)的 reduce task Application Master 還決定如何運(yùn)行作業(yè),如果作業(yè)很?。膳渲茫瑒t直接在同一個(gè) JVM 下運(yùn)行
3. Task assignment
ApplicationMaster 向 Resource Manager 申請資源(一個(gè)個(gè)的Container,指定任務(wù)分配的資源要求)一般是根據(jù) data locality 來分配資源
4. Task execution
ApplicationMaster 根據(jù) ResourceManager 的分配情況,在對應(yīng)的 NodeManager 中啟動(dòng) Container 從 HDFS 中讀取任務(wù)所需資源(job jar,配置文件等),然后執(zhí)行該任務(wù)
5. Progress and status update
定時(shí)將任務(wù)的進(jìn)度和狀態(tài)報(bào)告給 ApplicationMaster Client 定時(shí)向 ApplicationMaster 獲取整個(gè)任務(wù)的進(jìn)度和狀態(tài)
6. Job completion
Client定時(shí)檢查整個(gè)作業(yè)是否完成 作業(yè)完成后,會(huì)清空臨時(shí)文件、目錄等
更多建議: