2011-10-25 5 views
2

私はhadoop cluster of three machinesを持っていますが、1台のマシンがマスターとスレーブの両方で動作します。hadoopクラスタ:マップタスクは1台のマシンでのみ実行され、すべてではありません

wordcount-exampleを実行すると、worker1worker2の2つのマシンでマップタスクが実行されます。 私自身のコードを実行すると、1台のマシンでしか実行されません - worker1、すべてのマシンでマップタスクを実行するにはどうしたらいいですか?

Input Split Locations 

/default-rack/master 
/default-rack/worker1 
/default-rack/worker2 

FIXED !!!

私はmapred-site.xmlの私の構成では、以下を追加し、それはあなたの入力がどのくらいある?

<property> 
    <name>mapred.map.tasks</name> 
    <value>100</value> 
</property> 
+0

スケジューリングアルゴリズムは、ストリーミングと通常のJava MRジョブで同じです。 JobTrackerでMRスロットが空きとしてマークされていない限り、タスクがスケジュールされる場所に違いはありません。 –

+0

あなたの入力がどのように見えるかを両方のケースで説明してください。入力ファイル数、ファイルsizez、使用された圧縮など。 –

+0

@ニールズ - 入力スプリットの場所が元のクエリで指定されています。分割された場所は、ストリーミングの有無にかかわらず同じように見えます。 FIFOスケジューリングロジック(デフォルト)は、ストリーミングの有無にかかわらず同じです。 –

答えて

1

それを固定Hadoopはジョブを入力分割に分割します。ファイルが小さすぎる場合は、分割が1つだけになります。

サイズが1GBほどで、マッパーがどのように得られるかを確認してください。


また、すべてのTaskTrackerがJobTrackerに正しく報告されていることを確認することもできます。正しく接続されていないTaskTrackerがあれば、それは仕事を得ることはありません。

$ hadoop job -list-active-trackers 

このコマンドを出力すべきすべてのホスト3。

関連する問題