如何理解Yarn的工作機制,針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比祁陽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式祁陽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋祁陽地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
我們知道 YARN 是 Hadoop 資源管理器,無論是 MapReduce 應(yīng)用還是 Spark 應(yīng)用,應(yīng)該都會用到 Yarn。
今天我們就來聊聊 Yarn 的組成以及工作流程:
先介紹幾個角色
ResourceManager
一個集群只有一個 RM,它是 YARN 的總指揮,負(fù)責(zé)協(xié)調(diào)集群上的計算資源,它有以下兩個組件:
ApplicationsManager:這個不是 ApplicationMaster,注意區(qū)分。它會接受 Job 的提交請求,調(diào)度 Container 用于啟動 ApplicationMaster,以及負(fù)責(zé) ApplicationMaster 的失敗重啟。
Scheduler:調(diào)度器純粹為應(yīng)用程序分配資源,它不會監(jiān)控應(yīng)用的狀態(tài),這里的調(diào)度就是基于 Container 這個抽象的資源容器,包含內(nèi)存、CPU、磁盤、網(wǎng)絡(luò)等。
NodeManager
一個集群中有多個 NodeManager,它負(fù)責(zé)啟動 Container,監(jiān)控 Container 的資源使用情況(cpu、內(nèi)存、磁盤、網(wǎng)絡(luò)),并將這些信息匯報給 RM。一個 NodeManager 上可以有多個 Container。
Container
Container 是一組硬件資源的抽象,包含 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等,所有的 Job 都是在 Container 中運行;
ApplicationMaster
與 RM 協(xié)商資源,并與 NodeManager 一起監(jiān)控任務(wù),ApplicationMaster 和 Job 一樣,都是運行在 Container 中。
下面我們詳細(xì)了解下一個任務(wù)是怎么提交到 Yarn 中運行的。
第 1 步:Client 向 RM 發(fā)起任務(wù)請求:「RM,我要執(zhí)行一個任務(wù)」
第 2 步:RM 給 Client 返回 Application ID 等信息:「好的,給你分配一個 Application ID」
第 3 步:Client 根據(jù)返回的信息,檢查作業(yè)的輸入輸出目錄是否正確、計算作業(yè)輸入分片是否正常,將運行作業(yè)需要的資源(作業(yè) Jar 文件、配置文件、輸入分片)復(fù)制到以 Application ID 命名的 HDFS 目錄中。
第 4 步:Client 向 RM 正式提交作業(yè):「我都準(zhǔn)備好了,執(zhí)行任務(wù)吧」
第 5 步:RM 將請求信息傳遞給自己的小弟 Scheduler:「Scheduler 老弟,你來分配個 Container」
第 6 步:Scheduler 分配 Container,用于啟動 ApplicationMaster:「好的,這個 Container 就是 0 號選手」
第 7 步:ApplicationsManager 與指定的 NodeManager 通信,要求在 Container 中啟動 ApplicationMaster。
第 8 步:ApplicationMaster 初始化任務(wù)并向 RM 申請所需要的資源:「RM 大哥,給我資源運行任務(wù)」
第 9 步:RM 返回 ApplicationMaster 申請的資源:「給你 1、2 兩個 NodeManager」
第 10 步:ApplicationMaster 與對應(yīng)的 NodeManager 通信,申請 Container 啟動任務(wù)「NodeManager 大哥,給我啟動 Container 運行這個任務(wù)」
第 11 步:Container 中的應(yīng)用程序會先將需要的計算資源從 HDFS 下載到本地,再啟動任務(wù):「都給我跑起來」
第 12 步:運行過程中,任務(wù)會將狀態(tài)和進(jìn)度報告給 ApplicationMaster,Client 會輪詢 ApplicationMaster 獲取狀態(tài)。
第 13 步:運行完成后,Container 會注銷掉,也就是把資源歸還給系統(tǒng),ApplicationMaster 向 RM 注銷自己。
關(guān)于如何理解Yarn的工作機制問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。