2017-01-09 2 views
0

デフォルトでは、hadoop 2.7.3ではジョブのマッパが2つあります。私はそれぞれ4つのコアを持つ2つのシステムのクラスタを持っています。一つはマスター、もう一つは労働者です。今私は、3つの地図作業ワーカーノードを実行したい。それはできますか?私はhadoopストリーミングを使って仕事をしています。では、この目的のためにどのような議論をするべきですか。また、1つの入力(行)を1つのマッパーだけに設定したいと思います。どのような議論の形式にする必要があります。仕事をfullfilていない私の現在のコマンドがhadoop内の各ワーカーのコア数にマッパを変更2.7.3

hadoop jar $HADOOP_HOME/share/hadoop/tools/lib/hadoop-streaming-2.7.3.jar\ 
    -D mapred.output.compress=true \ 
    -D mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec \ 
    -files test.py -mapper test.py -reducer cat \ 
    -input /aws/input/sample.gz -output /aws/output/test 

出力が並列運転マッパーの唯一

答えて

1

番号が入力された分割やコンテナのリソースに基づいて1 maptaskがあることを示しています。

入力ファイルの各行は、独自のマッパーに行くのでNLineInputFormatを試してみてください:あなたは仕事を持っているしたい場合は、マッパーあたりの行

-inputformat org.apache.hadoop.mapreduce.lib.input.NLineInputFormat 

番号は、構成のparam

-Dmapreduce.input.lineinputformat.linespermap=N 

で設定することができます唯一の3つのマッパーだけを設定する必要があります。N = file_lines/3 + 1

また、並列で実行する場合は、十分なRAMとCPUリソースがあることを確認してください一度に3つのマップタスクを実行します。通常はYARN xmlファイルで設定され、map container memoryに設定されます。 Hadoopは、NameNode、DataNode、AppMaster、ResourceManagerなどのリソースを消費するいくつかの補助的なエコシステムプロセスを実行します。

また、入力ソースとしてGZファイルについてわからない場合は、NLineInputFormatが機能するようにプレーンテキストを使用する必要があります。

+0

ありがとうございました。私は、全体的ではなく、1人の作業員につき3つのマッパーを必要としていると言いました。実際、私は自分の労働者のコアを完全に使いたいです。 – Shafiq

+0

@Shafiqアイデアはとにかく同じです – AdamSkywalker

+0

ありがとう、私は別のポイントで立ち往生しています。私はhttp://stackoverflow.com/questions/41561367/hadoop-2-7-3-analyze-gz-files-one-mapper-to-each-file – Shafiq

関連する問題