我是 Ubuntu、Hadoop 和 DFS 的新手,但我已经按照 Michael-Noll.com 上发布的说明成功在本地 ubuntu 计算机上安装了单节点 hadoop 实例:
http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/#copy-local-example-data-to-hdfs
http://www.michael-noll.com/tutorials/writing-an-hadoop-mapreduce-program-in-python/
我目前一直在 Hadoop 上运行基本字数统计示例。我不确定我在 Downloads 目录中运行 Hadoop 是否会造成太大差异,但我尝试通过放置 mapper.py 和 reducer.py 函数来调整文件位置在 Hadoop 工作目录中但没有成功。我已经用尽了所有的研究,但仍然无法解决这个问题(即使用 -file 参数等)。我真的很感谢提前提供的任何帮助,我希望我以一种可以帮助刚刚开始的其他人的方式提出这个问题使用Python + Hadoop。
我独立测试了mapper.py 和reduce.py,当从bash shell 提示玩具文本数据时,两者都工作正常。
我的 Bash Shell 的输出:
hduser@chris-linux:/home/chris/Downloads/hadoop$ bin/hadoop jar /home/chris/Downloads/hadoop/contrib/streaming/hadoop-streaming-1.0.4.jar -file mapper.py -file reducer.py -mapper mapper.py -reducer reducer.py -input /user/hduser/gutenberg/* -output /user/hduser/gutenberg-output3
Warning: $HADOOP_HOME is deprecated.
packageJobJar: [mapper.py, reducer.py, /app/hadoop/tmp/hadoop-unjar4681300115516015516/] [] /tmp/streamjob2215860242221125845.jar tmpDir=null
13/03/08 14:43:46 INFO util.NativeCodeLoader: Loaded the native-hadoop library
13/03/08 14:43:46 WARN snappy.LoadSnappy: Snappy native library not loaded
13/03/08 14:43:46 INFO mapred.FileInputFormat: Total input paths to process : 3
13/03/08 14:43:47 INFO streaming.StreamJob: getLocalDirs(): [/app/hadoop/tmp/mapred/local]
13/03/08 14:43:47 INFO streaming.StreamJob: Running job: job_201303081155_0032
13/03/08 14:43:47 INFO streaming.StreamJob: To kill this job, run:
13/03/08 14:43:47 INFO streaming.StreamJob: /home/chris/Downloads/hadoop/libexec/../bin/hadoop job -Dmapred.job.tracker=localhost:54311 -kill job_201303081155_0032
13/03/08 14:43:47 INFO streaming.StreamJob: Tracking URL: http://localhost:50030/jobdetails.jsp?jobid=job_201303081155_0032
13/03/08 14:43:48 INFO streaming.StreamJob: map 0% reduce 0%
13/03/08 14:44:12 INFO streaming.StreamJob: map 100% reduce 100%
13/03/08 14:44:12 INFO streaming.StreamJob: To kill this job, run:
13/03/08 14:44:12 INFO streaming.StreamJob: /home/chris/Downloads/hadoop/libexec/../bin/hadoop job -Dmapred.job.tracker=localhost:54311 -kill job_201303081155_0032
13/03/08 14:44:12 INFO streaming.StreamJob: Tracking URL: http://localhost:50030/jobdetails.jsp?jobid=job_201303081155_0032
13/03/08 14:44:12 ERROR streaming.StreamJob: Job not successful. Error: JobCleanup Task Failure, Task: task_201303081155_0032_m_000003
13/03/08 14:44:12 INFO streaming.StreamJob: killJob...
Streaming Command Failed!
我的 HDFS 位于 /app/hadoop/tmp,我相信它也与我的 hadoop 实例上的 /user/hduser 目录相同。
输入数据位于 /user/hduser/gutenberg/* (3 个 UTF 纯文本文件)
输出设置为在 /user/hduser/gutenberg-output 创建