2012-03-06 8 views
0

Hadoop Streamingを使用して、ある時点でジョブに対して実行されているマッパーの数を制限できますか?たとえば、ノードあたり1つのタスクを実行できる28ノードのクラスターがあります。私が100の仕事で仕事をしているならば、私は28のノードのうち20を、ある時点でのみ使用したいと思っています。私はいくつかのジョブを制限したいのですが、長い実行中のタスクがたくさんあり、実行中のジョブをより速く実行し、長時間実行されるジョブが終了するのを待つのではなく、すぐに実行できることを確認します。Hadoop Streamingで実行されているマッパーの数を制限する

私はthisの質問を見ましたが、タイトルが上にありますが、この特定の問題に答えるような回答はありません。

ありがとうございます!

答えて

1

"ノード単位の"容量スケジューリングについては気づきませんが、まったく同じようなケースのために別のスケジューラが用意されています。

http://hadoop.apache.org/common/docs/r0.19.2/capacity_scheduler.html

あなたは短期の仕事のための潜在的に長いジョブとキューの特別なキューを定義する必要があり、このスケジューラが各キューのジョブのために常に利用できるようにするためにいくつかの能力を持っている気になります。

+0

ありがとう!これは、私が望んでいたよりもやや複雑ですが、私が探していたものにかなり近いように見えます。私はそれがトリックを行うかどうかがわかります。 – fozziethebeat

+0

これもチェックすることができますが、それは少し異なりますが、1つのジョブが他の人には飢えていないように気を付けています:http://hadoop.apache.org/common/docs/r0.20.2/fair_scheduler.html –

0

この方法では、各マップ呼び出しで最大20個のカウンターを読み取るためのオーバーヘッドが発生するため、各マッパーの作業量が多い場合は、次のオプションが有効です。

カウンタのグループを作成し、グループ名MY_TASK_MAPPERSを作成します。キーをMAPPER <と同じにします。1.K>ここで、Kは必要なマッパーの最大数です。 Mapperでは、カウンタの1つが0になるまでカウンタを繰り返します。カウンタの有効な値として、マシンのドットなしIPアドレスを配置します。代わりにすべてのKがすでに取得されている場合は、何もせずにマッパーを終了します。

関連する問題