Hive 公司调优总结(一)

举报
bigdata张凯翔 发表于 2021/03/28 00:25:31 2021/03/28
【摘要】 1.开启Fetch抓取 Hive优化(十四)- Fetch抓取(Hive可以避免进行MapReduce) 2.使用本地模式 Hive优化(十五)-本地模式(小数据集缩短执行时间) 3.表的优化 Hive优化(九)-表优化 4.数据倾斜 Hive优化(五)-避免数据倾斜 ​ 某一个reduce处理数据量太大,产生处理效率降低。 1)map个数的设置 blocksize mi...

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是不是越多越好
    对于小文件,要进行合并操作
  • 3)是不是保证每个map处理接近128m的文件块,就高枕无忧了?
reduce的设置

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

5.并行执行

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

6.严格模式

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

7.JVM重用

  • JVM重用是Hadoop调优参数的内容,其对Hive的性能具有非常大的影响,特别是对于很难避免小文件的场景或task特别多的场景,这类场景大多数执行时间都很短。
  • Hadoop的默认配置通常是使用派生JVM来执行map和Reduce任务的。这时JVM的启动过程可能会造成相当大的开销,尤其是执行的job包含有成百上千task任务的情况。JVM重用可以使得JVM实例在同一个job中重新使用N次。N的值可以在Hadoop的mapred-site.xml文件中进行配置。通常在10-20之间,具体多少需要根据具体业务场景测试得出。
<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(执行计划)

文章来源: www.jianshu.com,作者:百忍成金的虚竹,版权归原作者所有,如需转载,请联系作者。

原文链接:www.jianshu.com/p/f1ea5e325a85

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。