美文网首页
记一次hive调优之旅

记一次hive调优之旅

作者: LearnBigData | 来源:发表于2019-09-26 07:40 被阅读0次

    我遇到的业务场景是统计10个维度的用户画像数据,之前我是放在一个shell脚本里串行跑,总共跑下来差不多要9个多小时:从数据预处理、维度统计、数据上传三大部分。

    9个多小时,时间有点长啊,受不鸟了,所以就想着怎么优化hive和集群,然后就各种百度,按照网上的一通操作下来并没啥用,也许是我用的方式不对,所以后面就干脆自己尝试着研究。

    我们肯定要明确调优方向:hive,那么这就涉及到hdfs、hive、yarn。。。
    首先是hdfs,这块这次基本上没动;
    其次是hive本身,首先使用了Tez,CDH怎么集成Tez,这个看我之前的那篇文章,不多说。。下面讲讲这次调整的参数:

    参数名 修改前 修改后 参数说明
    hive.execution.engine 默认mr tez 执行引擎
    hive.exec.parallel 默认flase true 是否允许并行
    hive.exec.parallel.thread.number 默认8 32 是否允许并行
    hive.tez.container.size 默认无 6144M tez容器的容量大小

    具体在CDH页面上配置如下:


    hive.png

    第三,是重点yarn了,因为所有的hive任务,都需要yarn来分配资源的

    参数名 修改前 修改后 参数说明
    yarn.scheduler.minimum-allocation-mb 1024M 6144M 可申请的最少内存资源,以MB为单位
    yarn.scheduler.maximum-allocation-mb 40752M 8192M 可申请的最大内存资源,以MB为单位
    yarn.nodemanager.resource.memory-mb 37526M 61440M NM总的可用物理内存,以MB为单位
    yarn.nodemanager.resource.cpu-vcores 24 30 可分配的CPU个数
    yarn.scheduler.minimum-allocation-vcores 1 3 可申请的最小虚拟CPU个数
    yarn.scheduler.maximum-allocation-vcores 32 8 可申请的最 大虚拟CPU个数

    另外还需要修改一处地方,那就是yarn的资源池


    yarn.png

    经过上述一番设置后,重启yarn和hive,然后再整理一下hive脚本。
    现在基本上是把脚本分成3个:
    execPreProcess.sh :执行数据预处理任务


    execPreProcess.png

    execStatistic.sh :处理10个维度统计的任务


    execStatistic.png

    execSummary.sh:处理汇总上传的任务


    execSummary.png

    现在整体速度由原来的串行执行9小时,到现在并行执行3小时,速度上提升还是比较明显。

    欢迎大家留言讨论
    内容将同步到微信公众号,欢迎关注微信公众号:LearnBigData


    qrcode.jpg

    相关文章

      网友评论

          本文标题:记一次hive调优之旅

          本文链接:https://www.haomeiwen.com/subject/fsokyctx.html