
??Hadoop?---MapReduce是一個軟件框架,基于該框架能夠容易地編寫應用程序,這些應用程序能夠運行在由上千個商用機器組成的大集群上,并以一種可靠的,具有容錯能力的方式并行地處理上TB級別的海量數據集。這個定義里面有著這些關鍵詞,
一是軟件框架,二是并行處理,三是可靠且容錯,四是大規模集群,五是海量數據集。
(資料圖片)
?
MapReduce擅長處理大數據,它為什么具有這種能力呢?這可由MapReduce的設計思想發覺。MapReduce的思想就是“分而治之”。
(1)Mapper負責“分”,即把復雜的任務分解為若干個“簡單的任務”來處理。“簡單的任務”包含三層含義:
一是數據或計算的規模相對原任務要大大縮小;二是就近計算原則,即任務會分配到存放著所需數據的節點上進行計算;三是這些小任務可以并行計算,彼此間幾乎沒有依賴關系。
(2)Reducer負責對map階段的結果進行匯總。至于需要多少個Reducer,用戶可以根據具體問題,通過在mapred-site.xml配置文件里設置參數mapred.????reduce????.tasks的值,缺省值為1。
一個比較形象的語言解釋MapReduce:
我們要數圖書館中的所有書。你數1號書架,我數2號書架。這就是“Map”。我們人越多,數書就更快。
現在我們到一起,把所有人的統計數加在一起。這就是“Reduce”。??
?
實體一:客戶端,用來提交MapReduce作業。
實體二:JobTracker,用來協調作業的運行。
實體三:TaskTracker,用來處理作業劃分后的任務。
實體四:HDFS,用來在其它實體間共享作業文件。