《Hadoop權威指南》-- mapreduce原理讀後感

mikeliuy發表於2012-10-28
讀完《Hadoop權威指南》裡面有關氣象資料集的計算一章後,對於自己以前參與的一個專案有了一些新的想法。


場景:停車場系統,希望統計一年中每月進出車輛的統計分佈,原先沒有使用hadoop這種分散式架構,就是比較基礎的統計。下面以統計每月進入車輛統計為例,進行說明mapreduce。


原始記錄中包含車輛進出場的時間,格式“yyyymmddhhmmss”,進/出都有自己的時間,透過不同擷取即可得到。
將資料檔案存入HDFS,有系統分片分配給個節點。


定義進入map:
    1、讀取每條記錄
    2、按照格式擷取
    3、檢查map中是否存在這個的key,如果沒有,生成一個,並且value賦值1;如果有,則value+1
    4、迴圈執行1-3,處理分配的資料片。


  這個map得到如下形式:
     節點一                                            節點二
   【200905,20】                             【200902,200】
   【200908,200】                           【200905,100】
   【200909,150】                           【200909,210】


處理完成,交由reduce進行合併:


    將map函式的處理結果,作為輸入。
    邏輯如下:
    將key相同的並且到一個key中,value值相加。最後結果如:
   【200902,200】
   【200905,120】
   【200908,200】
   【200909,360】
得到統計結果。出場以此類推。


mapreduce原理,我認為是利用分散式,進行分而治之的策略,將資料分割成64M(預設),然後又不同的節點去分析,這是每個節點獨立執行(節點資源可以認為是獨佔,而單機多程式併發,還有爭奪資源),這樣化整為零,計算效率提高;最後將分析結果合併,這個結果要比最初的資料要小的非常多,不是一個數量級的。
整體計算能力、資源使用率等等都要比單機要高。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26812308/viewspace-747770/,如需轉載,請註明出處,否則將追究法律責任。

相關文章