登 录
注 册
< 大 数 据
Flink
Hadoop
Spark
Hive
HBase
Kafka
其他框架
生产中常见问题
Hive压缩和存储
通过JDBC访问
企业级调优(一)
企业级调优(二)
企业级调优(三)
UDF实战
Hive调优参数大全
热门推荐>>>
中台架构
中台建设与架构
Hadoop
源码分析-NN启动(三)
HBase
HBased对接Hive
Linux
Nginx高可用
Python
数据导出工具
Flink
3分钟搭建Flink SQL测试环境
Kafka
Kafka对接Flume
深度学习
卷积神经网络
数据结构与算法
选择合适的算法
MySQL
数据备份恢复
计算机系统
信号量同步线程
其他框架
Azkaban Flow1.0与2.0
ClickHouse
表引擎-其他类型
技术成长
最好的职业建议
精选书单
技术成长书单—机器学习
技术资讯
数据在线:计算将成为公共服务
开发工具
IntelliJ IDEA 20年发展回顾(二)
系统工具
Mac命令行工具
虚拟化
内存虚拟化概述
云原生
云原生构建现代化应用
云服务
一文搞懂公有云、私有云...
Java
Spring Boot依赖注入与Runners
Go
Go函数与方法
SQL
SQL模板
安全常识
一文读懂SSO
当前位置:
首页
>>
Hive
>>
Hive调优参数大全
Hive调优参数大全
2020-10-08 21:08:58 星期四 阅读:2664
####MR相关参数配置 ```sql hive.map.aggr: 开启map端的聚合Combine hive.optimize.countdistinct: 默认值为true,Hive 3.0新增的配置项。当开启该配置项时,去重并计数的作业会分成两个作业来处理这类SQL,以达到减缓SQL的数据倾斜作用。 hive.exec.parallel: 默认值是False,是否开启作业的并行。默认情况下,如果一个SQL被拆分成两个阶段,如stage1、stage2,假设这两个stage没有直接的依赖关系,还是会采用窜行的方式依次执行两个阶段。如果开启该配置,则会同时执行两个阶段。在资源较为充足的情况下开启该配置可以有效节省作业的运行时间。 hive.exec.parallel.thread.num: 默认值是8,表示一个作业最多允许8个作业同时并行执行。 hive.exec.mode.local.auto: 默认值是false,表示是否开启本地的执行模式。开启该配置表示Hive会在单台机器上处理完所有的任务,对于处理数据量较少的任务可以有效地节省时间。开启本地模式还需要以下几个配置帮助。 hive.exec.mode.local.auto.inputbytes.max: 默认值134217728(128MB),表示作业处理的数据量要小于该值,本地模式。 hive.exec.mode.local.auto.tasks.max: 默认值是4,表示作业启动的任务数必须小于或者等于该值,本地模式才能生效。在Hive 0.9的版本以后该配置被hive.exec.mode.local.auto.input.files.max配置所取代,其含义和hive.exec.mode.local.auto.tasks.max相同。 hive.optimize.correlation: 默认值为false,这个配置我们称之为相关性优化,打开该配置可以减少重复的Shuffle操作。 # 设置输出结果显示字段名,但是不显示表名 set hive.cli.print.header=true; set hive.resultset.use.unique.column.names=false; # 设置任务运行队列 set mapreduce.job.queuename=root.queuename; set hive.exec.parallel=true; # 控制在同一个sql中的不同的job是否可以同时运行(默认是false) set hive.exec.parallel.thread.number=32; # 控制对于同一个sql来说同时可以运行的job的最大值(默认值是8) set hive.hadoop.supports.splittable.combineinputformat=true; # 是否支持可切分的CombieInputFormat set mapred.max.split.size=1210612736; # 每个map任务的最大输入数据量 set mapred.min.split.size.per.node=1210612736; # 节点中可以处理的最小的文件大小 set mapred.min.split.size.per.rack=1210612736; # 机架中可以处理的最小的文件大小 set hive.text.outputcompress.splitmaxsize=2147483648; # hive文本输出压缩文件的最大数据量 set mapreduce.job.reduce.slowstart.completedmaps=0.98; #当Map Task完成的比例达到该值后才会为Reduce Task申请资源,默认是0.05 set hive.groupby.skewindata=true; # 决定group by操作是否支持倾斜数据 set mapred.job.reuse.jvm.num.tasks=20; # JVM重用的job数(如果配置过多,会导致solt一直得不到释放) set mapreduce.reduce.cpu.vcores=3; # 每个reduce任务最多可使用的CPU核数 set mapreduce.map.cpu.vcores=3; # 每个map任务最多可使用的CPU核数 set hive.groupby.mapaggr.checkinterval =200000; # group的键对应的记录条数超过这个值则会进行分拆,值根据具体数据量设置 set hive.map.aggr = true; # 开启map端的聚合 set hive.exec.reducers.max=3000; # 最大的reducer数量 set hive.auto.convert.join=true; # 自动对左边的表统计量,如果是小表就加入内存 set hive.mapjoin.smalltable.filesize=150000000; # 小表的阈值 ``` #### TEZ相关参数配置 Tez和MapReduce这两种计算引擎从架构到编写具体的项目代码其实有很多共通的地方,因此在配置Tez的环境参数方面也基本差不多。下面是Tez常见的配置。 ``` tez.am.resource.memory.mb: 配置集群中每个Tez作业的ApplicationMaster所能占用的内存大小。 tez.grouping.max-size、tez.grouping.min-size: 配置集群中每个Map任务分组分片最大数据量和最小数据量。 hive.tez.java.opts: 配置Map任务的Java参数,如果任务处理的数据量过大,可以适当调节该参数,避免OOM(内存溢出)。选择合理的垃圾回收器,提升每个任务运行的吞吐量。 hive.convert.join.bucket.mapjoin.tez: 配置是否开启转换成桶MapJoin的表连接。默认是false,表示不开启。 hive.merge.tezifles: 是否合并Tez任务最终产生的小文件。 hive.tez.cpu.vcores: 配置每个容器运行所需的虚拟CPU个数。 hive.tez.auto.reducer.parallelism: 配置是否开启作业自动调节在Reduce阶段的任务并行度。 hive.tez.bigtable.minsize.semijoin.reduction: 设置当大表的行数达到该配置指定的行数时可以启用半连接。 hive.tez.dynamic.semijoin.reduction: 设置动态启用半连接操作进行过滤数据。 hive.llap.execution.mode: 配置Hive使用LLAP的模式,共有以下5种模式。 none:所有的操作都不使用LLAP。 map:只允许Map阶段的操作使用LLAP。 all:所有的操作都尽可能尝试使用LLAP,如果执行失败则使用容器的方式运行。 only:所有的操作都尽可能尝试使用LLAP,如果执行失败,则查询失败。 auto:由Hive控制LLAP模式 ```