大数据Spark “蘑菇云”行动第94课:Hive性能调优之Mapper和Reducer设置、队列设置和并行执行、JVM重用和动态分区、Join调优
  TEZNKK3IfmPf 2023年11月14日 15 0

大数据Spark “蘑菇云”行动第94课:Hive性能调优之Mapper和Reducer设置、队列设置和并行执行、JVM重用和动态分区、Join调优

hive> show databases;
use default;
show tables;
select * from employeesforhaving;

hive> EXPLAIN select * from employeesforhaving;//HIVE的stage类似spark的stage

hive> EXPLAIN select * from employeesforhaving where>10000;
hive> use hivestudy;
show tables;
hive> EXPLAIN  select * from users join ratings on users.usrid =ratings.userid;
hive> EXPLAIN  EXTENDED  select * from users join ratings on users.usrid =ratings.userid;

在现在的hive底层中运行mapper和reducer的时候,mapper的个数由splits的个数确定,reduce的个数默认是1个;


设置HIVE的reduce的个数3个;

hive> set mapred.reduce.tasks =3 ; 

 

hive> set mapred.queue.name=default ;
hive> set mapred.queue.name=hive ;


hive在默认情况只会在同一时间执行一个stage,但是我们可以通过设置hive.exec.parallel为true来让可以并行执行的stage并行化,从而更好的利用集群的计算资源。

JVM的重用在hive性能优化中非常重要,mapred.job.reuse.jvm.num.tasks =10 ,也就是这个jvm可以运行10个任务,例如运行10个mapper;
如果小文件比较多的话,会对性能有1倍左右的提高;


动态分区提高空间的有效利用率
set.hive.exec.dynamic.partition =true ;
set.hive.exec.dynamic.partition.mode  =nonstrict;

hive的join操作一般问题都是数据倾斜,尤其是在小表(该小表又比较大)和大表关联的情况下,如果小表比较大,可以通过设置
参数,对小表进行broadscast;但是,问题来了,小表比较大进行广播会产生OOM,网络传输小表的时候也是一个非常大的开销,
例如,小表是1000万条记录,而大表是10亿条记录,小表和大表进行join,怎么办了,如可先进行map端的reduce操作。

hive的解决方案和spark的解决方案完全一样。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2024年04月26日   62   0   0 hadoopHive
TEZNKK3IfmPf