乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Hadoop學(xué)習(xí)之路(二十四)YARN的資源調(diào)度

       HK123COM 2019-02-14

      目錄

       

      正文

      YARN

      1.1、YARN 概述 YARN(Yet Another Resource Negotiator)

        YARN 是一個資源調(diào)度平臺,負(fù)責(zé)為運(yùn)算程序提供服務(wù)器運(yùn)算資源,相當(dāng)于一個分布式的操 作系統(tǒng)平臺,而 MapReduce 等運(yùn)算程序則相當(dāng)于運(yùn)行于操作系統(tǒng)之上的應(yīng)用程序

        YARN 是 Hadoop2.x 版本中的一個新特性。它的出現(xiàn)其實(shí)是為了解決第一代 MapReduce 編程 框架的不足,提高集群環(huán)境下的資源利用率,這些資源包括內(nèi)存,磁盤,網(wǎng)絡(luò),IO等。Hadoop2.X 版本中重新設(shè)計(jì)的這個 YARN 集群,具有更好的擴(kuò)展性,可用性,可靠性,向后兼容性,以 及能支持除 MapReduce 以外的更多分布式計(jì)算程序

        1、YARN 并不清楚用戶提交的程序的運(yùn)行機(jī)制

        2、YARN 只提供運(yùn)算資源的調(diào)度(用戶程序向 YARN 申請資源,YARN 就負(fù)責(zé)分配資源)

        3、YARN 中的主管角色叫 ResourceManager

        4、YARN 中具體提供運(yùn)算資源的角色叫 NodeManager

        5、這樣一來,YARN 其實(shí)就與運(yùn)行的用戶程序完全解耦,就意味著 YARN 上可以運(yùn)行各種類 型的分布式運(yùn)算程序(MapReduce 只是其中的一種),比如 MapReduce、Storm 程序,Spark 程序,Tez ……

        6、所以,Spark、Storm 等運(yùn)算框架都可以整合在 YARN 上運(yùn)行,只要他們各自的框架中有 符合 YARN 規(guī)范的資源請求機(jī)制即可

        7、yarn 就成為一個通用的資源調(diào)度平臺,從此,企業(yè)中以前存在的各種運(yùn)算集群都可以整 合在一個物理集群上,提高資源利用率,方便數(shù)據(jù)共享

      1.2、原 MapReduce 框架的不足

        1、JobTracker 是集群事務(wù)的集中處理點(diǎn),存在單點(diǎn)故障

        2、JobTracker 需要完成的任務(wù)太多,既要維護(hù) job 的狀態(tài)又要維護(hù) job 的 task 的狀態(tài),造成 過多的資源消耗

        3、在 TaskTracker 端,用 Map/Reduce Task 作為資源的表示過于簡單,沒有考慮到 CPU、內(nèi) 存等資源情況,當(dāng)把兩個需要消耗大內(nèi)存的 Task 調(diào)度到一起,很容易出現(xiàn) OOM

        4、把資源強(qiáng)制劃分為 Map/Reduce Slot,當(dāng)只有 MapTask 時,TeduceSlot 不能用;當(dāng)只有 Reduce Task 時,MapSlot 不能用,容易造成資源利用不足。

        總結(jié)起來就是:

          1、擴(kuò)展性差

          2、可靠性低

          3、資源利用率低

          4、不支持多種計(jì)算框架

      1.3、新版 YARN 架構(gòu)的優(yōu)點(diǎn)

        YARN/MRv2 最基本的想法是將原 JobTracker 主要的資源管理和 Job 調(diào)度/監(jiān)視功能分開作為 兩個單獨(dú)的守護(hù)進(jìn)程。有一個全局的 ResourceManager(RM)和每個 Application 有一個 ApplicationMaster(AM),Application 相當(dāng)于 MapReduce Job 或者 DAG jobs。ResourceManager 和 NodeManager(NM)組成了基本的數(shù)據(jù)計(jì)算框架。ResourceManager 協(xié)調(diào)集群的資源利用, 任何 Client 或者運(yùn)行著的 applicatitonMaster 想要運(yùn)行 Job 或者 Task 都得向 RM 申請一定的資 源。ApplicatonMaster 是一個框架特殊的庫,對于 MapReduce 框架而言有它自己的 AM 實(shí)現(xiàn), 用戶也可以實(shí)現(xiàn)自己的 AM,在運(yùn)行的時候,AM 會與 NM 一起來啟動和監(jiān)視 Tasks。

      1.4、YARN 的重要概念

      1.4.1、ResourceManager

        ResourceManager 是基于應(yīng)用程序?qū)嘿Y源的需求進(jìn)行調(diào)度的 YARN 集群主控節(jié)點(diǎn),負(fù)責(zé) 協(xié)調(diào)和管理整個集群(所有 NodeManager)的資源,響應(yīng)用戶提交的不同類型應(yīng)用程序的 解析,調(diào)度,監(jiān)控等工作。ResourceManager 會為每一個 Application 啟動一個 MRAppMaster, 并且 MRAppMaster 分散在各個 NodeManager 節(jié)點(diǎn)

        它主要由兩個組件構(gòu)成:調(diào)度器(Scheduler)和應(yīng)用程序管理器(ApplicationsManager, ASM)

        YARN 集群的主節(jié)點(diǎn) ResourceManager 的職責(zé):

          1、處理客戶端請求

          2、啟動或監(jiān)控 MRAppMaster

          3、監(jiān)控 NodeManager

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

      1.4.2、NodeManager

        NodeManager 是 YARN 集群當(dāng)中真正資源的提供者,是真正執(zhí)行應(yīng)用程序的容器的提供者, 監(jiān)控應(yīng)用程序的資源使用情況(CPU,內(nèi)存,硬盤,網(wǎng)絡(luò)),并通過心跳向集群資源調(diào)度器 ResourceManager 進(jìn)行匯報(bào)以更新自己的健康狀態(tài)。同時其也會監(jiān)督 Container 的生命周期 管理,監(jiān)控每個 Container 的資源使用(內(nèi)存、CPU 等)情況,追蹤節(jié)點(diǎn)健康狀況,管理日 志和不同應(yīng)用程序用到的附屬服務(wù)(auxiliary service)。

        YARN 集群的從節(jié)點(diǎn) NodeManager 的職責(zé):

          1、管理單個節(jié)點(diǎn)上的資源

          2、處理來自 ResourceManager 的命令

          3、處理來自 MRAppMaster 的命令

      1.4.3、MRAppMaster

        MRAppMaster 對應(yīng)一個應(yīng)用程序,職責(zé)是:向資源調(diào)度器申請執(zhí)行任務(wù)的資源容器,運(yùn)行 任務(wù),監(jiān)控整個任務(wù)的執(zhí)行,跟蹤整個任務(wù)的狀態(tài),處理任務(wù)失敗以異常情況

      1.4.4、Container

        Container 容器是一個抽象出來的邏輯資源單位。容器是由 ResourceManager Scheduler 服務(wù) 動態(tài)分配的資源構(gòu)成,它包括了該節(jié)點(diǎn)上的一定量 CPU,內(nèi)存,磁盤,網(wǎng)絡(luò)等信息,MapReduce 程序的所有 Task 都是在一個容器里執(zhí)行完成的,容器的大小是可以動態(tài)調(diào)整的

      1.4.5、ASM

        應(yīng)用程序管理器 ASM 負(fù)責(zé)管理整個系統(tǒng)中所有應(yīng)用程序,包括應(yīng)用程序提交、與調(diào)度器協(xié) 商資源以啟動 MRAppMaster、監(jiān)控 MRAppMaster 運(yùn)行狀態(tài)并在失敗時重新啟動它等

      1.4.6、Scheduler

        調(diào)度器根據(jù)應(yīng)用程序的資源需求進(jìn)行資源分配,不參與應(yīng)用程序具體的執(zhí)行和監(jiān)控等工作 資源分配的單位就是 Container,調(diào)度器是一個可插拔的組件,用戶可以根據(jù)自己的需求實(shí) 現(xiàn)自己的調(diào)度器。YARN 本身為我們提供了多種直接可用的調(diào)度器,比如 FIFO,F(xiàn)air Scheduler 和 Capacity Scheduler 等

      1.5、YARN 架構(gòu)及各角色職責(zé)

      1.6、YARN 作業(yè)執(zhí)行流程

        YARN 作業(yè)執(zhí)行流程:

          1、用戶向 YARN 中提交應(yīng)用程序,其中包括 MRAppMaster 程序,啟動 MRAppMaster 的命令, 用戶程序等。

          2、ResourceManager 為該程序分配第一個 Container,并與對應(yīng)的 NodeManager 通訊,要求 它在這個 Container 中啟動應(yīng)用程序 MRAppMaster。

          3、MRAppMaster 首先向 ResourceManager 注冊,這樣用戶可以直接通過 ResourceManager 查看應(yīng)用程序的運(yùn)行狀態(tài),然后將為各個任務(wù)申請資源,并監(jiān)控它的運(yùn)行狀態(tài),直到運(yùn)行結(jié)束,重復(fù) 4 到 7 的步驟。

          4、MRAppMaster 采用輪詢的方式通過 RPC 協(xié)議向 ResourceManager 申請和領(lǐng)取資源。

          5、一旦 MRAppMaster 申請到資源后,便與對應(yīng)的 NodeManager 通訊,要求它啟動任務(wù)。

          6、NodeManager 為任務(wù)設(shè)置好運(yùn)行環(huán)境(包括環(huán)境變量、JAR 包、二進(jìn)制程序等)后,將 任務(wù)啟動命令寫到一個腳本中,并通過運(yùn)行該腳本啟動任務(wù)。

          7、各個任務(wù)通過某個 RPC 協(xié)議向 MRAppMaster 匯報(bào)自己的狀態(tài)和進(jìn)度,以讓 MRAppMaster 隨時掌握各個任務(wù)的運(yùn)行狀態(tài),從而可以在任務(wù)敗的時候重新啟動任務(wù)。

          8、應(yīng)用程序運(yùn)行完成后,MRAppMaster 向 ResourceManager 注銷并關(guān)閉自己。

       

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多