0

Hadoop クラスターを構成しました。MAMBの 2 台のマシン があります。次のコードを使用して mapreduce プログラムを実行すると、

 hadoop  jar /HDP/hadoop-1.2.0.1.3.0.0-0380/contrib/streaming/hadoop-streaming-1.2.0.1.3.0.0-0380.jar  -mapper "python C:\Python33\mapper.py"  -reducer "python C:\Python33\redu.py"  -input "/user/XXXX/input/input.txt"  -output "/user/XXXX/output/out20131112_09"

where : mapper - C:\Python33\mapper.py と reducer C:\Python33\redu.py は MB のローカル ディスクにあります

アップデート ここに画像の説明を入力

最後に、エラーを追跡しました。

MA - エラーログ

stderr logs
python: can't open file 'C:\Python33\mapper.py': [Errno 2] No such file or directory
java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 2

マッパー - C:\Python33\mapper.py とレデューサー C:\Python33\redu.py は MA のローカル ディスクにあり、 MB単位ではありません

今、m/r プログラムをMAにコピーする必要がありますか、またはこれをどのように解決しますか?

マッパー

import sys
for line in sys.stdin:
   line = line.strip()
   keys = line.split()
   for key in keys:
       value = 1
       print( '%s \t %d' % (key, value))
4

1 に答える 1

2

マップ入力ファイルがそれよりも小さい場合dfs.block.size、実行中のジョブごとに 1 つのタスクのみで終了します。小さい入力の場合は mapred.max.split.size、バイト単位の値が よりも小さい複数のタスクを Hadoop に強制的に実行させることができますdfs.block.size

于 2013-11-12T13:01:02.487 に答える