4

Hadoopクラスターを構成する場合、クラスターのマッパー/リデューサーの数を設定するための科学的方法は何ですか?

4

4 に答える 4

5

公式はありません。コアの数とメモリの量によって異なります。マッパーの数+レデューサーの数は、一般的にコアの数を超えてはなりません。マシンはタスクトラッカーとデータノードデーモンも実行していることに注意してください。一般的な提案の1つは、レデューサーよりもマッパーの方が多いことです。もし私があなたなら、それを試すために妥当な量のデータを使って私の典型的な仕事の1つを実行するでしょう。

于 2012-04-05T15:42:25.397 に答える
1

306ページの「HadoopTheDefiniteGuide、第3版」からの引用

MapReduceジョブは通常I/Oバウンドであるため、より良い使用率を得るためにプロセッサーよりも多くのタスクを持つことは理にかなっています。

オーバーサブスクリプションの量は、実行するジョブのCPU使用率によって異なりますが、経験則として、プロセッサよりも1〜2倍多くのタスク(マップタスクとリデュースタスクの両方をカウント)を設定することをお勧めします。

上記の引用のプロセッサは、1つの論理コアに相当します。

ただし、これは理論上のものであり、ほとんどの場合、各ユースケースは別のユースケースとは異なるため、いくつかのテストを実行する必要があります。しかし、この数値はテストの良いスタートになる可能性があります。

于 2014-09-01T05:49:02.837 に答える
0

おそらく、レデューサーの遅延読み込みも検討する必要があります。これにより、必要に応じてレデューサーを後で開始できるため、基本的に、マップスロットの数を増やすことができます。これについてはあまり考えていませんが、役に立つようです。

于 2012-04-06T20:40:59.673 に答える
0

Hadoop Gyanからの引用-私のブログ:

マッパーの数は、前述のデータ局所性の原則に従って決定されます。データの局所性の原則:Hadoopは、データがローカルに存在するノードでマップタスクを実行して、ネットワークとノード間の通信遅延を最適化するために最善を尽くします。入力データは分割されて異なるマップタスクに供給されるため、そのマップタスクに供給されるすべてのデータを単一のノードで使用できるようにすることが望ましいです。HDFSはブロックサイズ(64M)に等しいサイズのデータ​​のみを保証するため、 1つのノードに存在する場合は、マップタスクがこのデータローカリゼーションを利用できるように、分割サイズをHDFSブロックサイズと等しくすることをお勧めします。したがって、マッパーあたり64Mのデータ。一部のマッパーの実行時間が非常に短い場合は、マッパーの数を減らして、1分ほど長く実行するようにしてください。

レデューサーの数は、クラスター内のリデューススロットの数よりもわずかに少なくする必要があります(スロットの概念は、クラスターの構成中にジョブ/タスクトラッカーのプロパティで事前構成されます)。これにより、すべてのレデューサーが1つのウェーブで終了します。クラスターリソースを最大限に活用します。

于 2012-11-12T14:35:42.700 に答える