<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 資源模型和container yarn將服務資源進行抽象的封裝,它**使用container對象代表申請資源的基本單元**. 這些資源包括資源名稱(服務名稱,機架等),內存和CPU yarn通過container機制將服務器資源進行了隔離. 每個ApplicationMaster向ResourceManager申請資源,當ApplicationMaster向ResourceManager申請資源時,ResourceManger返回的資源使用Container的個數來表示,比如一個spark計算任務需要5個container資源 # ResourceManager ResourceManager是一個全局的資源管理器,負責整個系統的資源管理和分配以保證整個集群的高效運行. 它會根據容量,隊列等限制條件(如每個隊列分配一定的資源,最多執行一定數量的作業等),將系統的資源分配給各個正在運行的應用程序. **只負責根據各個應用程序的資源請求進行資源分配,不參與任何與具體應用程序相關的工作**,比如不負責監控或者跟蹤應用的執行狀態等,也不負責重新啟動因應用執行失敗或硬件故障而產生的失敗任務,這些均交由應用程序相關的ApplicationMaster完成. 資源分配管理單位用的是我們剛才介紹過的container對象. 此外,ResourceManager還支持一個可插拔的調度器插件來支持多種資源調度策略,比如使用公平調度或者容量調度 # ApplicationMaster **每個想要運行在YARN上的應用都必須有一個相應的ApplicationMaster實現** **應用將內部的任務調度邏輯和監控都交由它們自己的ApplicationMaster實現類來處理**. ApplicationMaster是YARN的一個創新設計,YARN通過這種機制將自己打造成了一個擴展性極強的通用資源調度框架,因為他允許用戶開發自己的ApplicationMaster實現 ApplicationMaster進程在運行的過程中主要負責與ResourceManager進行通信,以申請執行任務時所需要的資源,在申請到資源后再進一步執行自身內部的調度任務. 同時,ApplicationMaster也負責監控自己運行的內部任務狀態,在任務失敗的時候重新為任務申請相應資源并重啟任務 ApplicationMaster通常作為一個應用的主進程,主要用來扮演拆分子任務,匯總結果數據在這類的總體調度,比如spark的Driver進程.而真正的執行程序業務邏輯的進程是在NodeManager進程上執行的 # NodeManager NodeManager是每個服務器節點上資源管理器,負責管理自己所處服務器Containers的整體生命周期. 在yarn上運行的**應用最終的邏輯執行程序**(比如spark的task,mapreduce的job)都會在NodeManager的Container中運行,可以說NodeManager是yarn的計算節點的代理,**因為ResourceManager只會將任務分配到啟動了NodeManager進程的服務器** 當NodeManager進程啟動的時候,它會向ResourceManager進行注冊,并定時匯報自己所在服務器的資源使用情況和container運行狀態,同時它也接受并處理來自ApplicationMaster的Container啟動和停止等各種請求 # 單一集群架構 **ResourceManager,NodeManager和Container組件都不關心具體的應用程序或任務的類型,只有ApplicationMaster才是應用類型相關的** Yarn通過使用開放ApplicationMaster的集成方式,允許第三方應用框架便捷的和YARN進行集成. 這才有了像MapReduce on Yarn, Storm on YARN, Spark on Yarn和Tez on Yarn等眾多第三方應用集成方案出現 通過這種資源共享的單一集群架構,可以實現服務器資源真正的共享使用,以達到降低技術集成成本和增強資源整體利用率的目的 # 工作流程 1. 用戶向Yarn提交應用程序 2. ResourceManager為該應用程序找到一個可用的NodeManager并分配第一個Container.然后在這個Container中啟動應用程序的ApplicationMaster 3. ApplicationMaster向ResourceManager進行注冊,這樣用戶就可以通過ResourceManager查看應用程序的運行狀態并對任務進行監控 4. ApplicationMaster采用輪詢的方式通過RPC協議向ResourceManager申請和領取資源 5. ApplicationMaster申請到資源后與對應的NodeManager通信,要求它啟動Container并為任務設置好運行環境 6. 應用程序的任務開始在啟動的Container中運行,各個任務向ApplicationMaster匯報自己的狀態和進度,以便ApplicationMaster隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啟動 7. 應用程序在運行的過程中,客戶端通過輪詢的方式主動與ApplicationMaster通信以獲得應用的運行狀態,執行進度等信息 8. 應用程序運行完成后,ApplicationMaster向ResourceManager注銷并關閉自己 ![](https://box.kancloud.cn/2df50a3d022b12e8d3a38c29276f8087_1749x880.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看