欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

hive调优

程序员文章站 2022-04-20 18:15:03
1、表和sql的优化 -》大表拆分成小表、分区表、外部表、临时表都是属于优化的一块 -》分区表:检索更快速 -》外部表:数据安全性 -》临时表&拆分子表:简化复杂的SQL以及需求 2、SQL可以从join和fliter两方面深入 3、MR优化 -》map和reduce的个数 -》一个分片就是一个块, ......

1、表和sql的优化
        -》大表拆分成小表、分区表、外部表、临时表都是属于优化的一块
            -》分区表:检索更快速
            -》外部表:数据安全性
            -》临时表&拆分子表:简化复杂的SQL以及需求

 

2、SQL可以从join和fliter两方面深入

 

3、MR优化
            -》map和reduce的个数
                -》一个分片就是一个块,一个块对应一个maptask
                -》Hadoop源码中有一个计算公式
            min(max_split_size,max(min_split_size,block_size))
            -》min_split_size默认值0(最小分片大小)
            -》max取的时候取的是block_size,block_size默认是128
            -》max_split_size默认值256(最大分片大小)
            -》这个公式决定了map的个数
            -》肯定不能直接去修改HDFS的block_size
            -》一般在实际的生产环境中HDFS一旦format格式化之后,block_size大小不会去修改的
            -》通过修改max_split_size和min_split_size来影响map的个数
            -》并行执行
                -》针对有些互相没有依赖关系的独立的job,可以选择并发的执行job
                hive.exec.parallel
                -》是否开启 并行执行的功能
                hive.exec.parallel.thread.number
                -》设置并行执行的线程个数
                -》一般在工作中会选择去开启该功能
                -》根据实际的集群的状况和服务器的性能合理的设置线程数目
            -》JVM重用
                -》mapreduce.job.jvm.numtasks通过合理的测试,设置一个合理的数目
            -》推测执行
                -》当某个任务出现迟迟不结束的情况,那么会考虑开启推测执行,开启一个一模一样的任务去完成
                -》两个任务谁先完成,就会关闭另一个
                -》分为map端的推测和reduce端的推测
                -》不好的地方:过多的消耗资源
                mapreduce.map.speculative
                mapreduce.reduce.speculative
                -》额外消耗节点资源
                -》可能会出现重复写入的情况,产生异常

 

4、hive本地模式
                -》业务场景:处理小数据集的时候,速度会更快一些
                -》hive.exec.mode.local.auto
                -》本地模式的限制:数据的输入大小不能超过128MB
                -》本地模式的限制:map数不能超过4个
                -》本地模式的限制:reduce的个数不能超过1个