MapReduce開發運行的精簡原理(mapreduce開發流程)

作者:黑馬程序員
鏈接:https://zhuanlan.zhihu.com/p/81237437
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

簡單介紹

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

Hadoop的MapReduce來源于Google公司的三篇論文中的MapReduce,其核心思想是“分而治之”

Map負責“分”,即把復雜的任務分解為若干個“簡單的任務”來并行處理。可以進行拆分的前提是這些小任務可以并行計算,彼此間幾乎沒有依賴關系。

Reduce負責“合”,即對map階段的結果進行全局匯總。

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

MapReduce編程規范

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

Map 階段 2 個步驟

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

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

Shuffle 階段 4 個步驟

3)對輸出的 Key-Value 對進行分區

4)對不同分區的數據按照相同的 Key 排序

5)(可選) 對分組過的數據初步規約, 降低數據的網絡拷貝

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

Reduce 階段 2 個步驟

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

8)設置 OutputFormat 處理并保存 Reduce 輸出的 Key-Value 數據

MapReduce開發運行的精簡原理(mapreduce開發流程)

MapReduce的步驟圖

yarn資源調度

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

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

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

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

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

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

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

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

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

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

yarn的架構和工作流程

MapReduce開發運行的精簡原理(mapreduce開發流程)

步驟分析:

  1. 客戶端通過命令(hadoop jar xxx.jar)提交上傳任務到主節點ResourceManager(RM)中的ApplicationManager進程
  2. 主節點RM判斷集群狀態,選擇一臺NodeManager(NM),開啟一塊資源Container,用來開啟AppMaster進程
  3. AppMaster進程獲取RM接收的任務請求,進行任務分配
  4. AppMaster根據任務情況向RM中的ResourceScheduler索要資源分配方案
  5. AppMaster根據資源分配方案找到到各個NodeManager從節點
  6. 在從節點上開啟資源Container,并運行任務Task
  7. AppMaster獲取各個Task上傳的任務執行進度和結果
  8. AppMaster將任務執行的結果返回給ApplicationManager

版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

(0)
上一篇 2023年5月14日 上午10:28
下一篇 2023年5月14日 上午10:44

相關推薦

免费人成视频在线观看网站| 国产999精品久久久久久| **真实毛片免费观看| 国产精品一区12P| www.seyu.av| 在线观看日韩一区| eeuss影院www在线观看免费| 国产香蕉精品视频| 91香蕉视频下载导航| 国产福利一区二区三区在线视频| 久久丁香五月天综合网| 成人欧美一区二区三区的电影| 亚洲av日韩av综合| 欧美成a人免费观看| 亚洲精品tv久久久久久久久久 | 视频一区精品自拍| 国产卡一卡二卡三卡四| 翁熄止痒婉艳隔壁老李头| 国产欧美日韩精品a在线观看 | 亚洲欧洲日产国码无码久久99| 热99re久久精品香蕉| 啄木乌欧美一区二区三区| 色偷偷亚洲男人天堂| 国产在线精彩视频| 美女把腿扒开让男人桶免费| 同性spank男男免费网站| 精品国产三级在线观看| 内射一区二区精品视频在线观看| 精品久久久久久久久中文字幕| 国产小视频福利| 黄a大片av永久免费| 国产精品免费看久久久久| 黄页网站在线免费观看| 国产国产成人精品久久| 精品国产亚洲一区二区三区| 免费无码国产V片在线观看| 欧美精品手机在线| 亚洲视频免费在线看| 波多野结衣在线中文| 人妻少妇看a偷人无码精品| 欧美午夜理伦三级在线观看|