您好,登錄后才能下訂單哦!
官網
http://hadoop.apache.org/
hadoop三大組件
HDFS:分布式存儲系統
https://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HdfsUserGuide.html
MapReduce:分布式計算系統
http://hadoop.apache.org/docs/r2.8.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html
YARN: hadoop 的資源調度系統
http://hadoop.apache.org/docs/r2.7.2/hadoop-yarn/hadoop-yarn-site/YARN.html
回想起以前做過一個中鐵軌道激光測量軌道平整的項目,一段50KM的數據庫大小是400G,光是找空間復制出來就是頭大,現在有了分布式的數據庫和計算平臺就可以非常方便的進行。
Mapper
映射器將輸入鍵/值對映射到一組中間鍵/值對中。
應用程序可以使用計數器報告其統計數據。
Reducer
Shuffle洗牌
Partitioner分區
Counter計數器
其實MapReduce講的就是分而治之的程序處理理念,把一個復雜的任務劃分為若干個簡單的任務分別來做。另外,就是程序的調度問題,哪些任務給哪些Mapper來處理是一個著重考慮的問題。MapReduce的根本原則是信息處理的本地化,哪臺PC持有相應要處理的數據,哪臺PC就負責處理該部分的數據,這樣做的意義在于可以減少網絡通訊負擔。最后補上一副經典的圖來做最后的補充,畢竟,圖表往往比文字更有說服力。
如果那個400G的數據庫還在,分成400個任務,每個任務進行1g左右數據處理,理論上速度是原來的400倍。
具體請參考google mapreduce
https://wenku.baidu.com/view/1aa777fd04a1b0717fd5dd4a.html
MapReduce如何工作
讓我們用一個例子來理解這一點 –
假設有以下的輸入數據到 MapReduce 程序,統計以下數據中的單詞數量:
Welcome to Hadoop Class
Hadoop is good
Hadoop is bad
MapReduce 任務的最終輸出是:
bad
1
Class
1
good
1
Hadoop
3
is
2
to
1
Welcome
1
這些數據經過以下幾個階段
輸入拆分:
輸入到MapReduce工作被劃分成固定大小的塊叫做 input splits ,輸入折分是由單個映射消費輸入塊。
映射 - Mapping
這是在 map-reduce 程序執行的第一個階段。在這個階段中的每個分割的數據被傳遞給映射函數來產生輸出值。在我們的例子中,映射階段的任務是計算輸入分割出現每個單詞的數量(更多詳細信息有關輸入分割在下面給出)并編制以某一形式列表<單詞,出現頻率>
重排
這個階段消耗映射階段的輸出。它的任務是合并映射階段輸出的相關記錄。在我們的例子,同樣的詞匯以及它們各自出現頻率。
Reducing
在這一階段,從重排階段輸出值匯總。這個階段結合來自重排階段值,并返回一個輸出值。總之,這一階段匯總了完整的數據集。
在我們的例子中,這個階段匯總來自重排階段的值,計算每個單詞出現次數的總和。
MapReduce如何組織工作?
Hadoop 劃分工作為任務。有兩種類型的任務:
如上所述
完整的執行流程(執行 Map 和 Reduce 任務)是由兩種類型的實體的控制,稱為
對于每一項工作提交執行在系統中,有一個 JobTracker 駐留在 Namenode 和 Datanode 駐留多個 TaskTracker。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。