作者:MetaTrade

Hive性能调优实战

  • Hive性能调优多样性
    • 通过改写SQL优化,减少MR任务数
      • 需要理解基本的MR过程和原理,理解HiveSQL是如何转换成计算引擎能运行的算子
      • 多张表关联时,将关联条件相同的表放在一起,只会生成一个MR任务
    • 数据块大小对性能的影响
      • 一般情况下,数据通过网络传输耗费的资源要比本地读写要高的多,要合理设置文件存储的块大小,避免读写文件时进行网络传输
    • 不同的数据格式对性能的影响
      • ORC(主流选择,提高了Hive的读写和处理数据性能,兼容多种计算引擎) > Parquet(列式数据存储格式,兼容多种计算引擎) > SequenceFile(二进制key/value对平面结构文件,早期广泛用于MapReduce) > TextFile
    • 表设计对性能的影响
      • 合理使用分区,分桶,分区分桶表来提升性能
      • 当对一张表进行全量数据计算时,全量表 > 分区表 > 分桶表> 分区分桶表
  • Hive问题排查与调优思路
    • 了解所使用的计算引擎对应的执行计划
    • 大数据分布式计算的基本原理(以MapReduce为例)
      • MapReduce在数据处理时将所有的数据简化成业务无关的键-值对模式,大部分的大数据计算引擎在底层实现上都是这样
      • 在进行数据处理时先将计算发往数据所在的节点,将数据以键-值对作为输入,在本地处理
lock