単一ノードでhadoop1.0.1を使用しており、Python2.7を使用してタブ区切りファイルをストリーミングしようとしています。MichaelNollの単語数スクリプトを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
...
マッパーとレデューサーは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!
何か案は?ありがとう。