赞
踩
Hive的常用计算引擎有MR、Tez和Spark,本篇博客主要是基于MR和Tez的参数调优,由于Hive的任务是在Yarn上提交的,所以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 | 单个任务最小可用的内存大小 |
参数名 | 推荐值 | 参数说明 |
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。 |
参数名 | 推荐值 | 参数说明 |
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。 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。