tft每日頭條

 > 生活

 > 決定mapreduce性能的工作流程

決定mapreduce性能的工作流程

生活 更新时间:2024-09-04 11:38:49

MapReduce是分布式計算的鼻祖,雖然我們已經不需要再寫MR了,但是了解MR的底層邏輯,對解決各種分布式遇到的問題、調優,有極大的幫助。廢話不多說,OK,let's GO!

大數據工程師版

決定mapreduce性能的工作流程(架構師帶你細細的捋一遍MapReduce全流程)1

MapReduce流程分為4個步驟:

  1. input:從hdfs中讀取文件,數據讀取組件是TextInputFormat和LineRecordReader。
  2. mapper:根據input步驟讀取過來的數據,進行數據映射。之後進行混洗,混洗主要進行分區、排序和合并。
  3. reduce:混洗好的數據交給Reduce步驟進行計算。
  4. output:Reduce計算好的數據經過TextOutputFormat和LineRecordQriter組件,輸出到對應OutPutPath中。

大數據高級工程師版

決定mapreduce性能的工作流程(架構師帶你細細的捋一遍MapReduce全流程)2

MapReduce流程分為7個步驟:

  1. 數據讀取:從hdfs中讀取文件,數據讀取組件是TextInputFormat和LineRecordReader。
  2. 數據分片:調用Job.steInputFormaiClass()定義的InputFormat,将數據切分成小的Split。
  3. Mapper:每一個Split生成一個MapTask,對每個分片中的數據進行排序,并進行部分合并,刷寫到磁盤中。
  4. Shuffle:将每個MapTask中處理好的數據,重新排序後,進行分區,copy到Reduce的緩存中。其中可以配置數據壓縮、reduce節點數等參數。
  5. Reduce:将緩存中的數據進行進一步的排序和merge,形成一份文件,交給Reduce函數進行順序計算。
  6. 計算好的數據經過TextOutputFormat和LineRecordQriter組件,進行輸出。
  7. 最後根據OutPutPath輸出每個文件到對應的HDFS中。

架構師版

決定mapreduce性能的工作流程(架構師帶你細細的捋一遍MapReduce全流程)3

MapReduce一共有7個角色參與,分為4個大階段,7個小階段。分别是:

1、任務啟動階段

1.1、由Client端發起請求;

1.2、YarnRunner接受請求并申請資源;

1.3、ResourceManager檢索資源情況,分配資源路徑給YarnRunner;

1.4、YarnRunner進行分片,申請啟動MRAppMaster

1.5、ResourceManager根據分片和job等信息,選擇數據所在節點啟動MapTask(程序找數據),喚醒MRAppMaster

1.6、MRAppMaster啟動,持續監控和管理任務

1.7、MapTask啟動,開始幹活

2、Map階段

2.1數據讀取,每個task讀取自己節點上的數據。

2.2數據處理

2.2.1每個task對自己讀取到的數據進行split,分成更小的數據塊

2.2.2對每個split的數據進行map,提取key、value、con

2.2.3對數據進行分區,有條件建議自定義分區,可以解決數據傾斜的問題,對之後的reduce也有極大的優化

2.2.4數據進入環形緩沖區,以起始點為赤道,到達溢出比後,刷新赤道

2.2.5溢出的數據刷入sort進行排序

2.2.6排序好的數據放入spill,進行merge後有序寫入hdfs

2.3shuffle階段:廣義shuffle階段從map之後就開始,到調用reduce函數結束。這裡隻是将hdfs的數據刷入reduce的緩存區域。

3、reduce階段:

3.1Reduce啟動

3.1.1MRAppMaster監控到redeuce任務即将結束,開始申請啟動ReduceTask;RM接受申請,根據分區結果,啟動若幹ReduceTask

3.1.2ReduceTask啟動,把每個map結果中的不同分區的數據,shuffle數據到對應Reducetask所在節點的緩存

3.2數據處理

3.2.1在緩存中對每個sort進行merge(内存、緩存都有)

3.2.2将merge後的結果,重新進行spill,排序後,落到hdfs

3.2.3将所有小文件merge成一個大文件

3.4、Reduce階段

3.4.1調用Reduce函數,對排序好的file進行彙總

3.4.2将最終結果寫入到hdfs中

4任務結束階段

4.1MRAppMaster監控到每個Reduce節點的執行情況

4.2向上彙報,并申請注銷自己

4.3RM注銷MRAppMaster,并向上彙報

4.4YarnRunner返回任務執行完成信息

4.5客戶端接受信息,任務結束

作者:彭文華 大數據架構師 分享數據分析、大數據技術、數倉建設相關的技術、方法論、案例、解決方案。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved