2016-09-15 6 views
1

YARNによって管理されている30ノードのHadoop MR2クラスタがあります。現時点で10のOozieジョブがあり、それぞれに1つのMapプログラムが実行されています。私は、30ノードのうち11ノードしか実際に利用されていないことに気付いています。 Mapプログラムを実行するコンテナは11ノードのみです。クラスタですべてのノードが利用されているわけではありません

各ノードに少なくとも1つのコンテナが実行されていると思います。それはなぜそうではないのですか?それは入力分割によるもので、私のHDFSブロックサイズの設定に基づいて、入力データは11個のノードに分割するのが最良でしたか?その場合、すべてのノードが利用されるようにブロックサイズを調整する方が最適でしょうか?

+0

30ノードはすべてデータノードですか?私はあなたのデータが非常にまばらで、すべてのノードが必要ないと思っています。データ地域がその仕事をしているようです –

+0

Hadoop/Big Data規格では、80GBのフラットファイルがスパースとみなされていますか?私は確信している、ただ同じ言語を話していることを確認したい! – Neeko

+0

各ディスクのサイズにもよりますが、それはそれほど大きくはありません –

答えて

2

要求に応じて、リソースマネージャは必要なリソースをクラスタに割り当てます。これらのリソースはコンテナに使用され、マップ縮小ジョブが実行されます。

リソースノードが十分にある場合、データノードは複数のコンテナをホストできます。 hadoopでは、データに移動される計算であり、その逆ではないことを忘れないでください。 mapreduceジョブを実行しているデータノードは、処理しているデータを格納している可能性が高いです。 データブロックに依存する入力分割は、計算に関与するホストに直接影響しません。

すべてのノードを実行する必要があると考えるのは悪い考えです。大きなデータを使うのは、可能な限り少ないデータ量で動く。

関連する問題