Hive 基于常用参数的调优(Tez和MR引擎)

1.说明

Hive的常用计算引擎有MR、Tez和Spark,本篇博客主要是基于MR和Tez的参数调优,由于Hive的任务是在Yarn上提交的,所以Yarn作为一个资源调度器,可用的资源也需要进行配置。

2.Yarn参数个性化配置

配置文件名:yarn-site.xml

参数名 推荐值 参数说明
yarn.nodemanager.resource.cpu-vcores     当前数据节点的可用最大CPU核数*80% Container可以使用的的CPU数
yarn.scheduler.maximum-allocation-vcores 当前数据节点的可用最大CPU核数*80% 单个任务最大可用的CPU数
yarn.scheduler.minimum-allocation-vcores 1 单个任务最小可用的CPU数
yarn.nodemanager.resource.memory-mb 当前数据节点的物理内存总量的80% 可分配给Container的内存大小
yarn.scheduler.maximum-allocation-mb 当前数据节点的物理内存总量的80% 单个任务最大可用的内存大小
yarn.scheduler.minimum-allocation-mb 1024 单个任务最小可用的内存大小

3.Hive参数个性化配置(MR)

参数名 推荐值 参数说明
hive.execution.engine mr 选择执行引擎
hive.exec.parallel true 是否并行执行任务,默认值为false。
hive.exec.compress.intermediate true 否对hive查询中的数据进行压缩,当map中间数据较多时,可以选择开启压缩,压缩形式推荐Snappy,默认值为false。
mapreduce.map.output.compress.codec org.apache.hadoop.io.compress.SnappyCodec 在开启压缩时,该参数生效,Snappy结合了低CPU开销和好的压缩执行效率,适合中间文件的压缩和解压,默认值为org.apache.hadoop.io.compress.DefaultCodec。
mapreduce.map.memory.mb 6144 Mapper的Container的堆内存大小,根据实际情况设置,为1024的倍数,单位为MB。设置范围大小在3072-20480之间。
mapreduce.map.cpu.vcores 1 每个Mapper的可使用最大的CPU核数,默认值为1。
mapreduce.reduce.memory.mb 6144 Reducer的Container的堆内存大小,根据实际情况设置,为1024的倍数,单位为MB。
mapreduce.reduce.cpu.vcores 1 每个Reducer的可使用最大的CPU核数,默认值为1。
hive.exec.reducers.max 100 允许的最大reduce数量,需要根据reduce的数据量来判断,默认值为1009。
mapred.reduce.tasks 100 指定reduce的个数,默认为-1。

4.Hive参数个性化配置(Tez)

参数名 推荐值 参数说明
hive.execution.engine tez 选择执行引擎
hive.tez.input.format org.apache.hadoop.hive.ql.io.CombineHiveInputFormat 如果小文件过多,导致map数很多时,可以使用org.apache.hadoop.hive.ql.io.CombineHiveInputFormat来合并小文件,减少过多的map任务数,默认值为org.apache.hadoop.hive.ql.io.HiveInputFormat。
hive.tez.container.size 10240 Tez的Container的堆内存大小,根据实际情况设置,为1024的倍数,单位为MB。设置范围大小在3072-20480之间。
tez.runtime.io.sort.mb 128 Hive输出排序需要的内存大小,不超过2G,单位为MB。
tez.am.container.reuse.enabled true Tez的AM容器设置为可重用。
tez.runtime.shuffle.fetch.buffer.percent 0.90 运行期间,用于shuffle的buffer大小比例。
tez.runtime.unordered.output.buffer.size-mb 1024 如果不直接写入磁盘,使用的缓冲区大小。建议设置为10% * hive.tez.container.size。
hive.exec.reducers.max 100 允许的最大reduce数量,需要根据reduce的数据量来判断,默认值为1009。
mapred.reduce.tasks 100 指定reduce的个数,默认为-1。

你可能感兴趣的:(Hive,大数据,java,hive,hive调优,tez,mapreduce)