2017-03-16 8 views
0

ハイブの特定のタスクに対して作成されるマッパーとリダクションの数は常に混乱します。 例:ブロックサイズ= 128MBで、365個のファイルが存在する場合、それぞれ1年の日付にマッピングされます(ファイルサイズはそれぞれ1 MBです)。日付列に基づくパーティションがあります。この場合、データのロード中にいくつのマッパーとレデューサーが実行されますか?ハイブでpartitonedテーブルに作成されるマッパーとリダクションの数

答えて

0

マッパー:マッパーの

番号は、データをノード間で分散する方法、入力形式、実行エンジンや構成のparamsのような様々な要因に依存します。 https://cwiki.apache.org/confluence/display/TEZ/How+initial+task+parallelism+works

MRはCombineInputFormatを使用し、Tezはグループ化された分割を使用します。

TEZ:

set tez.grouping.min-size=16777216; -- 16 MB min split 
set tez.grouping.max-size=1073741824; -- 1 GB max split 

のMapReduce:手動マッパーの数を制御することは容易ではない理由

set mapreduce.input.fileinputformat.split.minsize=16777216; -- 16 MB 
set mapreduce.input.fileinputformat.split.minsize=1073741824; -- 1 GB 

はまたマッパーは、データが配置されているデータノードで実行されている、すなわち、常に入力を結合することはできません。

レデューサー: レデューサーの数を制御する方がずっと簡単です。 還元剤の数は、

mapred.reduce.tasksに従って決定されます - ジョブあたりの削減タスクのデフォルト数。通常、使用可能なホストの数に近いプライムに設定されます。 mapred.job.trackerが "local"のときは無視されます。 Hadoopはこれをデフォルトで1に設定し、Hiveはデフォルト値として-1を使用します。このプロパティを-1に設定すると、Hiveは自動的に減速機の数を決定します。

- Hive 0.14.0以前のデフォルトは1 GBです。

hive.exec.reducers.max - 使用するレデューサーの最大数。 mapred.reduce.tasksが負の場合、Hiveは自動的に減速器の数を決定する際にこれを最大減速器の数として使用します。

だから、あなたは、減速機の並列性を高めるhive.exec.reducers.maxを増減したい場合は

関連する問題