[解決済み] HadoopのReduceタスクはいつ始まるのか?
質問
Hadoopでreduceタスクはいつ始まるのでしょうか?マッパーのある割合(閾値)が完了した後に開始されるのでしょうか?もしそうなら、この閾値は固定ですか?一般的にどのような閾値が使われるのでしょうか?
どのように解決するのですか?
reduceフェーズは、shuffle, sort, reduceの3つのステップで構成されています。シャッフルは、reducerが各マッパーからデータを収集するところです。これはデータ転送だけなので、マッパーがデータを生成している間でも可能です。一方、sortとreduceは、すべてのマッパーが終了してからでないと開始できない。MapReduceがどちらをやっているかは、リデューサの完了率を見ればわかります。0~33%はシャッフル、34~66%はソート、67~100%はリデュースをやっていることを意味します。これは、リデューサが時々33%で止まっているように見える理由です。
リデューサーは、終了したマッパーの割合の閾値に基づいてシャッフルを開始します。このパラメータを変更することで、リデューサーがより早く、あるいはより遅くシャッフルを開始するようにすることができます。
なぜリデューサーを早く開始することが良いのでしょうか?マッパーからリデューサへのデータ転送を時間をかけて分散させるからです。ネットワークがボトルネックになっている場合には良いことです。
なぜ早期にリデューサを起動するのは悪いことなのでしょうか?なぜなら、データをコピーしてマッパーが終了するのを待つだけで、リデューサーのスロットは占有されてしまうからです。後で開始される、実際に還元スロットを使用する別のジョブは、今それを使用することができません。
のデフォルト値を変更することで、リデューサが起動するタイミングをカスタマイズすることができます。
mapred.reduce.slowstart.completed.maps
で
mapred-site.xml
. の値は
1.00
を指定すると、reducersを開始する前にすべてのmapperが終了するのを待ちます。値が
0.0
の場合、リデューサはすぐに開始されます。値が
0.5
を指定すると、 マッパーの半分が完了した時点でリデューサーを開始します。また
mapred.reduce.slowstart.completed.maps
をジョブごとに変更することもできます。
Hadoop の新しいバージョン (少なくとも 2.4.1) では、このパラメータは
mapreduce.job.reduce.slowstart.completedmaps
(です(ユーザーyegor256に感謝します)。
一般的に、私は
mapred.reduce.slowstart.completed.maps
の上に
0.9
を使うことで、システムが複数のジョブを同時に走らせることができるようになります。こうすることで、リデューサがデータのコピー以外何もしていないときに、ジョブがリデューサを占有することがなくなります。もし一度にひとつのジョブしか実行しないのであれば、このように
0.1
が適切でしょう。
関連
-
Hbase公式ドキュメント(中国語
-
Hadoopデータディレクトリの移行
-
コンテナがゼロ以外の終了コード1で終了しました。エラーファイル: prelaunch.err.org.apache.hadoop.mapreduce.
-
Kerberosに関するFailed to find any Kerberos tgt問題を解決する。
-
[解決済み] HDFSからローカルファイルシステムにファイルをコピーする方法
-
[解決済み] Hiveでテーブルをパーティショニングすることとバケット化することの違いは何ですか?
-
[解決済み] HBaseとHadoop/HDFSの違いについて
-
[解決済み] Hiveの内部テーブルと外部テーブルの違い?
-
[解決済み] HDFSディレクトリのサイズを確認する方法は?
-
[解決済み] apache sparkはhadoopなしで動きますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
HDFSソースコード解析 --- デコミッション
-
Hadoopデータディレクトリの移行
-
コンテナがゼロ以外の終了コード1で終了しました。エラーファイル: prelaunch.err.org.apache.hadoop.mapreduce.
-
Kerberosに関するFailed to find any Kerberos tgt問題を解決する。
-
[解決済み】Hadoop、HBase、Hive、Pigはいつ使う?
-
[解決済み] Hiveでテーブルをパーティショニングすることとバケット化することの違いは何ですか?
-
[解決済み] HBaseとHadoop/HDFSの違いについて
-
[解決済み] Hadoopで複数のMapReduceジョブを連鎖させる
-
[解決済み] apache sparkはhadoopなしで動きますか?
-
[解決済み] コンテナがメモリの制限を超えて動作している