0

Hadoop ストリーミングを使用しています。次のようにスクリプトを開始します。

../hadoop/bin/hadoop jar ../hadoop/contrib/streaming/hadoop-streaming-1.0.4.jar \
        -mapper ../tests/mapper.php     \
        -reducer ../tests/reducer.php   \
        -input data                     \
        -output out

「データ」は2.5GBのtxtファイルです。

ただし、ps axf では、1 つのマッパーしか表示されません。-Dmapred.map.tasks=10 で試しましたが、結果は同じです - 単一のマッパーです。

Hadoop で入力ファイルを分割し、複数のマッパー プロセスを開始するにはどうすればよいですか?

4

1 に答える 1

1

私のコメントを詳しく説明すると、ファイルが HDFS になく、ローカル ランナーで実行している場合、ファイル自体は単一のマッパーによってのみ処理されます。

大きなファイルは通常、複数のブロックとして HDFS に保存されるため、複数のマッパーによって処理されます。

ブロック サイズが 512M の 2.5 GB のファイルは、HDFS で最大 5 ブロックに分割されます。ファイルが分割可能な場合 (プレーン テキスト、または snappy などの分割可能な圧縮コーデックを使用しているが gzip を使用していない場合)、hadoop はブロックごとにマッパーを起動してファイルを処理します。

これがあなたが見ているものを説明するのに役立つことを願っています

于 2012-11-29T11:15:53.050 に答える