我有一个查询使用了很多容器和内存(使用了97%的内存)。有没有办法设置查询中使用的容器数并限制最大内存?查询正在tez上运行。提前谢谢
voj3qocg1#
控制Map器的数量:Map器的数量取决于各种因素,例如数据在节点之间的分布方式、输入格式、执行引擎和配置参数。另请参见初始任务并行如何工作mr使用combineinputformat,而tez使用分组拆分。特兹:
set tez.grouping.min-size=16777216; -- 16 MB min split set tez.grouping.max-size=1073741824; -- 1 GB max split
增加这些数字以减少正在运行的Map程序的数量。此外,Map器在数据所在的数据节点上运行,这就是为什么手动控制Map器的数量不是一项容易的任务,也不总是能够合并输入。控制减速器的数量:减速机的数量根据
mapreduce.job.reduces
每个作业的默认减少任务数。通常设置为接近可用主机数的素数。忽略时间 mapred.job.tracker 是“本地”。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=<number> 限制减速器运行的数量。如果要增加reducers并行性,请增加hive.exec.reducers.max并减少hive.exec.reducers.bytes.per.reducer。内存设置
mapred.job.tracker
hive.exec.reducers.bytes.per.reducer
hive.exec.reducers.max
hive.exec.reducers.max=<number>
set tez.am.resource.memory.mb=8192; set tez.am.java.opts=-Xmx6144m; set tez.reduce.memory.mb=6144; set hive.tez.container.size=9216; set hive.tez.java.opts=-Xmx6144m;
默认值 设置意味着 Tez 任务将使用Map程序的内存设置:
Tez
hive.tez.container.size = mapreduce.map.memory.mb hive.tez.java.opts = mapreduce.map.java.opts
阅读本文了解更多详细信息:揭开apachetez内存调优的神秘面纱-一步一步我建议先优化查询。如果可能,使用Map联接,使用矢量化执行,添加 distribute by partitin key 如果您编写分区表是为了减少减速机上的内存消耗,当然要编写好sql。
distribute by partitin key
1条答案
按热度按时间voj3qocg1#
控制Map器的数量:
Map器的数量取决于各种因素,例如数据在节点之间的分布方式、输入格式、执行引擎和配置参数。另请参见初始任务并行如何工作
mr使用combineinputformat,而tez使用分组拆分。
特兹:
增加这些数字以减少正在运行的Map程序的数量。
此外,Map器在数据所在的数据节点上运行,这就是为什么手动控制Map器的数量不是一项容易的任务,也不总是能够合并输入。
控制减速器的数量:
减速机的数量根据
每个作业的默认减少任务数。通常设置为接近可用主机数的素数。忽略时间
mapred.job.tracker
是“本地”。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=<number>
限制减速器运行的数量。如果要增加reducers并行性,请增加hive.exec.reducers.max并减少hive.exec.reducers.bytes.per.reducer。
内存设置
默认值 设置意味着
Tez
任务将使用Map程序的内存设置:阅读本文了解更多详细信息:揭开apachetez内存调优的神秘面纱-一步一步
我建议先优化查询。如果可能,使用Map联接,使用矢量化执行,添加
distribute by partitin key
如果您编写分区表是为了减少减速机上的内存消耗,当然要编写好sql。