1

最適なパフォーマンスを実現するために、特定のデータセットに使用するマッパーとレデューサーの数を決定する要因は何ですか? 私は Apache Hadoop Map Reduce プラットフォームに関して話しています。

4

2 に答える 2

4

Clouderaのブログによると

Mapper と Reducer の最適な数を設定しましたか?
マッパーの数は、デフォルトで HDFS ブロックごとに 1 つに設定されています。これは通常、適切なデフォルトですが、ヒント 2 を参照してください
。reducer の数は、クラスター内の reduce スロットの数に設定するのが最適です (障害を考慮して数を差し引いた数)。これにより、リデューサーは単一のウェーブで完了することができます。

于 2012-10-18T02:08:13.480 に答える
2

主に、マッパーの数は、 InputFormat#getInputSplitsメソッドによって生成されるInputSplitの量に依存します。特に FileInputSplit は、ブロックとファイルに関して入力ディレクトリを分割します。gzip されたファイルは分割されず、入力ファイル全体が 1 つのマッパーに渡されます。

Two files:
f1 [ block1, block2], 
f2 [block3, block4] 
becomes 4 mappers 
f1(offset of block1), 
f1(offset of block2), 
f2(offest of block3),
f2(offset of block4)

その他の InputFormat には、ファイル分割のための独自の方法があります (たとえば、Hbase は領域境界で入力を分割します)。

CombineFileInputFormat を使用しない限り、マッパーを効果的に制御することはできませ。ただし、ほとんどのマッパーは、データが存在するホスト上で実行する必要があります。

ほとんどの場合、ユーザーによって指定された削減の数。それは主に、レデューサーで実行する必要がある作業の量に依存します。ただし、マッパーがレデューサー間でデータを分散するために使用するアルゴリズムのため、それらの数はそれほど多くないはずです。Hive などの一部のフレームワークは、レデューサーあたりの経験的な 1GB 出力を使用してレデューサーの数を計算できます。

一般的な経験則: リデューサーあたり 1 GB を使用しますが、クラスター容量の 0.8 ~ 1.2 を超えないようにしてください。

于 2012-10-17T10:57:11.193 に答える