what:分解大數據集,并行處理,匯總結果(分解組合思想)
目的:SQL查詢轉換為MR,理解MR更好優化SQL
優點:
只需關注業務邏輯(自定義函數map,reduce),不用知道分布式處理細節。
移動計算邏輯到數據所在節點
how:自定義函數map、reduce,系統自動完成分布式處理
map階段:邏輯切片,并行map,轉換為鍵值對<key,value>
shuffle階段:按鍵分組排序,保證相同鍵分到同一個reduce
reduce階段:拉取對應分區的鍵值對,聚合值
練習題 詞頻統計
需求:統計每個單詞數量
"Hello World Hello Hadoop Hello MapReduce"
實現:
map階段:拆分成單詞,執行map函數輸出鍵值對<word, 1>
<Hello, 1>
<World, 1>
<Hello, 1>
<Hadoop, 1>
<Hello, 1>
<MapReduce, 1>
shuffle階段:按鍵合并值
"Hello": [1, 1, 1]
"World": [1]
"Hadoop": [1]
"MapReduce": [1]
reduce階段:執行reduce函數,按鍵聚合值
<Hello, 3>
<World, 1>
<Hadoop, 1>
<MapReduce, 1>