目录

hive-中各种参数

hive 中各种参数

在 Apache Hive 中,参数(也称为配置属性)用于控制 Hive 的行为和性能。这些参数可以优化查询性能、调整资源使用、解决数据倾斜问题等。Hive 参数通常分为以下几类:


1. 查询执行参数

这些参数用于控制查询的执行方式和性能。

1.1 MapReduce 相关参数

  • hive.exec.reducers.bytes.per.reducer :

    • 默认值:256 MB( 256000000
    • 作用:每个 Reduce 任务处理的数据量。
    • 示例: SET hive.exec.reducers.bytes.per.reducer = 500000000; (每个 Reducer 处理 500 MB 数据)
  • hive.exec.reducers.max :

    • 默认值:1009
    • 作用:设置最大的 Reduce 任务数。
    • 示例: SET hive.exec.reducers.max = 2000;
  • hive.exec.parallel :

    • 默认值: false
    • 作用:是否启用并行执行。
    • 示例: SET hive.exec.parallel = true;
  • hive.exec.dynamic.partition :

    • 默认值: false
    • 作用:是否启用动态分区。
    • 示例: SET hive.exec.dynamic.partition = true;
  • hive.exec.dynamic.partition.mode :

    • 默认值: strict
    • 作用:动态分区模式, strict 表示必须指定至少一个静态分区, nonstrict 表示可以完全动态分区。
    • 示例: SET hive.exec.dynamic.partition.mode = nonstrict;

1.2 聚合和倾斜优化参数

  • hive.map.aggr :

    • 默认值: true
    • 作用:是否在 Map 阶段进行聚合。
    • 示例: SET hive.map.aggr = true;
  • hive.groupby.skewindata :

    • 默认值: false
    • 作用:是否启用数据倾斜优化。
    • 示例: SET hive.groupby.skewindata = true;
  • hive.optimize.skewjoin :

    • 默认值: false
    • 作用:是否启用 Skew Join 优化。
    • 示例: SET hive.optimize.skewjoin = true;

1.3 Join 优化参数

  • hive.auto.convert.join :

    • 默认值: true
    • 作用:是否自动将小表转换为 Map Join。
    • 示例: SET hive.auto.convert.join = true;
  • hive.mapjoin.smalltable.filesize :

    • 默认值:25 MB( 25000000
    • 作用:小表的大小阈值,超过该值则不转换为 Map Join。
    • 示例: SET hive.mapjoin.smalltable.filesize = 50000000; (50 MB)

2. 资源管理参数

这些参数用于控制 Hive 任务的资源分配。

2.1 内存相关参数

  • hive.auto.convert.join.noconditionaltask.size :

    • 默认值:10 MB( 10000000
    • 作用:Map Join 中小表的大小阈值。
    • 示例: SET hive.auto.convert.join.noconditionaltask.size = 20000000; (20 MB)
  • hive.tez.container.size :

    • 默认值:-1(未设置)
    • 作用:设置 Tez 容器的内存大小。
    • 示例: SET hive.tez.container.size = 4096; (4 GB)

2.2 并行度和任务数

  • hive.exec.parallel.thread.number :

    • 默认值:8
    • 作用:并行执行的线程数。
    • 示例: SET hive.exec.parallel.thread.number = 16;
  • hive.tez.grouping.max-size :

    • 默认值:1 GB( 1073741824
    • 作用:Tez 任务的最大分组大小。
    • 示例: SET hive.tez.grouping.max-size = 2147483648; (2 GB)

3. 数据存储和压缩参数

这些参数用于控制数据的存储格式和压缩方式。

3.1 存储格式

  • hive.default.fileformat :

    • 默认值: TextFile
    • 作用:设置默认的文件存储格式。
    • 示例: SET hive.default.fileformat = ORC;
  • hive.exec.compress.output :

    • 默认值: false
    • 作用:是否压缩输出数据。
    • 示例: SET hive.exec.compress.output = true;

3.2 压缩参数

  • hive.exec.compress.intermediate :

    • 默认值: false
    • 作用:是否压缩中间数据。
    • 示例: SET hive.exec.compress.intermediate = true;
  • mapreduce.map.output.compress.codec :

    • 默认值: org.apache.hadoop.io.compress.DefaultCodec
    • 作用:设置 Map 输出数据的压缩编解码器。
    • 示例: SET mapreduce.map.output.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;

4. 日志和调试参数

这些参数用于控制日志输出和调试信息。

4.1 日志级别

  • hive.log.level :

    • 默认值: INFO
    • 作用:设置 Hive 的日志级别。
    • 示例: SET hive.log.level = DEBUG;
  • hive.querylog.location :

    • 默认值: /tmp/<user>
    • 作用:设置查询日志的存储位置。
    • 示例: SET hive.querylog.location = /var/log/hive/querylog;

4.2 调试参数

  • hive.debug.localtask :

    • 默认值: false
    • 作用:是否启用本地任务调试。
    • 示例: SET hive.debug.localtask = true;

5. 其他常用参数

  • hive.fetch.task.conversion :

    • 默认值: minimal
    • 作用:控制是否将简单查询转换为 Fetch 任务。
    • 示例: SET hive.fetch.task.conversion = more;
  • hive.execution.engine :

    • 默认值: mr (MapReduce)
    • 作用:设置 Hive 的执行引擎。
    • 示例: SET hive.execution.engine = tez;

总结

Hive 提供了丰富的参数来优化查询性能、管理资源和调试任务。常用的参数包括:

  • 查询执行参数 :如 hive.exec.reducers.bytes.per.reducerhive.groupby.skewindata
  • 资源管理参数 :如 hive.tez.container.sizehive.exec.parallel.thread.number
  • 存储和压缩参数 :如 hive.default.fileformathive.exec.compress.output
  • 日志和调试参数 :如 hive.log.levelhive.debug.localtask

根据具体场景合理配置这些参数,可以显著提升 Hive 的性能和效率。