好程式設計師大資料培訓分享MapReduce理解
好程式設計師 大資料 培訓分享MapReduce 理解,本篇文章 就給大家分享一下大資料MapReduce 理解。
為什麼需要MapReduce? 因為 MapReduce 可以“分而治之”,將計算大資料的複雜任務分解成若干簡單小任務。“簡單”的意思是:計算規模變小、就近節點計算資料、並行任務。
一句話版本:
輸入檔案 -> 【 map 任務】 split --> map --> partition --> sort --> combine( 寫記憶體緩衝區 ) ~~ spill( 獨立執行緒寫磁碟 ) --> merge --> map 輸出結果 ~~~ 【 reduce 任務】 copy --> merge -->reduce --> 輸出檔案
M 個 map 任務開始並處理分配到的多個 split 資料。
Partition :
作用:將map 階段的輸出分配給相應的 reducer , partition 數 == reducer 數
預設是HashPartitioner 。之後將輸出資料寫入記憶體緩衝區 memory buff 。
spill:
當memory buff 的資料到達一定閾值時,預設 80% ,將出發溢寫 spill ,先鎖住這 80% 的記憶體,將這部分資料寫進本地磁碟,儲存為一個臨時檔案。此階段由單獨執行緒控制,與寫 memory buff 執行緒同步進行。
sort & combine :
在spill 寫檔案之前,要對 80% 的資料 ( 格式 ) 進行排序,先 partition 後 key ,保證每個分割槽內 key 有序,如果 job 設定了 combine ,則再進行 combine 操作,將 這樣的資料合併成,最終輸出一個 spill 檔案。
多個spill 檔案透過多路歸併排序,再合併成一個檔案,這是 map 階段的最終輸出。同時還有一個索引檔案 (file.out.index) ,記錄每個 partition 的起始位置、長度。
reduce 階段:
copy :多執行緒併發從各個 mapper 上拉屬於本 reducer 的資料塊 ( 根據 partition) ,獲取後存入記憶體緩衝區,使用率達到閾值時寫入磁碟。
merge :一直啟動,由於不同 map 的輸出檔案是沒有 sort 的,因此在寫入磁碟前需要 merge ,知道沒有新的 map 端資料寫入。最後啟動 merge 對所有磁碟中的資料歸併排序,形成一個最終檔案作為 reducer 輸入檔案,至此 shuffle 階段結束。
reduce :和 combine 類似,都是將相同的 key 合併計算,最終結果寫到 HDFS 上。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2737300/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 好程式設計師大資料培訓教你快速學習MapReduce程式設計師大資料
- 好程式設計師大資料培訓分享HDFS讀流程程式設計師大資料
- 好程式設計師大資料培訓分享spark之Scala程式設計師大資料Spark
- 好程式設計師大資料培訓分享大資料的應用程式設計師大資料
- 好程式設計師大資料培訓分享大資料還學嗎?程式設計師大資料
- 好程式設計師大資料培訓分享mysql資料型別程式設計師大資料MySql資料型別
- 好程式設計師大資料培訓分享:Hadoop叢集同步程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享大資料的影響一程式設計師大資料
- 好程式設計師大資料培訓分享大資料兩大核心技術程式設計師大資料
- 好程式設計師大資料培訓分享大資料就業方向有哪些?程式設計師大資料就業
- 好程式設計師大資料培訓分享大資料面試寶典三程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典四程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典六程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典一程式設計師大資料面試
- 好程式設計師大資料培訓分享大資料面試寶典二程式設計師大資料面試
- 好程式設計師大資料培訓分享Spark技術總結程式設計師大資料Spark
- 好程式設計師大資料培訓分享Hadoop的shuffle過程程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享Hadoop分散式叢集程式設計師大資料Hadoop分散式
- 好程式設計師大資料培訓分享MySQL8.0新特性程式設計師大資料MySql
- 好程式設計師大資料培訓分享Hadoop入門進階程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享Hadoop怎樣處理資料?程式設計師大資料Hadoop
- 好程式設計師大資料學習路線分享MAPREDUCE程式設計師大資料
- 好程式設計師大資料培訓分享之Ambari和ClouderaManager對比程式設計師大資料Cloud
- 好程式設計師大資料培訓分享之hive儲存過程程式設計師大資料Hive儲存過程
- 好程式設計師大資料培訓分享HBase Filter過濾器概述程式設計師大資料Filter過濾器
- 好程式設計師大資料培訓分享如何區分Hive與HBase程式設計師大資料Hive
- 好程式設計師大資料培訓分享Hadoop技術優缺點程式設計師大資料Hadoop
- 好程式設計師大資料培訓分享Spark需要什麼基礎?程式設計師大資料Spark
- 好程式設計師大資料培訓分享settings和mapping的意義程式設計師大資料APP
- 好程式設計師大資料培訓分享之MySQL資料庫SQL簡介程式設計師大資料MySql資料庫
- 好程式設計師大資料培訓分享之《MySQL資料庫》常用函式整理程式設計師大資料MySql資料庫函式
- 好程式設計師大資料培訓分享MySQL資料庫儲存引擎簡介程式設計師大資料MySql資料庫儲存引擎
- 好程式設計師大資料培訓分享之hive常用內部函式程式設計師大資料Hive函式
- 好程式設計師大資料培訓分享Hive基礎知識講解程式設計師大資料Hive
- 好程式設計師大資料培訓分享怎樣進行大資料入門學習程式設計師大資料
- 好程式設計師Java培訓分享Java程式設計技巧程式設計師Java
- 好程式設計師Java培訓分享SpringBoot -YAML程式設計師JavaSpring BootYAML
- 好程式設計師大資料培訓分享Hadoop入門學習線路圖程式設計師大資料Hadoop