漫画:什么是MapReduce
轉載自?腦洞有點大的 ?程序員小灰
什么是MapReduce?
MapReduce是一種編程模型,其理論來自Google公司發表的三篇論文(MapReduce,BigTable,GFS)之一,主要應用于海量數據的并行計算。
MapReduce可以分成Map和Reduce兩部分理解。
1.Map:映射過程,把一組數據按照某種Map函數映射成新的數據。
2.Reduce:歸約過程,把若干組映射結果進行匯總并輸出。
讓我們來看一個實際應用的栗子,如何高效地統計出全國所有姓氏的人數?
我們可以利用MapReduce的思想,針對每個省的人口做并行映射,統計出若干個局部結果,再把這些局部結果進行整理和匯總:
這張圖是什么意思呢?我們來分別解釋一下步驟:
1.Map:
以各個省為單位,多個線程并行讀取不同省的人口數據,每一條記錄生成一個Key-Value鍵值對。圖中僅僅是簡化了的數據。
2.Shuffle
Shuffle這個概念在前文并未提及,它的中文意思是“洗牌”。Shuffle的過程是對數據映射的排序、分組、拷貝。
3.Reduce
執行之前分組的結果,并進行匯總和輸出。
需要注意的是,這里描述的Shuffle只是抽象的概念,在實際執行過程中Shuffle被分成了兩部分,一部分在Map任務中完成,一部分在Reduce任務中完成。
Hadoop如何實現MapReduce?
Hadoop是Apache基金會開發的一套分布式系統框架,包含多個組件,其核心就是HDFS和MapReduce。
由于篇幅原因,文本不會對Hadoop做完整的介紹,只是簡單介紹一下Haddoop框架當中如何實現MapReduce。
下面這張圖是Hadoop框架執行一個MapReduce Job的全過程:
這里需要對幾種實體進行解釋:
HDFS:??
Hadoop的分布式文件系統,為MapReduce提供數據源和Job信息存儲。
Client Node:?
執行MapReduce程序的進程,用來提交MapReduce Job。
JobTracker Node:?
把完整的Job拆分成若干Task,負責調度協調所有Task,相當于Master的角色。
TaskTracker Node:?
負責執行由JobTracker指派的Task,相當于Worker的角色。這其中的Task分為MapTask和ReduceTask。
總結
以上是生活随笔為你收集整理的漫画:什么是MapReduce的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 贝壳拟15.5亿元收购空间智慧
- 下一篇: 一篇文章搞定面试中的二叉树