天天看點

使用Python實作Map Reduce程式

使用Python實作Map Reduce程式

起因

想處理一些較大的檔案,單機運作效率太低,多線程也達不到要求,最終采用了叢集的處理方式。

詳細的讨論可以在v2ex上看一下。

步驟
  • MapReduce程式要分為兩部分,即Map和Reduce部分,是以Python代碼也是要分為兩部分
  • 程式運作
hadoop jar contrib/streaming/hadoop-streaming-1.1.2.jar   
-mapper /usr/local/hadoop/mapper.py   
-reducer /usr/local/hadoop/reducer.py   
-input book/*   
-output book-output 
           
  • jar檔案要在本機上找到,可以使用find指令搜尋
  • input和output目錄要在hdfs上
  • mapper和reducer代碼放在本機即可
  • Map 和 Reduce間傳遞資料通過STDIN (标準輸入)和STDOUT (标準輸出)
程式執行個體
  • 可以寫一個什麼都不做的程式,即獲得輸入,然後輸出
  • mapper.py如下
import sys

for line in sys.stdin:
    print line
           
  • reducer.py如下
import sys

for line in sys.stdin:
    print line
           
  • 賦予代碼可運作權限 chmod即可
  • 然後運作即可在output位置檢視輸出
參考
  • CSDN