Hive学习(九) 参数设置(调优)

Hive的参数设置方式

1、配置文件 (全局有效)

2、命令行参数(对 hive 启动实例有效)

3、参数声明 (对 hive 的连接 session 有效)

 

(1)配置文件

Hive 的配置文件包括:

  A. 用户自定义配置文件:$HIVE_CONF_DIR/hive-site.xml

  B. 默认配置文件:$HIVE_CONF_DIR/hive-default.xml

用户自定义配置会覆盖默认配置。

另外,Hive 也会读入 Hadoop 的配置,因为 Hive 是作为 Hadoop 的客户端启动的,Hive 的配 置会覆盖 Hadoop 的配置。

配置文件的设定对本机启动的所有 Hive 进程都有效。

 

(2)命令行参数

启动 Hive(客户端或 Server 方式)时,可以在命令行添加-hiveconf param=value 来设定参数,这一设定对本次启动的 session(对于 server 方式启动,则是所有请求的 session)有效。

bin/hive -hiveconf hive.root.logger=INFO,console

 

(3)参数声明 

可以在 HQL 中使用 SET 关键字设定参数

使用动态分区

set hive.exec.dynamic.partition=true;  
set hive.exec.dynamic.partition.mode=nonstrict;

并行计算

set hive.exec.parallel=true;
set hive.exec.parallel.thread.number=8;

数据倾斜(map join)

map join 概念:将其中做连接的小表(全量数据)分发到所有 MapTask 端进行 Join,从 而避免了 reduceTask,前提要求是内存足以装下该全量数据

set hive.auto.convert.join=true; //设置 MapJoin 优化自动开启
set hive.mapjoin.smalltable.filesize=25000000 //设置小表不超过多大时开启 mapjoin 优化

 适当加大map

set mapreduce.input.fileinputformat.split.maxsize=20000000;
set mapreduce.input.fileinputformat.split.minsize.per.node=10000000;
set mapreduce.input.fileinputformat.split.minsize.per.rack=10000000;

 

--负载均衡
set hive.groupby.skewindata=true;

--reduce数量
set mapred.reduce.tasks= 1400;
--压缩设置
set mapred.compress.map.output = true;
set mapred.output.compress = true;
set hive.exec.compress.output = true;
--中间过程压缩设置
set hive.exec.compress.intermediate=true;
set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;
--输出设置
set hive.merge.mapfiles = true;
set hive.merge.mapredfiles = true;
set hive.merge.size.per.task = 536870912;
set hive.merge.smallfiles.avgsize = 536870912;
--输入设置
set hive.input.format = org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
set mapred.min.split.size = 256000000;
set mapred.min.split.size.per.node = 256000000;
set mapred.min.split.size.per.rack = 256000000;
set hive.exec.reducers.bytes.per.reducer = 1073741824;
--mapjoin设置
set hive.auto.convert.join = true;
set hive.mapjoin.smalltable.filesize = 10240000;
--并行设置
set hive.exec.parallel = true;
set hive.exec.parallel.thread.number = 8;
--性能提升设置
set hive.map.aggr = true;
--内存相关设置
set mapreduce.map.memory.mb=8096;
set mapreduce.reduce.memory.mb=10144;

--开启动态分区功能
set hive.exec.dynamic.partition=true;
set hive.exec.dynamic.partition.mode=nonstrict;
set hive.exec.max.created.files=10000;
set hive.exec.max.dynamic.partitions=10000;
set hive.exec.max.dynamic.partitions.pernode=10000;

 

转载于:https://www.cnblogs.com/wwbz/p/11250059.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值