hive经常使用参数调优

hive.map.aggr

决定是否能够在 Map 端进行聚合操做前端

hive.groupby.skewindata

开启数据倾斜时的负载均衡web

mapred.reduce.tasks

设置所提交 Job 的 reduer 的个数缓存

hive.mapjoin.cache.numrows

Hive Map Join 所缓存的行数。并发

hive.exec.mode.local.auto

决定 Hive 是否应该自动地根据输入文件大小,在本地运行app

hive.merge.smallfiles.avgsize

须要合并的小文件群的平均大小,默认 16 M。负载均衡

hive.auto.convert.join

是否根据输入小表的大小,自动将 Reduce 端的 Common Join 转化为 Map Join,从而加快大表关联小表的 Join 速度。svg

hive.merge.mapfiles

在Map任务结束时合并小文件
是否开启合并 Map 端小文件,当Hive输入由不少个小文件组成,因为每一个小文件都会启动一个map任务,若是文件太小,会使得map任务启动和初始化的时间大于逻辑处理的时间,形成资源浪费。为此,当咱们启动一个任务,发现输入数据量小但任务数量多时,须要注意在Map前端进行输入合并。固然,在咱们向一个表写数据时,也须要注意输出文件大小oop

hive.merge.mapredfiles

是否开启合并 Map/Reduce 小文件,便是否在Map-Reduce的任务结束时合并小文件优化

hive.exec.parallel

是否开启 map/reduce job的并发提交。xml

hive.limit.optimize.enable

当使用LIMIT语句时,其能够对数据源进行抽样,避免执行整个查询语句,而后再返回部分结果
但这个功能有个缺点,有可能输入中有用的数据永远不会被处理到。

hive.exec.reducers.max

设置reducer个数的上限,能够阻止某个查询消耗过多的reducer资源,对这个属性值大小的设定,一个建议的计算公式以下:
(集群总Reduce槽位个数*1.5) / (执行中查询的平均个数)
1.5倍数是一个经验系数,用于防止未充分利用集群的状况。

hive.multigroupby.singlemr

一个特别的优化,是否将查询中的多个group by操做组装到单个MapReduce任务中。
false

hive.exec.dynamic.partition

是否打开动态分区。

hive.exec.dynamic.partition.mode

打开动态分区后,动态分区的模式,有 strict 和 nonstrict 两个值可选,strict 要求至少包含一个静态分区列,nonstrict 则无此要求。

hive.mapred.local.mem

Mapper/Reducer 在本地模式的最大内存量,以字节为单位,0为不限制。

hive.exec.scratchdir

/tmp/<user.name>/hive
HDFS路径,用于存储不一样 map/reduce 阶段的执行计划和这些阶段的中间输出结果。

hive.join.emit.interval

Hive Join 操做的发生时间间隔,以毫秒为单位。

hive.map.aggr.hash.percentmemory

Hive Map 端聚合的哈稀存储所占用虚拟机的内存比例。

hive.map.aggr.hash.min.reduction

Hive Map 端聚合的哈稀存储的最小 reduce 比例。

hive.merge.size.per.task

每一个任务合并后文件的大小,根据此大小肯定 reducer 的个数,默认 256 M。

mapred.min.split.size

Map Reduce Job 的最小输入切分大小,与 Hadoop Client 使用相同的配置。

hive.mapjoin.maxsize

Map Join 所处理的最大的行数。超过此行数,Map Join进程会异常退出。

hive.mapjoin.check.memory.rows

设置每多少行检测一次内存的大小,若是超过 hive.mapjoin.localtask.max.memory.usage 则会异常退出,Map Join 失败。

hive.optimize.groupby

是否优化 group by。