<span id="35v3v"><th id="35v3v"></th></span>
<address id="35v3v"></address>

    <address id="35v3v"></address>
      <address id="35v3v"><listing id="35v3v"><meter id="35v3v"></meter></listing></address>
        <listing id="35v3v"><listing id="35v3v"></listing></listing>

        <listing id="35v3v"><listing id="35v3v"><menuitem id="35v3v"></menuitem></listing></listing>

        <noframes id="35v3v"><noframes id="35v3v">
        當前位置: 首頁 / 技術分享 / 正文
        YARN的Job提交流程

        2022-12-29

        資源 yarn 計算 容器 作業

          YARN是在做大數據開發的時候,最為常用的分布式計算中的資源調度框架。是Hadoop的核心組件之一。在Hadoop2.0的版本之前,MapReduce中集成了分布式計算的模塊和資源調度的模塊,這就使得分布式計算和資源調度之間的耦合度太高了,同時MapReduce的設計也會顯得非常的臃腫。在Hadoop2.0版本的時候,開發人員將MapReduce做了拆分,將分布式計算的模塊保留,將資源調度的模塊單獨的剝離出來,這就是YARN了。

          YARN最早期的設計是為了解耦,優化MapReduce。但是由于YARN的通用性足夠的優秀,以至于其他的分布式計算框架也都可以使用YARN來進行資源的調度?,F在很多的分布式計算框架,例如Spark、Flink等,雖然他們也都內置了資源調度的部分,但實際在使用中,依然會選擇使用YARN來進行資源的調度。

          那么在分布式計算中,我們將一個計算任務提交到YARN上進行運行的時候,YARN是如何去處理這個任務的呢?我們就以一個MapReduce的程序為例,來說明一下提交到YARN上之后,YARN都做了什么。

          在MapReduce的程序提交到YARN上運行的時候,有五個獨立的進程需要首先了解一下:

          ●YarnRunner: 用于提交作業的客戶端程序。

          ●ResourceManager: YARN資源管理器,負責協調集群上計算資源的分配。

          ●NodeManager: YARN節點資源管理器,負責啟動和監視集群中,單個節點上的計算容器(Container)。

          ●Application Master: 負責協調運行MapReduce作業的任務,它和任務都是在容器中運行的,這些容器由資源管理器分配,并由節點管理器進行管理。

          ●HDFS: 用于共享作業所需文件。

        1

          1 調用waitForCompletion方法每秒輪詢作業的進度,內部封裝了submit()方法,用于創建JobCommiter實例,并且調用其的submitJobInternal方法。提交成功后,如果有狀態改變,就會把進度報告到控制臺。錯誤也會報告到控制臺

          2 JobCommiter實例會向ResourceManager申請一個新應用ID,用于MapReduce作業ID。這期間JobCommiter也會進行檢查輸出路徑的情況,以及計算輸入分片。

          3 如果成功申請到ID,就會將運行作業所需要的資源(包括作業jar文件,配置文件和計算所得的輸入分片元數據文件)上傳到一個用ID命名的目錄下的HDFS上。此時副本個數默認是10.

          4 準備工作已經做好,再通知ResourceManager調用submitApplication方法提交作業。

          5 ResourceManager調用submitApplication方法后,會通知Yarn調度器(Scheduler),調度器分配一個容器,在節點管理器的管理下在容器中啟動 application master進程。

          6 application master的主類是MRAppMaster,其主要作用是初始化任務,并接受來自任務的進度和完成報告。

          7 然后從HDFS上接受資源,主要是split。然后為每一個split創建MapTask以及參數指定的ReduceTask,任務ID在此時分配

          8 然后Application Master會向資源管理器請求容器,首先為MapTask申請容器,然后再為ReduceTask申請容器。(5%)

          9 一旦ResourceManager中的調度器(Scheduler),為Task分配了一個特定節點上的容器,Application Master就會與NodeManager進行通信來啟動容器。

          10 運行任務是由YarnChild來執行的,運行任務前,先將資源本地化(jar文件,配置文件,緩存文件)

          11 然后開始運行MapTask或ReduceTask。

          12 當收到最后一個任務已經完成的通知后,application master會把作業狀態設置為success。然后Job輪詢時,知道成功完成,就會通知客戶端,并把統計信息輸出到控制臺

        分享: 更多

        上一篇:YARN的調度器

        下一篇:

        好程序員公眾號

        • · 剖析行業發展趨勢
        • · 匯聚企業項目源碼

        好程序員開班動態

        More+
        • HTML5大前端 <高端班>

          開班時間:2021-04-12(深圳)

          開班盛況

          開班時間:2021-05-17(北京)

          開班盛況
        • 大數據+人工智能 <高端班>

          開班時間:2021-03-22(杭州)

          開班盛況

          開班時間:2021-04-26(北京)

          開班盛況
        • JavaEE分布式開發 <高端班>

          開班時間:2021-05-10(北京)

          開班盛況

          開班時間:2021-02-22(北京)

          開班盛況
        • Python人工智能+數據分析 <高端班>

          開班時間:2021-07-12(北京)

          預約報名

          開班時間:2020-09-21(上海)

          開班盛況
        • 云計算開發 <高端班>

          開班時間:2021-07-12(北京)

          預約報名

          開班時間:2019-07-22(北京)

          開班盛況
        在線咨詢
        試聽
        入學教程
        立即報名

        Copyright 2011-2023 北京千鋒互聯科技有限公司 .All Right 京ICP備12003911號-5 京公網安備 11010802035720號

        黑人100部Av解禁片
        <span id="35v3v"><th id="35v3v"></th></span>
        <address id="35v3v"></address>

          <address id="35v3v"></address>
            <address id="35v3v"><listing id="35v3v"><meter id="35v3v"></meter></listing></address>
              <listing id="35v3v"><listing id="35v3v"></listing></listing>

              <listing id="35v3v"><listing id="35v3v"><menuitem id="35v3v"></menuitem></listing></listing>

              <noframes id="35v3v"><noframes id="35v3v">