使用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位置查看输出
参考
原文地址:https://www.cnblogs.com/wswang/p/7718141.html