溫馨提示×

溫馨提示×

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

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

什么是mapreduce編程以及原理是什么

發(fā)布時間:2021-10-15 15:25:45 來源:億速云 閱讀:95 作者:柒染 欄目:編程語言

這篇文章將為大家詳細講解有關什么是mapreduce編程以及原理是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

  相信關于Hadoop中MapReduce的相關文章會很多,這里只簡單介紹一下MapReduce的相關知識。

  Hadoop的MapReduce來源于Google公司的三篇論文中的MapReduce,其核心思想是“分而治之”。Map負責“分”,即把復雜的任務分解為若干個“簡單的任務”來并行處理??梢赃M行拆分的前提是這些小任務可以并行計算,彼此間幾乎沒有依賴關系。Reduce負責“合”,即對map階段的結果進行全局匯總。

  現(xiàn)階段MapReduce一般運行在Hadoop2.x版本的yarn資源平臺上,具體運行過程后面會有詳細說明。

  MapReduce編程規(guī)范

  MapReduce 的開發(fā)一共有八個步驟, 其中 Map 階段分為 2 個步驟,Shuffle 階段 4 個步驟,Reduce 階段分為 2 個步驟

  Map 階段 2 個步驟

  1)設置 InputFormat 類, 將數(shù)據(jù)切分為 Key-Value(K1和V1) 對, 輸入到第二步;

  2)自定義 Map 邏輯, 將第一步的結果轉換成另外的 Key-Value(K2和V2)對, 輸出結果;

  Shuffle 階段 4 個步驟

  3)對輸出的 Key-Value 對進行分區(qū);

  4)對不同分區(qū)的數(shù)據(jù)按照相同的 Key 排序;

  5)(可選) 對分組過的數(shù)據(jù)初步規(guī)約, 降低數(shù)據(jù)的網(wǎng)絡拷貝;

  6)對數(shù)據(jù)進行分組, 相同 Key 的 Value 放入一個集合中;

  Reduce 階段 2 個步驟

  7)對多個 Map 任務的結果進行排序以及合并, 編寫 Reduce 函數(shù)實現(xiàn)自己的邏輯, 對輸入的 Key-Value 進行處理, 轉為新的 Key-Value(K3和V3)輸出;

  8)設置 OutputFormat 處理并保存 Reduce 輸出的 Key-Value 數(shù)據(jù);

  yarn資源調度

  yarn是hadoop集群當中的資源管理系統(tǒng)模塊,從hadoop2.0開始引入yarn模塊,yarn可為各類計算框架提供資源的管理和調度,主要用于管理集群當中的資源(主要是服務器的各種硬件資源,包括CPU,內存,磁盤,網(wǎng)絡IO等)以及調度運行在yarn上面的各種任務。

  相比于hadoop1.x版本,yarn核心出發(fā)點是為了分離資源管理與作業(yè)監(jiān)控,實現(xiàn)分離的做法是擁有一個全局的資源管理ResourceManager(RM),以及每個應用程序對應一個的應用管理器ApplicationMaster(AM)。

  總結一句話就是說:yarn主要就是為了調度資源,管理任務。

  YARN總體上是Master/Slave結構,主要由ResourceManager、NodeManager、 ApplicationMaster和Container等幾個組件構成。

  ResourceManager(RM) 負責處理客戶端請求,對各NM上的資源進行統(tǒng)一管理和調度。給ApplicationMaster分配空閑的Container 運行并監(jiān)控其運行狀態(tài)。主要由兩個組件構成:調度器和應用程序管理器:

  調度器(Scheduler):調度器根據(jù)容量、隊列等限制條件,將系統(tǒng)中的資源分配給各個正在運行的應用程序。調度器僅根據(jù)各個應用程序的資源需求進行資源分配,而資源分配單位是Container。Shceduler不負責監(jiān)控或者跟蹤應用程序的狀態(tài)。總之,調度器根據(jù)應用程序的資源要求,以及集群機器的資源情況,為應用程序分配封裝在Container中的資源。

  應用程序管理器(Applications Manager):應用程序管理器負責管理整個系統(tǒng)中所有應用程序,包括應用程序提交、與調度器協(xié)商資源以啟動ApplicationMaster 、監(jiān)控ApplicationMaster運行狀態(tài)并在失敗時重新啟動等,跟蹤分給的Container的進度、狀態(tài)也是其職責。

  NodeManager (NM) NodeManager:NodeManager (NM) NodeManager 是每個節(jié)點上的資源和任務管理器。它會定時地向ResourceManager匯報本節(jié)點上的資源使用情況和各個Container的運行狀態(tài);同時會接收并處理來自ApplicationMaster 的Container 啟動/停止等請求。

  ApplicationMaster (AM): 用戶提交的應用程序均包含一個ApplicationMaster ,負責應用的監(jiān)控,跟蹤應用執(zhí)行狀態(tài),重啟失敗任務等。ApplicationMaster是應用框架,它負責向ResourceManager協(xié)調資源,并且與NodeManager協(xié)同工作完成Task的執(zhí)行和監(jiān)控。

  Container: Container是YARN中的資源抽象,它封裝了某個節(jié)點上的多維度資源,如內存、CPU、磁盤、網(wǎng)絡等,當ApplicationMaster向ResourceManager申請資源時,ResourceManager為ApplicationMaster 返回的資源便是用Container 表示的。

  yarn的架構和工作流程

  1. 客戶端通過命令(hadoop jar xxx.jar)提交上傳任務到主節(jié)點ResourceManager(RM)中的ApplicationManager進程;

  2. 主節(jié)點RM判斷集群狀態(tài),選擇一臺NodeManager(NM),開啟一塊資源Container,用來開啟AppMaster進程;

  3. AppMaster進程獲取RM接收的任務請求,進行任務分配;

  4. AppMaster根據(jù)任務情況向RM中的ResourceScheduler索要資源分配方案;

  5. AppMaster根據(jù)資源分配方案找到到各個NodeManager從節(jié)點;

  6. 在從節(jié)點上開啟資源Container,并運行任務Task;

  7. AppMaster獲取各個Task上傳的任務執(zhí)行進度和結果;

  8. AppMaster將任務執(zhí)行的結果返回給ApplicationManager。

關于什么是mapreduce編程以及原理是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節(jié)

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

AI