Hive 公司调优总结(一)

2020-06-26  本文已影响0人  bigdata张凯翔

1.开启Fetch抓取

Hive优化(十四)- Fetch抓取(Hive可以避免进行MapReduce)

2.使用本地模式

Hive优化(十五)-本地模式(小数据集缩短执行时间)

3.表的优化

Hive优化(九)-表优化

4.数据倾斜

Hive优化(五)-避免数据倾斜
​ 某一个reduce处理数据量太大,产生处理效率降低。

1)map个数的设置

blocksize minsplit maxsplit
max(minsplit ,min(blocksize ,maxsplit))
set dfs.blocksize;

  • 2)map是不是越多越好
    对于小文件,要进行合并操作
reduce的设置

1)recude是不是越多越好
不是,浪费资源
如何有效的设置reduce个数
如果指定分区,最好按照指定分区的个数进行设置
如果动态分区,需要自己按照数据量的大小进行尝试分区

5.并行执行

Hive优化(十七)-并行执行

6.严格模式

Hive优化(十七)-严格模式

7.JVM重用

<property>
  <name>mapreduce.job.jvm.numtasks</name>
  <value>10</value>
  <description>How many tasks to run per jvm. If set to -1, there is
  no limit. 
  </description>
</property>

这个功能的缺点是,开启JVM重用将一直占用使用到的task插槽,以便进行重用,直到任务完成后才能释放。如果某个“不平衡的”job中有某几个reduce task执行的时间要比其他Reduce task消耗的时间多的多的话,那么保留的插槽就会一直空闲着却无法被其他的job使用,直到所有的task都结束了才会释放。

8.推测执行

Hive优化(十八)-推测执行

9.压缩

待续,有需要可以关注我,哈哈哈!

10.执行计划(Explain)

Hive优化(十六)-使用EXPLAIN(执行计划)

上一篇下一篇

猜你喜欢

热点阅读