将为配置单元中的分区表创建多少Map器和reduce

yks3o0rb  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(396)

我总是搞不清楚有多少Map器和减少将被创建一个特定的任务在Hive。e、 g如果块大小=128mb,并且有365个文件Map到一年中的某个日期(每个文件大小=1MB)。有一个基于日期列的分区。在这种情况下,加载数据期间将运行多少Map器和还原器?

jpfvwuh4

jpfvwuh41#

制图员:
Map器的数量取决于各种因素,例如数据在节点之间的分布方式、输入格式、执行引擎和配置参数。另请参见此处:https://cwiki.apache.org/confluence/display/tez/how+initial+task+parallelism+works
mr使用combineinputformat,而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.maxsize=1073741824; -- 1 GB

此外,Map器在数据所在的数据节点上运行,这就是为什么手动控制Map器的数量不是一项容易的任务,也不总是能够合并输入。
减速器:控制减速器的数量要容易得多。减速机的数量根据 mapreduce.job.reduces -每个作业的默认减少任务数。通常设置为接近可用主机数的素数。当mapred.job.tracker为“local”时忽略。hadoop默认设置为1,而hive使用-1作为默认值。通过将此属性设置为-1,hive将自动计算出减速器的数量。 hive.exec.reducers.bytes.per.reducer -配置单元0.14.0及更早版本中的默认值为1 gb。
hive.exec.reducers.max -将使用的最大减速器数量。如果 mapreduce.job.reduces 如果为负,则在自动确定减速器数量时,hive将使用此值作为减速器的最大数量。
所以,如果你想增加减速器的平行度,增加 hive.exec.reducers.max 减少 hive.exec.reducers.bytes.per.reducer

相关问题