大數據實訓02--MapReduce原理與開發

思考小問題

統計一個100G大小的文件進行詞頻的解決方法

方法一:如果小文件可以編寫一個小程序,進行遍歷,統計詞頻。

方法二:編寫一個多線程程序,實現併發,比上一個方法更加有效,但是要防止多個線程重複提交(同步互斥問題)。

方法三:程序交給多臺服務器去完成,痛點:需要大量人工參與。

方法四:通過MapReduce框架自動化完成

MapReduce

特點:易於編程(有兩個接口ma--大任務分成小任務,任務分解,reduce---任務彙總),良好的擴展,高容錯性,適合離線處理

是一個編程框架:只需要程序員去設計map,reduce函數

MapReduce語義:相同的key爲一組,調用一次reduce方法,在方法內迭代這一組數據的計算

輸入(key,val)數據集----》map映射成一箇中間結果(k,v)---》reduce(k,v).

先map處理結果作爲reduce的輸入(線性關係),map的輸入的是大數據集的分片split(split窗口機制,大小可以調整,默認split大小近似block大小),默認框架以行爲單位,可以實現分佈式並行運算。

map的數量取決於split的數量

reduce的數量取決於程序員的設計partition

MapTask

map的數量一般比reduce多。

框架內部實現機制(分區,排序,寫入磁盤)

map生成<key,value,partition分區>數據,用緩衝區(buffer in memory)暫時存儲,積累一定量後一次性寫入磁盤。

partition的個數決定reduce的個數,reduce連接網絡到各個map中拉取分區。

MapReduce編程模型

Input---->Splitting--->Mapping--->Shuffling--->Reducing--->final result

Mapping:生成鍵值對

shuffing (洗牌):分組、排序、拉取數據

 版本區別:

Hadoop 1.x 提現計算向數據移動(移動計算)問題:壓力過大,單點故障

Hadoop 2.x :yarn提供資源管理和調度(RM,AM)

持續更新.......

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章