91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MapReduce2框架的原理是什么

發布時間:2023-05-05 15:26:22 來源:億速云 閱讀:126 作者:iii 欄目:開發技術

這篇文章主要介紹“MapReduce2框架的原理是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“MapReduce2框架的原理是什么”文章能幫助大家解決問題。

    1 MapReduce2產生的原因

    1.1 在hadoop1.X的時代,MapReduce做了很多的事情,其核心是JobTracker。

    1.2 初探MapReduce1架構

    MapReduce2框架的原理是什么

    • 首先客戶端要編寫好mapreduce程序,然后提交作業也就是job,job的信息會發送到JobTracker上,并為該job分配一個ID值,接下來做檢查操作,確認輸入目錄是否存在,如果不存在,則會拋錯,如果存在繼續檢查輸出目錄是否存在,如果存在則會拋錯,否則繼續運行;當檢查工作都做好了JobTracker就會配置Job需要的資源了。

    • JobTracker: 主要負責資源監控管理和作業調度

      • (a)監控所有TaskTracker 與job的健康狀況,一旦發現失敗,就將相應的任務轉移到其他節點;

      • (b)同時JobTracker會跟蹤任務的執行進度、資源使用量等信息,并將這些信息告訴任務調度器,而調度器會在資源出現空閑時,選擇合適的任務使用這些資源。

    • TaskTracker:是JobTracker與Task之前的橋梁

      • (a)從JobTracker接收并執行各種命令:運行任務、提交任務、Kill任務、重新初始化任務;

      • (b)周期性地通過心跳機制,將節點健康情況和資源使用情況、各個任務的進度和狀態等匯報給JobTracker。

    • Task Scheduler: 任務調度器(默認FIFO,先按照作業的優先級高低,再按照到達時間的先后選擇被執行的作業)

    1.3MapReduce1缺陷

    • Hadoop1.x的MapReduce框架的主要局限:

      • (1)JobTracker 是 Map-reduce 的集中處理點,存在單點故障,可靠性差;

      • (2)JobTracker 完成了太多的任務,造成了過多的資源消耗,當 map-reduce job 非常多的時候,會造成很大的內存開銷,潛在來說,也增加了 JobTracker 失效的風險,這也是業界普遍總結出老 Hadoop 的 Map-Reduce 只能支持 4000 節點主機的上限,擴展性能差。

      • (3)可預測的延遲:這是用戶非常關心的。小作業應該盡可能快得被調度,而當前基于TaskTracker->JobTracker ping(heartbeat)的通信方式代價和延遲過大,比較好的方式是JobTracker->TaskTracker ping, 這樣JobTracker可以主動掃描有作業運行的TaskTracker。

    面對上訴一系列問題mr1已經不能滿足我們的需求,因此在hadoop2.x中MapReduce2應運而生,下面我們一起學習MapReduce2。

    2 MapReduce2架構設計

    MapReduce2框架的原理是什么

    2.1 官網初析MapReduce2

    • 從官網上我們可以看到,在Apache Hadoop 2.x中,我們將資源管理和作業調度功能分解為Apache Hadoop YARN來進行管理,它一種通用的分布式應用程序管理框架,而Apache Hadoop MapReduce(又名MRv2)是一個純粹的分布式計算框架。官網地址

    • 之前的MapReduce運行時(又名MRv1)已經被重用,沒有進行較大的變化。因此,MRv2能夠確保與MRv1應用的令人滿意的兼容性。但是,由于一些改進和代碼重構,一些API已經向后兼容。

    • 可以看出不同的是資源管理和作業管理系統,MRv1中資源管理和作業管理均是由JobTracker實現的,集兩個功能于一身,而在MRv2中,將這兩部分分開了。

    MRv2最基本的設計思想是將JobTracker的兩個主要功能,即資源管理和作業調度/監控分成兩個獨立的進程。在該解決方案中包含兩個組件:全局的ResourceManager(RM)和與每個應用相關的ApplicationMaster(AM)。這里的“應用”指一個單獨的MapReduce作業。RM和與NodeManager(NM,每個節點一個)共同組成整個數據計算框架。RM是系統中將資源分配給各個應用的最終決策者。AM實際上是一個具體的框架庫,它的任務是【與RM協商獲取應用所需資源】和【與NM合作,以完成執行和監控task的任務】。

    2.2 MapReduce2組成部分

    • ResourceManager(RM)包含兩個主要的組件:定時調用器(Scheduler)以及應用管理器(ApplicationManager)

      • (1)調度器(Scheduler):根據容量,隊列等限制條件,將系統中的資源分配給各個正在運行的應用。這里的調度器是一個“純調度器”,因為它不再負責監控或者跟蹤應用的執行狀態等,此外,他也不負責重新啟動因應用執行失敗或者硬件故障而產生的失敗任務。調度器僅根據各個應用的資源需求進行調度,這是通過抽象概念“資源容器”完成的,資源容器(Resource Container)將內存,CPU,磁盤,網絡等資源封裝在一起,從而限定每個任務使用的資源量。總而言之,定時調度器負責向應用程序分配資源,它不做監控以及應用程序的狀態跟蹤,并且它不保證會重啟由于應用程序本身或硬件出錯而執行失敗的應用程序。

      • (2)應用管理器(ApplicationsManager,ASM):ASM主要負責接收作業,協商獲取第一個容器用于執行AM和提供重啟失敗AM container的服務。

    • NodeManager:NM是每個節點上的框架代理,主要負責啟動應用所需的容器,監控資源(內存,CPU,磁盤,網絡等)的使用情況并將之匯報給調度器(Scheduler)。

    • ApplicationMaster:每個應用程序的ApplicationMaster負責從Scheduler申請資源,以及跟蹤這些資源的使用情況以及任務進度的監控。

    • Container:是YARN中資源的抽象,它將內存、CPU、磁盤、網絡等資源封裝在一起。當AM向RM申請資源時,RM為AM返回的資源便是用Container表示的。

    3 MapReduce2提交應用程序的過程分析

    • 在作業的提交階段,client向RM提交一個job,這時RM會進行檢查,如果沒有問題,會返回作業文件提交的路徑和jod id;client向HDFS上傳文件,準備就緒后請求RM運行作業;

    • 作業初始化階段,用戶將應用程序提交到ResourceManager后,RM為該作業分配第一個Container,并與對應的NM通信,在Container中啟動作業的MRAppMaster;

    • MRAppMaster首先向ResourceManager注冊,這樣用戶可以直接通過ResourceManage查看應用程序的運行狀態,然后它將為各個任務申請資源,并監控它的運行狀態;

    • MRAppMaster采用輪詢的方式式通過RPC協議向RM申請任務所需資源;

    • 一旦MRAppMaster申請到資源后,便與對應的NodeManager通信,要求它啟動任務;

    • NodeManager為任務設置好運行環境(包括環境變量、JAR包、二進制程序等)后,將任務啟動命令寫到一個腳本中,并通過運行該腳本啟動任務;

    • 各個任務通過某個RPC協議向MRAppMaster匯報自己的狀態和進度,以讓MRAppMaster隨時掌握各個任務的運行狀態,從而可以在任務失敗時重新啟動任務。在應用程序運行過程中,用戶可隨時通過RPC向MRAppMaster查詢應用程序的當前運行狀態;

    • 應用程序運行完成后,ApplicationMaster向ResourceManager注銷并關閉自己。

    當用戶向YARN中提交一個應用程序后,YARN將分兩個階段運行該應用程序:

    a. 第一個階段是啟動ApplicationMaster;
    b. 第二個階段是由ApplicationMaster創建應用程序,為它申請資源,并監控它的整個運行過程,直到運行完

    關于“MapReduce2框架的原理是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    德令哈市| 冕宁县| 禹州市| 开化县| 山西省| 苗栗县| 垫江县| 巨鹿县| 黎平县| 凭祥市| 宜黄县| 武冈市| 乐东| 嫩江县| 古田县| 蛟河市| 秭归县| 搜索| 安国市| 怀仁县| 北安市| 霍州市| 慈溪市| 枞阳县| 临江市| 昌平区| 凤翔县| 嘉禾县| 高平市| 沐川县| 赣榆县| 奎屯市| 进贤县| 洛隆县| 长乐市| 绥阳县| 芜湖市| 贡嘎县| 新田县| 射洪县| 康乐县|