zoukankan      html  css  js  c++  java
  • Hive任务日志及日志调试

    一、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运行日志的用户。

    注:针对两