一部編程發展史就是一部程序員偷懶史,MapReduce(下稱MR)一樣是程序員們用來偷懶的工具。程序員
來了一份大數據,咱們寫了一個程序準備分析它,須要怎麼作?編程
老式的處理方法不行,數據量太大時,所需的時間沒法忍受,因此,必須並行計算。比如1000塊磚,1我的搬須要1小時,10我的同時搬,只須要6分鐘。app
不過進行並行計算,面臨幾個細思頭大問題:框架
不過不用擔憂,世界就是這樣的,少部分人發明創造工具,大部分人使用工具。總有聰明人在合適的時候出來解決問題。工具
Google在2004年出了個paper,《MapReduce: Simplifed Data Processing on Large Clusters》,提出來一種針對大數據的並行處理模型、並基於此理論作了一個計算框架。大數據
因此,你能夠說MR是一種計算模型、也能夠叫它一個計算框架。廣義的MR甚至還包括一套資源管理(JobTracker、TaskTracker),後面這個咱們不講,由於,過,時,了。spa
Q 框架是什麼?blog
A 就是套路。內部會幫你處理那些讓你頭大的問題。ci
做爲小白系列,咱們先來看看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—
歡迎關注「程序員雜書館」公衆號,領取大數據經典紙質書。