hive安装日志

Hive日志记录了程序运行的过程,在Hive中,日志分为两种:

  1. 系统日志。记录了Hive的运行情况,错误状况。
  2. Job日志。记录了Hive中Job的执行过程。

1、系统日志存储在什么地方呢?
在 ${HIVE_HOME}/conf/hive-log4j.properties 文件中记录了Hive日志的存储情况,
默认的存储情况:

hive.root.logger=WARN,DRFA
hive.log.dir=/tmp/${user.name}/ # 默认的存储位置
hive.log.file=hive.log # 默认的文件名

Hive日志默认存储在以下目录中: /tmp/${user.name}/hive.log。当然,也可以设置一个不同的hive日志位置,有两种方式:

(1)Hive启动时指定日志目录。

hive --hiveconf hive.log.dir=/tmp/ --hiveconf hive.log.file=tmp.log

(2)通过在 $HIVE_HOME/conf/hive-log4j.properties文件中设置hive.log.dir参数。

hive.log.dir=/tmp/

2、Job日志又存储在什么地方呢 ?

# 源码加载方式
HIVEHISTORYFILELOC("hive.querylog.location", "/tmp/" + System.getProperty("user.name"))

默认存储在 /tmp/${user.name} 目录下,和系统日志默认存储路径相同。

二、Hive日志调试

Hive默认的日志级别是WARN,不能将DEBUG信息输出,但在进行进行问题定位时,可以修改日志级别,利用调试日志进行错误定位。具体设置方法有两种:

1、启动Hive客户端时添加参数进入DEBUG模式(定位问题的常用方式)

hive --hiveconf hive.root.logger=DEBUG,console

2、在${HIVE_HOME}/conf/hive-log4j.properties文件中找到 hive.root.logger 属性,并将其修改为下面的设置

hive.root.logger=DEBUG,console

方法一的设定只对本次会话有效,下次如果还想继续修改日志输出级别需要重新设定,这种设定适合临时需要查看更多日志的用户。方法二将日志输出级别设定到文件里,这个设定对所有用户都生效,而且每次执行HQL都会输出一大堆日志,这种情况适合那些无时无刻都需要HQL运行日志的用户。

注:针对两个方法的综合,还有一种实现方式,既可以不用每次设定日志级别,也能长期生效,就是设定自己的log4j配置文件,在启动Hive的时候指定自己的配置文件,如下:

hive --hiveconf hive.log4j.file=/home/kwang/hive-log4j.properties

三、如何查看实际环境中Hive的日志级别?

最直接的方式是启动hive cli客户端,可以看到日志文件加载的具体配置文件:

 可以看到,hive cli加载的配置文件是 /opt/cloudera/parcels/CDH-5.14.4-1.cdh5.14.4.p0.3/jars/hive-common-1.1.0-cdh5.14.4.jar!/hive-log4j.properties,日志级别默认是 WARN 级别,这个配置的文件的日志级别可以在 hive-common 源码模块的资源文件 hive-log4j.properties 中看到:

# Define some default values that can be overridden by system properties
hive.log.threshold=ALL
hive.root.logger=WARN,DRFA
hive.log.dir=${java.io.tmpdir}/${user.name}
hive.log.file=hive.log

在这里我们就能看到Hive任务执行时的日志级别。

接下来我们看看Hive是如何加载日志配置文件的。我们知道hive cli启动时主要依赖 hive-common 模块和 hive-exec 模块,在上面介绍的 hive-common 源码模块的资源文件是日志级别是WARN级别的,而在 hive-exec 源码模块的资源文件 hive-exec-log4j.properties 中日志级别是 INFO级别:

hive.log.threshold=ALL
hive.root.logger=INFO,FA
hive.log.dir=${java.io.tmpdir}/${user.name}
hive.query.id=hadoop
hive.log.file=${hive.query.id}.log

这里提到的两个日志文件也就对应前面介绍的系统级别日志与任务级别日志。清楚了这两个日志配置文件,我们再来看看Hive在启动客户端时是如何加载日志的。

转载自Hive任务日志及日志调试 - 笨小康u - 博客园

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

chde2Wang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值