✨
HDFSのReduceタスクについて
Mapタスク
前回記事より引用
JobTrackerが指示役.とるべきデータを格納しているDataNodeと,なるべく同居している(データのローカリティがある)TaskTrackerに指示を出す(サーバ間の通信量を極力抑えることが可能となり、オーバヘッドを抑える)
Reduceタスク
シャッフリング
MapperからReducerにデータを転送するプロセス.Reducerはこのプロセスの完了後でなくてもシャッフリングをすることはできる(30%未満ではあるがある程度リソースの削減が可能)
ソーティング
ソートされた入力データの次のキーが前のキーと異なる場合,新しいReduceタスクを開始できるようにする.そうすることで,Reduceタスクの所要時間を節約し,新しいReduceタスクをいつ開始するかを簡単に区別できるようする
各reduceタスクはキーと値のペアのリストを受け取るreduce()メソッドを呼び出すときは,キーごとに値をグループ化する必要がある.なので,入力データがMapタスクの段階で事前に並べ替えられ、Reduceで単純にマージソートで済む場合リソースの削減になるらしい.
パーティショニング
これによって,クエリによってはスキャンするファイルの範囲を調整することができる.日付でパーティショニングされているテーブルで,date BETWEEN yyyymmdd AND yyyymmdd
などで,パーティショニングされていると,最初からテーブルが絞られていて,スキャン量を少なくできる.
Discussion