您好,登錄后才能下訂單哦!
如何理解Yarn的工作機(jī)制,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
我們知道 YARN 是 Hadoop 資源管理器,無論是 MapReduce 應(yīng)用還是 Spark 應(yīng)用,應(yīng)該都會(huì)用到 Yarn。
今天我們就來聊聊 Yarn 的組成以及工作流程:
先介紹幾個(gè)角色
ResourceManager
一個(gè)集群只有一個(gè) RM,它是 YARN 的總指揮,負(fù)責(zé)協(xié)調(diào)集群上的計(jì)算資源,它有以下兩個(gè)組件:
ApplicationsManager:這個(gè)不是 ApplicationMaster,注意區(qū)分。它會(huì)接受 Job 的提交請(qǐng)求,調(diào)度 Container 用于啟動(dòng) ApplicationMaster,以及負(fù)責(zé) ApplicationMaster 的失敗重啟。
Scheduler:調(diào)度器純粹為應(yīng)用程序分配資源,它不會(huì)監(jiān)控應(yīng)用的狀態(tài),這里的調(diào)度就是基于 Container 這個(gè)抽象的資源容器,包含內(nèi)存、CPU、磁盤、網(wǎng)絡(luò)等。
NodeManager
一個(gè)集群中有多個(gè) NodeManager,它負(fù)責(zé)啟動(dòng) Container,監(jiān)控 Container 的資源使用情況(cpu、內(nèi)存、磁盤、網(wǎng)絡(luò)),并將這些信息匯報(bào)給 RM。一個(gè) NodeManager 上可以有多個(gè) Container。
Container
Container 是一組硬件資源的抽象,包含 CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等,所有的 Job 都是在 Container 中運(yùn)行;
ApplicationMaster
與 RM 協(xié)商資源,并與 NodeManager 一起監(jiān)控任務(wù),ApplicationMaster 和 Job 一樣,都是運(yùn)行在 Container 中。
下面我們?cè)敿?xì)了解下一個(gè)任務(wù)是怎么提交到 Yarn 中運(yùn)行的。
第 1 步:Client 向 RM 發(fā)起任務(wù)請(qǐng)求:「RM,我要執(zhí)行一個(gè)任務(wù)」
第 2 步:RM 給 Client 返回 Application ID 等信息:「好的,給你分配一個(gè) Application ID」
第 3 步:Client 根據(jù)返回的信息,檢查作業(yè)的輸入輸出目錄是否正確、計(jì)算作業(yè)輸入分片是否正常,將運(yùn)行作業(yè)需要的資源(作業(yè) Jar 文件、配置文件、輸入分片)復(fù)制到以 Application ID 命名的 HDFS 目錄中。
第 4 步:Client 向 RM 正式提交作業(yè):「我都準(zhǔn)備好了,執(zhí)行任務(wù)吧」
第 5 步:RM 將請(qǐng)求信息傳遞給自己的小弟 Scheduler:「Scheduler 老弟,你來分配個(gè) Container」
第 6 步:Scheduler 分配 Container,用于啟動(dòng) ApplicationMaster:「好的,這個(gè) Container 就是 0 號(hào)選手」
第 7 步:ApplicationsManager 與指定的 NodeManager 通信,要求在 Container 中啟動(dòng) ApplicationMaster。
第 8 步:ApplicationMaster 初始化任務(wù)并向 RM 申請(qǐng)所需要的資源:「RM 大哥,給我資源運(yùn)行任務(wù)」
第 9 步:RM 返回 ApplicationMaster 申請(qǐng)的資源:「給你 1、2 兩個(gè) NodeManager」
第 10 步:ApplicationMaster 與對(duì)應(yīng)的 NodeManager 通信,申請(qǐng) Container 啟動(dòng)任務(wù)「NodeManager 大哥,給我啟動(dòng) Container 運(yùn)行這個(gè)任務(wù)」
第 11 步:Container 中的應(yīng)用程序會(huì)先將需要的計(jì)算資源從 HDFS 下載到本地,再啟動(dòng)任務(wù):「都給我跑起來」
第 12 步:運(yùn)行過程中,任務(wù)會(huì)將狀態(tài)和進(jìn)度報(bào)告給 ApplicationMaster,Client 會(huì)輪詢 ApplicationMaster 獲取狀態(tài)。
第 13 步:運(yùn)行完成后,Container 會(huì)注銷掉,也就是把資源歸還給系統(tǒng),ApplicationMaster 向 RM 注銷自己。
關(guān)于如何理解Yarn的工作機(jī)制問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。