我在单个节点上使用 hadoop 1.0.1,并且正在尝试使用 python 2.7 流式传输制表符分隔的文件。我可以让 Michael Noll 的字数统计脚本使用 hadoop/python 运行,但无法让这个非常简单的映射器和缩减器工作,它只是复制文件。这是映射器:
import sys
for line in sys.stdin:
line = line.strip()
print '%s' % line
这是减速器:
import sys
for line in sys.stdin:
line = line.strip()
print line
这是输入文件的一部分:
1 857774.000000
2 859164.000000
3 859350.000000
...
mapper 和 reducer 在 linux 中工作正常:
cat input.txt | python mapper.py | sort | python reducer.py > a.out
但是在我 chmod 映射器和减速器之后,将输入文件移动到 hdfs 并检查它是否存在并运行:
bin/hadoop jar contrib/streaming/hadoop-*streaming*.jar -file mapperSimple.py -mapper mapperSimple.py -file reducerSimple.py -reducer reducerSimple.py -input inputDir/* -output outputDir
我收到以下错误:
12/06/03 10:19:11 INFO streaming.StreamJob: map 0% reduce 0%
12/06/03 10:20:15 ERROR streaming.StreamJob: Job not successful. Error: # of failed Map Tasks exceeded allowed limit. FailedCount: 1. LastFailedTask: task_201206030550_0003_m_000001
12/06/03 10:20:15 INFO streaming.StreamJob: killJob...
Streaming Job Failed!
有任何想法吗?谢谢。