Hive的调优

  1. 本地模式
-- 通过以下设置开启本地模式
SET hive.exec.mode.local.auto=true; --default false 
SET hive.exec.mode.local.auto.inputbytes.max=50000000; 
SET hive.exec.mode.local.auto.input.files.max=5; --default 4

Job必须满足以下条件才能在本地模式下运行

  • Job总输入大小小于 hive.exec.mode.local.auto. inputbytes.max
  • map任务总数小于 hive.exec.mode.local.auto. input.files.max
  • 所需的Reduce任务总数为1或0
  1. 并行模式:上个MapReduce输出的结果不是下一个MR输入
-- 通过以下设置开启并行执行
SET hive.exec.parallel=true;  -- default false 
SET hive.exec.parallel.thread.number=16;  -- default 8,定义并行运行的最大数量
  1. JVM重用
-- 通过以下设置开启JVM重用
set mapred.job.reuse.jvm.num.tasks = 5;  -- 默认值为1

通过JVM重用减少JVM启动的消耗

  • 默认每个Map或Reduce启动一个新的JVM
  • Map或Reduce运行时间很短时,JVM启动过程占很大开销
  • 通过共享JVM来重用JVM,以串行方式运行MapReduce Job
  • 适用于同一个Job中的Map或Reduce任务
  • 对于不同Job的任务,总是在独立的JVM中运行
  1. 开启严格模式:set hive.mapred.mode=strict
  2. Fetch抓取:有些程序不需要运行mapredcue
  3. 防止数据倾斜
  • group by产生数据倾斜:开启Map端聚合参数设置
  • 大表和小表进行join操作:使用mapjoin 将小表加载到内存
  • 空值产生的数据倾斜:id为空的不参与关联
  • 给空值分配随机的key值:小文件过多或文件过于复杂
  • 合理设置Map和Reduce的数量:map设置:主要是设置块大小和切片大小,reduce设置:在driver端设置,在hive中设置
  1. explain:显示查询语句的执行计划,但不运行
    语法:EXPLAIN [EXTENDED|DEPENDENCY|AUTHORIZATION] hive_query
    EXTENDED
    提供执行计划关于操作的额外信息,比如文件路径
    DEPENDENCY
    提供JSON格式输出,包括查询所依赖的表和分区列表
    AUTHORIZATION
    列出所有需要授权的实体,包括查询的输入输出和授权失
  2. 压缩算法:减少传输数据量,会极大提升MapReduce性能
  3. 查询优化
  • 自动启动Map端Join
  • 防止数据倾斜:set hive.optimize.skewjoin=true;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值