记录一下自己在工作中经常用到的几个参数设置,从调整的实际效果看还是有效果的。
企业相关服务器资源配置:平均600台active的节点,
每个节点可用的内存在200G左右,可用的memory total:116T
1、set hive.exec.parallel=true;
开启job的并行:基本每个hql脚本都会开启这个参数,默认并行度为8,
在集群资源充足的情况下,可以提高job并行的数量:
set hive.exec.parallel.thread.number=16; (企业生产中我是很少用到这个的,都是用的默认值,因为太消耗资源怕影响别的任务,搞不好会被运维抓住,邮件通报批评!当然使用时还是看具体情况吧!)
因为需求中一张表的job的数量每次基本都在20个以上,在相关维度多,涉及到的字段逻辑复杂的情况下,
一张表中job的数量会超过100个,之前做的一个需求中insert插入的脚本中job的数量达到了169个,
在测试环境运行的时候只用了一个小时就跑完了,数据量在一亿条左右,大概有一百多G。
2、set hive.map.aggr=true;
在map端中会做部分聚集操作,效率更高但需要更多的内存,可以根据自己企业的资源情况来设置,
如果我的脚本涉及到的数据量不大的话,我一般不会开启这个参数。
3、set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;
hive0.5开始的默认值,执行map前进行小文件合并,在一个job中生成的map的数量很多的时候,
和第二个参数一起开启配合使用,在实际生产中多次验证发现可以减少一倍以上的map数量。
在开启前我的一个job的map数量有577个,开启后的map的数量只有196个,极大提高程序的运行效率。
4、set mapred.max

最低0.47元/天 解锁文章
1588

被折叠的 条评论
为什么被折叠?



