<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          一起揭開 YARN 的神秘面紗

          共 1955字,需瀏覽 4分鐘

           ·

          2021-10-10 20:43


          我們知道MapReduce1.0,是把計算框架和資源調(diào)度框架都弄在一起了,所以Master端的JobTracker會大包大攬去執(zhí)行任務(wù),存在很多問題,比如資源分配不均、單點(diǎn)故障會導(dǎo)致整個集群不可用、沒辦法集成多個不同的計算框架(比如Spark、Storm)。因此,YARN的設(shè)計思路就是把原先JobTracker的資源管理調(diào)度和監(jiān)控的功能剝離出來,在YARN中實(shí)現(xiàn),而MapReduce2.0僅僅就是做計算框架的事情。同時,YARN還可以兼容搭建多個不同的計算框架,實(shí)現(xiàn)同一個集群內(nèi)資源和數(shù)據(jù)的共享。

          YARN系統(tǒng)架構(gòu)中有3個核心組件:ResourceManager、ApplicationMaster和NodeManager。

          1. ResourceManager

          一個全局的資源管理器,負(fù)責(zé)整個系統(tǒng)的資源調(diào)度,包含兩個核心組件:Scheduler(調(diào)度器)和Application Manager(應(yīng)用程序管理器)

          • Scheduler:接收來自ApplicationMaster的應(yīng)用資源請求,把集群中的資源以 Container(容器)的方式分配下去。其中,Container作為動態(tài)資源分配單位,每個容器中會封裝一定數(shù)量的CPU、內(nèi)存資源;
          • Application Manager:負(fù)責(zé)系統(tǒng)中所有應(yīng)用程序的管理,主要包括了應(yīng)用程序的提交、與Scheduler的資源協(xié)商、啟動ApplicationMaster、監(jiān)控ApplicationMaster以及失敗重啟。

          這個組件主要實(shí)現(xiàn):

          1)處理客戶端請求

          2)啟動/監(jiān)控 ApplicationMaster

          3)監(jiān)控 NodeManager

          4)資源分配與調(diào)度

          2. ApplicationMaster

          主要負(fù)責(zé)任務(wù)調(diào)度、監(jiān)控以及容錯機(jī)制,為應(yīng)用程序向ResourceManager申請,并在內(nèi)部進(jìn)行分配。

          這個組件主要實(shí)現(xiàn):

          1)ResourceManager接收來自用戶的作業(yè)需求,按照J(rèn)ob的上下文信息啟動調(diào)度,為用戶作業(yè)啟動一個ApplicationMaster。

          2)ApplicationMaster會根據(jù)用戶作業(yè),與ResourceManager協(xié)商獲取資源,以容器形式從NodeManager請求獲得。接著ApplicationMaster會將獲取的資源,進(jìn)一步在內(nèi)部分配給各個task任務(wù)。

          3)與NodeManager保持交互通信(程序狀態(tài)、資源使用情況、進(jìn)度等等)

          4)定時向ResourceManager發(fā)送“心跳”信息,報告資源使用情況和進(jìn)度

          5)當(dāng)作業(yè)完成時,ApplicationMaster向ResourceManager注銷容器,發(fā)送請求到NodeManager去執(zhí)行注銷

          3. NodeManager

          駐留在一個YARN集群中每個節(jié)點(diǎn)上的代理。負(fù)責(zé)單個節(jié)點(diǎn)上的資源管理,處理來自于 ResourceManager和ApplicationMaster的命令。

          這個組件主要實(shí)現(xiàn):

          1)負(fù)責(zé)容器生命周期管理

          2)監(jiān)控每個容器的資源(CPU/內(nèi)存)使用情況

          3)以“心跳”方式與ResourceManager保持通信

          4)向ResourceManager匯報作業(yè)的資源使用情況以及每個容器的運(yùn)行狀態(tài)

          5)跟蹤節(jié)點(diǎn)的健康狀態(tài)

          6)接收來自ApplicationMaster的啟動/停止容器的請求

          4. YARN工作流程

          YARN-打橫看高清圖


          1、用戶編寫客戶端應(yīng)用程序向YARN提交;

          2、YARN中的ResourceManager負(fù)責(zé)接收和處理來自客戶端的請求,為應(yīng)用分配一個容器,在容器中啟動一個ApplicationMaster,并且在ResourceManager內(nèi)注冊;

          3、ApplicationMaster采用輪詢的方式向ResourceManager申請資源(Resource Scheduler);

          4、ResourceManager以容器的形式向提出申請的ApplicationMaster分配資源;

          5、在容器中啟動任務(wù)(資源的二次分配);

          6、各個任務(wù)向ApplicationMaster匯報自己的狀態(tài)和進(jìn)度;

          7、應(yīng)用程序運(yùn)行完成后,ApplicationMaster向ResourceManager的Application Manager注銷并關(guān)閉自己,釋放資源。


          Reference

          1. 林子雨-大數(shù)據(jù)技術(shù)原理與應(yīng)用- B站視頻 https://www.bilibili.com/video/BV1EE411x7wk?p=68


          瀏覽 46
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  九哥操逼视频网 | 一区二区三区精品视频在线观看 | 久久一级视频 | 免费性爱AV | 香蕉伊人网 |