大數據小白系列——MR(1)


 一部編程發展史就是一部程序員偷懶史,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

統計每一個單詞出現的次數:

Splitting是怎么做的,分成幾份?

A 框架決定(通常是文件有多少個數據塊,就分成幾份,數據塊不懂的回去看HDFS系列)。

 

k1,v1是什么?

A 一般來說,k1是行號(在WordCount示例中用不到),v1是文件的某一行。本例只是概念示例,不用糾結。

 

Mapping產生的結果存儲在哪里?

A 所在機器的本地文件系統,非HDFS,以避免產生多余的副本(HDFS默認多個副本)。

 

Shuffling是做什么的?

A 負責將Mapping產生的中間結果發給Reducer,哪些數據發個哪個Reducer,有框架決定。

 

Reducer有幾個,運行在哪些機器上?

A 框架決定。

 

哪些是需要程序員進行代碼實現的?

Mapping及Reducing,即圖中兩個紅框部分。

 

好了,這期就先說到這,下期將稍微深入了解一下MR中的Shuffling、Sorting等概念。Cheers!

END

 歡迎關注“程序員雜書館”公眾號,領取大數據經典紙質書。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM