我是靠谱客的博主 怕孤单眼睛,最近开发中收集的这篇文章主要介绍HIVE使用过程中,运行出错调试总结一、调试方法二、具体错误总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

HIve调试

  • 一、调试方法
    • 1.1 主要方法
    • 1.2 查看工作日志
  • 二、具体错误总结
    • 2.1 服务启动相关问题
    • 2.2 检查resourcemanager运行日志,发现异常如下:
      • 2.2.1 解决方案一
      • 2.2.2 解决方案二
      • 2.2.3 解决方案三
    • 2.3 控制台报如下错误:
    • 2.4 hadoop 进入安全模式
    • 2.5 内存溢出
    • 2.6 Hive cli 不显示表头信息:hive-site.xml
    • 2.7 yarn 集群中所有namenode 都处于 standby 状态
    • 2.8 如果,hive中数据库表的中文变为?
    • 2.9 jps查询进程 出现 [1]+
    • 2.10 jps查看进程 出现 PID -- process information unavailable

一、调试方法

1.1 主要方法

  1. 查看工作日志
  2. 查看配置参数

1.2 查看工作日志

Hive运行环境下,执行如下指令,查看Hive运行日志
指令:tmp/运行用户名(root)/hive.log
注意:如果不能发现问题,或者日志文件只包含 code 1/2 之间的数据,可以通过namenode检查hadoop运行日志

二、具体错误总结

2.1 服务启动相关问题

  1. hadoop [ha] running ?
    解决:jps 查看服务状态。缺少啥,单独启动啥。
  2. hadoop ha nn1/nn2 active ?
    解决:hdfs haadmin -transitionToActive nn1[nn2]
  3. mysql [d] running ?
    解决:systemctl restart mysql
  4. hiveserver2(RunJar) running ?
    解决:kill -9 PID nohup hivserver2 >/dev/null 2>&1 &

2.2 检查resourcemanager运行日志,发现异常如下:

	Got exception: org.apache.hadoop.yarn.exceptions.YarnException:Unauthorized request to start container.
This token is expired. current time is 1598286603872 found 1598258405375
Note: System times on machines may be out of sync. Check system time and time zones.

2.2.1 解决方案一

启动namenode的节点 执行如下指令

  1. 查看时区
    date + ‘%Z’
  2. 设置时区
    rm /etc/localtime
    mkdir /etc/localtime
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  3. 查看时区
    yum --y install ntpdate.x86_64
    timedatectl

2.2.2 解决方案二

  1. 退出 hadoop的安全模式
    hadoop dfsadmin --safemode leave

2.2.3 解决方案三

  1. 本地时钟服务器搭建
    rpm -qa |grep ntp
    yum -y remove ntpdate-4.2.6p5-29.e17.centos.x86_64
  2. 安装ntp
    yum -y install ntp
  3. 修改所有节点的 /etc/ntp.conf
    vi /etc/ntp.conf
    主节点:
    # 当前节点的IP地址
    restrict 192.168.8.116 nomodify notrap nopeer noquery
    # 集群所在网段的网关Gateway,子网掩码Netmask
    restrict 192.168.8.0 mask 255.255.255.0 nomodify notrap
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    server 127.127.1.0
    Fudge 127.127.1.0 stratum 10
    从节点:
    # 当前节点的IP地址
    restrict IP地址 nomodify notrap nopeer noquery
    # 集群所在网段的网关Gateway,子网掩码Netmask
    restrict 192.168.8.0 mask 255.255.255.0 nomodify notrap
    #server 0.centos.pool.ntp.org iburst
    #server 1.centos.pool.ntp.org iburst
    #server 2.centos.pool.ntp.org iburst
    #server 3.centos.pool.ntp.org iburst
    server 主节点IP地址
    Fudge 主节点IP地址 stratum 10
  4. 启动ntp服务
    service ntpd start
  5. 设置开机启动
    chkconfig ntpd on
  6. 查看ntp状态
    systemctl status ntpd
    watch “ntpq -p”

2.3 控制台报如下错误:

Error: Error while processing statement: FALLED: Execution Error,return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask (state=08S01,code=1)

原因:文件权限无法访问
解决:1)设置hdfs访问权限
hdfs dfs -chmod 777 /path/file
解决2:配置hive的配置文件hive-site.xml
hdfs.permissions默认是true开启状态->仅测试环境使用
编辑配置信息:

<property>
<name>dfs.permissions</name>
<value>false</value>
</property>

2.4 hadoop 进入安全模式

解决:退出安全模式

  1. 查看安全模式
    hdfs dfsadmin -safemode get
  2. 退出安全模式
    hadoop dfsadmin --safemode leave

2.5 内存溢出

错误提示

java.lang.OutOfMemoryError:Java heap space

解决:修改hadoop配置文件yarn-site.xml

<property>
<name>yarn.sheduler.maximum-allocation-mb</name>
<vlaue>2048</value>
</property>
<property>
<name>yarn.sheduler.minimum-allocation-mb</name>
<vlaue>2048</value>
</property>
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<vlaue>2.1</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<vlaue>-Xmx1024m</value>
</property>

2.6 Hive cli 不显示表头信息:hive-site.xml

解决
hive.cli.print.header
true

2.7 yarn 集群中所有namenode 都处于 standby 状态

解决:手动唤醒yarn集群中某一个节点
hdfs haadmin -transitionToActive nn1

2.8 如果,hive中数据库表的中文变为?

解决

  1. 修改 my.cnf 配置
vi /etc/my.cnf
[client]
port=3306
socket=/var/lib/mysql/mysql.sock
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
character-set-server=utf8
[mysql]
no-auto-rehash
default-character-set=utf8
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
  1. 永久配置虚拟机字符集
    vi /etc/profile
    编辑输入:
    export LANG=zh_CN.UTF-8

2.9 jps查询进程 出现 [1]+

原因
nohup文件日志过大造成磁盘文件已满,清理nohup日志文件命令
解决
清空nohup.out的命令。

  1. 方式一:cp /dev/null nohup.out
  2. 方式二:cat /dev/null > nohup.out

2.10 jps查看进程 出现 PID – process information unavailable

原因:错误的 kill -9 PID 命令杀死进程,导致tmp文件残留
解决
方案一

  1. cd /tmp
  2. 找到 PID号对应的残留文件
  3. 删除这个文件:rm -rf 残留文件名

方案二
执行 tmpwatch 命令删除 /tmp 目录下文件
指令:yum -y install tmpwatch
4. tmpwatch -af 1 /tmp 删除/tmp目录下,1小时未使用的文件
5. tmpwatch -af 1m /tmp 删除/tmp目录下,1分钟未使用的文件
6. tmpwatch -af 1d /tmp 删除/tmp目录下,1天未使用的文件

指令解读
-u, --atime 基于访问时间来删除文件,默认的。
-m, --mtime 基于修改时间来删除文件。
-c, --ctime 基于创建时间来删除文件,对于目录,基于mtime。
-M, --dirmtime 删除目录基于目录的修改时间而不是访问时间。
-a, --all 删除所有的文件类型,不只是普通文件,符号链接和目录。
-d, --nodirs 不尝试删除目录,即使是空目录。
-d, --nosymlinks 不尝试删除符号链接。
-f, --force 强制删除。
-q, --quiet 只报告错误信息。
-s, --fuser 如果文件已经是打开状态在删除前,尝试使用“定影”命令。默认不启用。
-t, --test 仅作测试,并不真的删除文件或目录。
-U, --exclude-user=user 不删除属于谁的文件。
-v, --verbose 打印详细信息。
-x, --exclude=path 排除路径,如果路径是一个目录,它包含的所有文件被排除了。如果路径不存在,它必须是一个绝对路径不包含符号链接。
-X, --exclude-pattern=pattern 排除某规则下的路径。

最后

以上就是怕孤单眼睛为你收集整理的HIVE使用过程中,运行出错调试总结一、调试方法二、具体错误总结的全部内容,希望文章能够帮你解决HIVE使用过程中,运行出错调试总结一、调试方法二、具体错误总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部