欢迎投稿

今日深度:

hive的优化,

hive的优化,


一:hadoop框架的特征:

    1,不怕数据量大,就怕数据倾斜

    2,Jobs 数比较多的作业运行效率相对比较低,如子查询比较多

    3,sum,count,max,min 等聚集函数,通常不会有数据倾斜问题

二:数据倾斜

    由于数据分布不均匀,造成数据大量的key的集中到某一台服务器,造成数据热点

三:容易造成数据倾斜的情况

   1,group by 不和聚集函数搭配使用的时候

   2,count(distinct),在数据量大的情况下,容易数据倾斜,因为 count(distinct)是按 group

        by 字段分组,按 distinct 字段去重

   3,join操作

四:主要表现:
        任务进度长时间维持在 99%或者 100%的附近,查看任务监控页面,发现只有少量 reduce
    子任务未完成,因为其处理的数据量和其他的 reduce 差异过大
        单一 reduce 处理的记录数和平均记录数相差太大,通常达到好几倍之多,最长时间远大

    于平均时长

五:业务场景

    1,空值产生的数据倾斜

    2,不同数据类型关联产生数据倾斜

    3,大小表关联查询

            map join  概念:将其中 做 连接 的小 表(全量 数据 )分发到所有 MapTask  端进行 Join ,从

        而避免了 reduceTask

六:hive的执行过程

         Hive 将 HQL 转换成一组操作符(Operator),比如 GroupByOperator, JoinOperator 等
         操作符 Operator 是 Hive 的最小处理单元
         每个操作符代表一个 HDFS 操作或者 MapReduce 作业
        Hive 通过 ExecMapper 和 ExecReducer 执行 MapReduce 程序,执行模式有本地模式和分

        布式两种模式

七:hive的优化策略

    1,好的设计模型事半功倍

    2, 解决数据倾斜问题

    3,减少job数

    4, 设置合理的mapreduce的task数

    5, 了解的业务的数据分布情况

    6, 数据量较大的情况下,慎用 count(distinct),group by 容易产生倾斜问题

    7,小文件的合并

    8,全局的优化观念

    9,如何做笛卡尔积  MapJoin 在子查询中可能出现未知 BUG  这时 MapJoin 才是最好的解决办法  扩充小表

    10,怎样写 in/exists  语句  用left semi join

    11,设置合理的 maptask 个数

    12,小文件合并

    13, 设置合理的 reduceTask  的 数量  依据 Hadoop  的经验,可以将参数 2  设定为 0.95*( 集群中 datanode  个数) 

    14, 合理利用分区:Partition 

    15, 合理利用分桶:Bucketing 和 和 Sampling

    16,Join  优化
            总体原则:
            1、 优先过滤后再进行 Join 操作,最大限度的减少参与 join 的数据量
            2、 小表 join 大表,最好启动 mapjoin

            3、 Join on 的条件相同的话,最好放入同一个 job,并且 join 表的排列顺序从小到大

    17,Group By 优化 可以在map端做聚合

    18,合理利用文件存储格式

    19,job并行化处理

    20 ,合理利用压缩格式


        


www.htsjk.Com true http://www.htsjk.com/hive/39264.html NewsArticle hive的优化, 一:hadoop框架的特征:     1,不怕数据量大,就怕数据倾斜     2,Jobs 数比较多的作业运行效率相对比较低,如子查询比较多     3,sum,count,max,min 等聚集函数,通常不会有数...
相关文章
    暂无相关文章
评论暂时关闭