Hadoop - Hive日志

502 阅读2分钟

Hive日志系统

Hive使用log4j作为日志系统。

  1. 默认情况下日志不会被输出到客户端
  2. 默认的log level: 0.13之前WARN,0.13之后INFO
  3. 日志存储位置:/tmp/<user.name>/hive.log
    • local模式下,0.13版本之前,Hive的log文件是.log,(靠!!bug),0.13之后修复了。

配置日志文件位置,修改文件$HIVE_HOME/conf/hive-log4j.properties中:

hive.log.dir= <other_location>

将日志输出到控制台:

bin/hiveserver2 --hiveconf hive.root.logger=INFO,console

不能够使用SET命令在运行时设置hive.root.logger环境变量的值,因为对于日志的控制只在初始化的时候起作用

Hive 还在 /tmp/<user.name>/ 中基于每个 Hive 会话存储查询日志,但是可以在hive-site.xml文件中配置hive.querylog.location属性。

Hive的执行日志通过Hadoop的配置来控制,通常Hadoop会为每一个MapReduce任务产生一个日志文件,存储在执行任务的机器上。这个文件可以在Hadoop的Web UI上看到。

当使用Local-Mode执行任务的时候,Hive/Hadoop任务执行产生的日志存储在客户端机器本身,Hive 使用 hive-exec-log4j.properties(仅当它丢失时回退到 hive-log4j.properties)来确定默认情况下将这些日志传送到哪里。提供单独的配置文件的目的是使管理员能够在需要时集中执行日志捕获(例如在 NFS 文件服务器上)。

HiveServer2 日志

HiveServer2的日志在Hive 0.14版本之后才可用,具体详情可以查看:HiveServer2 Log

审计日志

每次 Metastore API 调用都会从 Hive Metastore 服务器记录审计日志。

性能记录器(Perf Logger)

为了通过性能记录器获取性能指标,需要为性能记录器设置LogLever为:DEBUG

log4j.logger.org.apache.hadoop.hive.ql.log.PerfLogger=DEBUG

如果记录器级别已经通过 hive.root.logger 在 root 中设置为 DEBUG,则不需要上述设置来查看性能日志。