3

マッパーの数を指定しない場合、その数はどのように決定されますか?構成ファイル(mapred-site.xmlなど)から読み取られるデフォルト設定はありますか?

4

2 に答える 2

6

クリスが上で追加したものにさらに追加する:

  1. マップの数は通常、入力ファイル内のDFSブロックの数によって決まります。ただし、DFSブロックサイズを調整してマップの数を調整する必要があります。

  2. マップの適切な並列処理レベルは、ノードあたり約10〜100マップのようですが、CPUライトマップタスクの場合、これは最大300程度になる可能性があります。タスクのセットアップには時間がかかるため、マップの実行に少なくとも1分かかることが最善です。

  3. JobConfのconf.setNumMapTasks(int num)を変更することで、マップタスクの数を増やすことができます。注:これにより、マップタスクの数が増える可能性がありますが、入力データの分割によってHadoopが決定する数よりも少ない数には設定されません。

最後に、マップの数を制御することは微妙です。mapred.map.tasksパラメーターは、マップ数のInputFormatへの単なるヒントです。デフォルトのInputFormatの動作は、バイトの総数を適切な数のフラグメントに分割することです。ただし、デフォルトの場合、入力ファイルのDFSブロックサイズは入力分割の上限として扱われます。分割サイズの下限は、mapred.min.split.sizeを介して設定できます。

したがって、10TBの入力データが予想され128MBのDFSブロックがある場合、mapred.map.tasksがさらに大きくない限り、最終的に82kのマップになります。最終的に、InputFormatはマップの数を決定します。

続きを読む:http ://wiki.apache.org/hadoop/HowManyMapsAndReduces

于 2012-05-15T04:15:14.760 に答える
5

それはいくつかの要因に依存します:

  • 入力フォーマットとそのフォーマットの特定の構成プロパティ
  • ファイルベースの入力形式(TextInputFormat、SequenceFileInputFormatなど)の場合:
    • 入力ファイル/パスの数
    • ファイルは分割可能です(通常、圧縮ファイルは分割できません。SequenceFilesは例外です)
    • ファイルのブロックサイズ

おそらくもっとありますが、うまくいけばあなたはアイデアを得るでしょう

于 2012-05-14T22:20:12.017 に答える