web-dev-qa-db-ja.com

レデューサーのデフォルト数

Hadoopでは、レデューサーの数を設定していない場合、いくつのレデューサーが作成されますか?

同様のマッパーの数は(合計データサイズ)/(入力分割サイズ)に依存します。データサイズが1 TB=で、入力分割サイズが100 MBの場合。マッパーの数は(1000 * 1000)/ 100 = 10000(1万)になります。

減速機の数はどの要因に依存していますか?ジョブに対していくつのレデューサーが作成されますか?

11
Mohit Jain

削減数はどれくらいですか?(From official documentation)

適切な削減数は、0.95または1.75に(ノード数)*(ノードあたりの最大コンテナ数)を掛けたもののようです。

0.95を使用すると、すべてのreduceがすぐに起動し、マップが完了するとマップ出力の転送を開始できます。 1.75を使用すると、より高速なノードは最初のラウンドの還元を完了し、2番目の還元波を起動して、負荷分散のはるかに優れた仕事をします。

Reduceの数を増やすと、フレームワークのオーバーヘッドが増加しますが、負荷分散が増加し、障害のコストが低下します。

上記のスケーリング係数は、投機的タスクと失敗したタスクのためにフレームワーク内のいくつかの削減スロットを予約するために、整数よりわずかに小さくなっています。

この記事では、マッパーの数についても説明します。

マップの数は?

マップの数は通常、入力の合計サイズ、つまり入力ファイルのブロックの合計数によって決まります。

マップの並列処理の適切なレベルは、ノードごとに約10-100マップのようですが、非常にcpu-ライトマップタスク。タスクのセットアップにはしばらく時間がかかるため、マップの実行には少なくとも1分かかるのが最適です。

したがって、10TBの入力データが予想され、ブロックサイズが128MBの場合、最終的には82,000マップConfiguration.set(MRJobConfig.NUM_MAPS, int)(フレームワークにヒントを提供するだけ)を使用してそれをさらに高く設定しない限り。

レデューサー数のデフォルト値1を変更する場合は、以下のプロパティ(hadoop 2.xバージョンから)をコマンドラインパラメーターとして設定できます。

mapreduce.job.reduces

OR

あなたはプログラムで設定することができます

job.setNumReduceTasks(integer_numer);

関連するもう1つのSEの質問を見てください: Hadoopのレデューサーの理想的な数は何ですか?

12
Ravindra babu

デフォルトでは、レデューサーの数は1に設定されています。

パラメータを追加することで変更できます

_mapred.reduce.tasks_コマンドライン、ドライバコード、または渡すconfファイルで。

例:コマンドライン引数:_bin/hadoop jar ... -Dmapred.reduce.tasks=<num reduce tasks>_または、ドライバーコードではconf.setNumReduceTasks(int num);

推奨される読み: https://wiki.Apache.org/hadoop/HowManyMapsAndReduces

4
Koustav Ray