Hadoop框架的兩大核心為:HDFS和MapReduce。
HDFS是將數據以數據塊為單位進行存儲。
MapRduce包含Map和Reduce兩個函數,適合用于批處理、非實時,以及數據密集型的情況。
下面對MapRduce進行簡介:
最簡單的理解mapreduce的例子是做蔬菜沙拉;
再舉一個具體的例子就是:
圖片發自簡書App
接下來主要從三個方面進行介紹:策略、理念、架構
(1)策略
使用Hadoop框架和MapRduce肯定是大規模的數據集處理,數據動則幾個TB、幾十TB,如果只有幾百M的數據,根本用不著MapRduce。
通常處理過程是:將數據集—(split)—>小分片——>對每個小分片單獨啟動Map任務,每個Map里面都有用戶編寫的對數據處理的邏輯。有多少個分片就有多少個Map,這樣多個Map并行運行。理想的情況是把一個HDFS數據塊的大小作為一個分片,大約64M或128M。
(2)理念
Hadoop的理念是“計算向數據靠攏”,尋找數據塊最近的map結點進行計算,而不是將數據運輸到計算結點增大資源消耗。
(3)架構
1.png
每個task 中將slot分為map slot和reduce slot。
2.png
Shuffle過程是理解MapReduce的核心,一個shuffle過程包括一個map任務和一個reduce任務。
3.png
4.png
5.png
作者:CB
郵箱:2101283570@qq.com
來源:簡書
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。