一部編程發展史就是一部程序員偷懶史,MapReduce(下稱MR)同樣是程序員們用來偷懶的工具。
來了一份大數據,我們寫了一個程序准備分析它,需要怎么做?
老式的處理方法不行,數據量太大時,所需的時間無法忍受,所以,必須並行計算。好比1000塊磚,1個人搬需要1小時,10個人同時搬,只需要6分鍾。
不過進行並行計算,面臨幾個細思頭大問題:
- 如何切分數據
- 如何處理部分任務失敗
- 如何對多路計算的結果進行匯總
不過不用擔心,世界就是這樣的,少部分人發明創造工具,大部分人使用工具。總有聰明人在合適的時候出來解決問題。
Google在2004年出了個paper,《MapReduce: Simplifed Data Processing on Large Clusters》,提出來一種針對大數據的並行處理模型、並基於此理論做了一個計算框架。
所以,你可以說MR是一種計算模型、也可以叫它一個計算框架。廣義的MR甚至還包括一套資源管理(JobTracker、TaskTracker),后面這個我們不講,因為,過,時,了。
Q 框架是什么?
A 就是套路。內部會幫你處理那些讓你頭大的問題。
作為小白系列,我們先來看看MR簡單的流程圖:
為方便理解,來一個WorkCount示例(WordCount就好比大數據的HelloWorld,總要來一個的)。假設我們有一個文件包含內容:
Live for nothing, die for something
統計每一個單詞出現的次數:
Q Splitting是怎么做的,分成幾份?
A 框架決定(通常是文件有多少個數據塊,就分成幾份,數據塊不懂的回去看HDFS系列)。
Q k1,v1是什么?
A 一般來說,k1是行號(在WordCount示例中用不到),v1是文件的某一行。本例只是概念示例,不用糾結。
Q Mapping產生的結果存儲在哪里?
A 所在機器的本地文件系統,非HDFS,以避免產生多余的副本(HDFS默認多個副本)。
Q Shuffling是做什么的?
A 負責將Mapping產生的中間結果發給Reducer,哪些數據發個哪個Reducer,有框架決定。
Q Reducer有幾個,運行在哪些機器上?
A 框架決定。
Q 哪些是需要程序員進行代碼實現的?
A Mapping及Reducing,即圖中兩個紅框部分。
好了,這期就先說到這,下期將稍微深入了解一下MR中的Shuffling、Sorting等概念。Cheers!
—END—
歡迎關注“程序員雜書館”公眾號,領取大數據經典紙質書。