在很多程序中,我们都可以通过输出日志的形式来得到程序运行情况,通过这些输出日志来调试程序,Hive也不例外。在Hive中,使用的是Log4j来输出日志,默认情况下,CLI是不能将日志信息输出到控制台的。在Hive0.13.0之前的版本,默认的日志级别是WARN,在Hive0.13.0开始,默认的日志级别是INFO。默认的日志存放在/tmp/文件夹的hive.log文件中,全路径就是/tmp//hive.log。

注:这里有一个的bug,在本地模式下,log文件名为".log",而不是"hive.log",可以在这里看到https://issues.apache.org/jira/browse/HIVE-5528,这个bug将会在Hive0.13.0中得到解决。

在默认的日志级别情况下,是不能将DEBUG信息输出,这样一来出现的各种详细的错误信息都是不能查看到的。但是我们可以通过以下两种方式修改log4j输出的日志级别,从而修改log4j输出的日志级别,从而利用这些调试日志进行错误定位,具体做法如下:

[wyp@master ~]$ hive --hiveconf hive.root.logger=DEBUG,console

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

hive.root.logger=DEBUG,console

上面两种方式的设置各有优劣,方法一的设定只是对本次会话有效,下次如果还想修改日志输出级别需要重新设定,但不是每时每刻都需要修改日志的输出级别,我们只有在碰到错误的时候才会看看详细信息,所以这种方法还是不错的;对于方法二将日志输出级别设定到配置文件中,这个设定对所有用户都生效,避免了每次开启CLI的时候都要重新设置,但是这种情况无时无刻都会打印HQL一大堆的运行日志,看起来比较不雅。

另外还有一点就是上一篇文章Hive几种参数配置的方法中提到的,有一些系统级的参数,在HQL中设定是无效的。这里就是一个很好的例子。因为设定Log的参数读取会在会话建立以前完成。这也就是说,我们不能通过下面的方法来修改log4j的日志输出级别:

hive> set hiveconf:hive.root.logger=DEBUG,console;

这样你在进入CLI的时候将会得到一些类似下面的调试信息:

[wyp@master /home/q/hive-0.11.0-bin/conf]$ hive

................................为了篇幅,省略了很多............................

13/12/25 15:14:54 DEBUG parse.VariableSubstitution: Substitution is on: hive

................................为了篇幅,省略了很多............................

13/12/25 15:14:54 DEBUG security.Groups: Creating new Groups object

13/12/25 15:14:54 DEBUG util.NativeCodeLoader: Trying to load the c...

library for your platform... using builtin-java classes where applicable

13/12/25 15:14:54 DEBUG security.JniBasedUnixGroupsMappingWithFallback:

Falling back to shell based

13/12/25 15:14:54 DEBUG security.JniBasedUnixGroupsMappingWithFallback:

Group mapping impl=org.apache.hadoop.security.ShellBasedUnixGroupsMapping

13/12/25 15:14:54 DEBUG security.UserGroupInformation: hadoop login

13/12/25 15:14:54 DEBUG security.UserGroupInformation: using local

user:UnixPrincipal: wyp

13/12/25 15:14:54 DEBUG security.UserGroupInformation:

UGI loginUser:wyp (auth:SIMPLE)

................................为了篇幅,省略了很多............................

下面举个日志调试的例子,在没有修改日志输出级别之前,有下面的查询所有表的HQL如下:

hive> show tables;

FAILED: Error in metadata: java.lang.RuntimeException: Unable to instantiate

org.apache.hadoop.hive.metastore.HiveMetaStoreClient

FAILED: Execution Error, return code 1 from

org.apache.hadoop.hive.ql.exec.DDLTask

hive>

得到上面的错误,我们从上面的错误输出只知道是元数据有问题,具体的错误也不知道是啥,这时候如果我们修改日志调试级别hive.root.logger=DEBUG,console,我们再看看运行上面语句的错误输出:

hive> show tables;

................................为了篇幅,省略了很多............................

13/12/25 15:23:58 INFO metastore.ObjectStore: ObjectStore, initialize called

13/12/25 15:23:58 ERROR Datastore.Schema: Failed initialising database.

Access denied for user 'datalog5'@'l-datalog5.data.cn1' (using password: YES)

org.datanucleus.exceptions.NucleusDataStoreException:

Access denied for user 'datalog5'@'l-datalog5.data.cn1' (using password: YES)

at org.datanucleus.store.rdbms.ConnectionFactoryImpl

$ManagedConnectionImpl.getConnection(ConnectionFactoryImpl.java:536)

at org.datanucleus.store.rdbms.RDBMSStoreManager.

(RDBMSStoreManager.java:290)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

................................为了篇幅,省略了很多............................

通过上面的错误堆栈我们就可以将问题定位到数据库连接的问题上,这么一来错误的定位范围就大大减少了,我们可以查看hive-site.xml文件中的数据库连接配置是否正确,从而解决问题。

hive 日誌怎麼查看_Hive日志调试 | 学步园相关推荐

  1. hive 日誌怎麼查看_Hive各个日志里都存放了什么信息?

    审计日志 首先,对于审计日志来说,记录了某个时间点某个用户从哪个IP发起对HiveServer或者MetaStore的请求以及记录执行的语句是什么. 如下的HiveServer审计日志,表示在2016 ...

  2. mysql查看session对应的ip_Mysql 查看session连接数,状态 | 学步园

    命令: show processlist; 如果是root帐号,你能看到所有用户的当前连接.如果是其它普通帐号,只能看到自己占用的连接. show processlist;只列出前100条,如果想全列 ...

  3. 【方案】去哪儿网徐磊:如何利用开源技术构建日处理130亿+的实时日志平台?...

    转自:http://mp.weixin.qq.com/s?__biz=MzIzMzEzODYwOA==&mid=2665284466&idx=1&sn=2b06a5298217 ...

  4. codeigniter_如何在浏览器中查看CodeIgniter日志文件

    codeigniter by Seun Matt 通过Seun Matt 如何在浏览器中查看CodeIgniter日志文件 (How to View CodeIgniter Log Files in ...

  5. 如何查询oracle最近报警信息,教你怎样用Oracle方便地查看报警日志错误

    在网上查了几天的资料,尝试综合清除告警日志内容及建外部表的方式来解决这一问题. 一:备份并清除告警日志内容 将每天的告警日志备份好,然后进行清除. 1:备份报警日志 在$ORACLE_HOME/SID ...

  6. oracle告警日志备份,教你怎样用Oracle方便地查看报警日志错误

    在网上查了几天的资料,尝试综合清除告警日志内容及建外部表的方式来解决这一问题. 一:备份并清除告警日志内容 将每天的告警日志备份好,然后进行清除. 1:备份报警日志 在$ORACLE_HOME/SID ...

  7. SmartNews:基于 Flink 加速 Hive 日表生产的实践

    简介: 将 Flink 无缝地集成到以 Airflow 和 Hive 为主的批处理系统的技术挑战和应对方案. 本文介绍了 SmartNews 利用 Flink 加速 Hive 日表的生产,将 Flin ...

  8. 日志查看_实时查看容器日志

    实时查看容器日志 介绍一款使用了几个月的开源小工具,Dozzle.它是一款轻量.简单的容器日志查看工具. 本篇将简单介绍如何使用它,包括搭配 Traefik,以及如何快速从源码构建它. 写在前面 这款 ...

  9. iis php日志查看工具,教你如何查看IIS日志

    网站的服务器会把访问信息.服务器的工作以及每一个文件的调用,记录在这个IIS日志里,所以学会查看IIS日志不仅可以相对准确的了解一些页面的访问,还可以得知搜索引擎蜘蛛的情况,目前虽然有很多的IIS日志 ...

  10. ADB命令连接逍遥模拟器并查看安卓日志

    1.先进入逍遥模拟器安装目录(MEmu文件夹下),如:D:\Program Files\Microvirt\MEmu 在CMD下输入:adb connect 127.0.0.1:21503 2.实时查 ...

最新文章

  1. excel 如何快速实现绝对引用
  2. ASP操作Excel技术总结
  3. PInvoke调用导致堆栈不对称
  4. volatile 关键字是如何保证可见性的?
  5. 转载通过 Docker 实现传统应用程序的现代化
  6. 数组玩法(1):下标移位
  7. [转]java中的io笔记
  8. java反编译jar包
  9. 计算机毕业设计——基于SSM框架的公寓租房管理系统的设计与实现
  10. PHP 高并发秒杀解决方案
  11. DELPHI 编程(一) __快速认识Delphi
  12. 2021年中国发改委和财政部PPP项目整体现状分析,城市基础建设仍是重中之重「图」
  13. MacBook在任意文件夹目录打开终端
  14. python处理mp4视频提取音频转为mp3或者wav,并进行截取
  15. 第三十三章 SQL命令 DROP INDEX
  16. Android 开发之初识 Android
  17. java小组项目口号,小组口号霸气押韵大全(精选60句)
  18. 一些小软件闪退的解决方案
  19. GIT TAG 批量删除
  20. NAND FLASH编程器烧录详解

热门文章

  1. nginx封锁恶意IP,并且定时取消的两种脚本
  2. SQL Server高可用——日志传送(4-3)——使用
  3. Oracle中索引的使用 索引性能优化调整
  4. VS2010与VS2012变化的快捷键
  5. Linux下,如何安装有互相依赖关系的RPM包[转]
  6. php正则验证邮箱、手机号、姓名、身份证、特殊符号等
  7. 六石编程学:如何整合两个项目的代码
  8. 由捧哏巨匠谈创新的难度
  9. 输入法快捷键导致功能软件功能失效
  10. E: flAbsPath on /var/lib/dpkg/status failed - realpath (2: 没有那个文件或目录)