2

私は長い間このような頭痛の種を抱えていました。現在、私の Hadoop クラスターはこのようなものです。実行する 40 個のスレーブ ノードがあり、各スレーブ ノードに 25 個のマッパーを構成します。同時に。さて、次の仕事があります:</p>

job1: 5 つのマッパーと 5 つの Reducer を実行するように構成します job2: 20 の Mapper と 10 の Reducer を実行するように構成します job3: 975 の Mapper と 385 の Reducer を実行するように構成します

デフォルトの FIFO ジョブ スケジューリングを使用するとします。3 つのマッパーを連続して送信すると、3 つのジョブが同時に実行される可能性はありますか? クラスタを最大限に活用するには?

現在、マッパーフェーズでは、3つのジョブを送信した後、1000マッパーが起動できるように見えることをテストしていますが、リデューサーフェーズでは、非常に遅くなり、長い時間待って、上記のジョブのどれも終了しません、レデューサーフェーズでハングしているようです。

この固有の理由がよくわかりません。ジョブを送信してスリープできるように、この問題について誰か助けてもらえますか? それを機能させるために公平なスケジューリングを使用する必要がありますか????

4

1 に答える 1

1

解決策を提示するのは少し難しいですが、解決策を見つけるための指示を与えるようにします。1.クラスターに十分なreduceスロットがある場合、おそらく問題は並列ジョブの実行に関連していません。少なくとも、そもそもそれを疑うことはないでしょう。
2. Fair Schedulerを使用することをお勧めします。これは、並列実行とリソース共有のために特別に構築されています。
3.各ジョブを個別にテストし、各ジョブが正常に実行された後でのみテストすることをお勧めします。並列実行を開始します。
4.遅いreduceにはいくつかの理由がありますが、次のことを確認します(私が知っていること)
。a)マッパーとレデューサーの間で渡される(およびシリアル化される)大量のデータ。それを識別するために、ファイルシステムのバイト書き込みカウンターを調べてください。
b)深刻なデータの偏りがあり、多くのデータが単一のレデューサーに送られます。

于 2012-08-19T15:11:18.470 に答える