Hive调优

  • Post author:
  • Post category:其他


  1. 系统调优
  • 避免执行MR

设置hive.fetch.task.conversion = more 简单查询不走mr

设置hive.fetch.task.conversion = none 所有查询都走MR

  • 本地模式执行

Hive 在集群上查询时,默认是在集群上 N 台机器上运行, 需要多个机器进行协调运行,这 个方式很好地解决了大数据量的查询问题。但是当 Hive 查询处理的数据量比较小时,其实没有必要启动分布式模式去执行,因为以分布式方式执行就涉及到跨网络传输、多节点协调 等,并且消耗资源。这个时间可以只使用本地模式来执行 mapreduce job,只在一台机器上执行,速度会很快。启动本地模式涉及到三个参数:

      • set hive.exec.mode.local.auto=true; #开启本地mr
      • set hive.exec.mode.local.auto.inputbytes.max=50000000; #设置local mr的最大输入数据量,当输入数据量小于这个值时采用local mr的方式,默认为134217728,即128M
      • set hive.exec.mode.local.auto.input.files.max=10; #设置local mr的最大输入文件个数,当输入文件个数小于这个值时采用local mr的方式,默认为4
  • 选择合适的存储格式

创建表时,尽量使用 orc、parquet 这些列式存储格式,因为列式存储的表,每一列的数据在物理上是存储在一起的,Hive查询时会只遍历需要列数



版权声明:本文为believe2017slwx原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。