Hadoop 问题解决

本文最后更新于:2024年3月18日 凌晨

Hadoop 问题解决

启动 Hadoop 时提示 Could not resolve hostname

报错:如果启动 Hadoop 时遇到输出非常多"ssh: Could not resolve hostname xxx”的异常情况,如下图所示:

解决方法:这个并不是 ssh 的问题,可通过设置 Hadoop 环境变量来解决。

  1. 首先按键盘的 ctrl + c 中断启动,然后在~/.bashrc中,增加如下两行内容(设置过程与 JAVA_HOME 变量一样,其中 HADOOP_HOME 为 Hadoop 的安装目录):
1
2
export HADOOP_HOME=/usr/local/hadoopexport
HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
  1. 保存后,务必执行 source ~/.bashrc 使变量设置生效,然后再次执行 ./sbin/start-dfs.sh 启动 Hadoop
  2. 启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: NameNode,DataNodeSecondaryNameNode
  3. 如果 SecondaryNameNode 没有启动,请运行 sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试。
  4. 如果没有 NameNode 或 DataNode,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。

Hadoop无法正常启动的解决方法

解决方法

  • 一般可以查看启动日志来排查原因,注意几点:
    • 启动时会提示形如"DBLab-XMU: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.out”,其中 DBLab-XMU 对应你的机器名,但其实启动日志信息是记录在 /usr/local/hadoop/logs/hadoop-hadoop-namenode-DBLab-XMU.log 中,所以应该查看这个后缀为 .log 的文件。
    • 每一次的启动日志都是追加在日志文件之后,所以得拉到最后面看,对比下记录的时间就知道了。
    • 一般出错的提示在最后面,通常是写着 Fatal,Error,Warning 或者 Java Exception 的地方。
    • 可以在网上搜索一下出错信息,看能否找到一些相关的解决方法。
  • 此外,若是 DataNode 没有启动,可尝试如下的方法(注意这会删除 HDFS 中原有的所有数据,如果原有的数据很重要请不要这样做):
1
2
3
4
cd /usr/local/hadoop./sbin/stop-dfs.sh   # 关闭。
rm -r ./tmp # 删除 tmp 文件,注意这会删除 HDFS 中原有的所有数据。
./bin/hdfs namenode -format # 重新格式化。
NameNode./sbin/start-dfs.sh # 重启。
  • 成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。

Java API 远程hbase出错

报错

1
2
3
4
5
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed after attempts=36, exceptions:

Tue Jul 19 16:36:05 CST 2016, null, java.net.SocketTimeoutException: callTimeout=60000, callDuration=79721: row 'testtable,,' on table 'hbase:meta' at region=hbase:meta,,1.1588230740, hostname=ubuntu,16020,1468916750524, seqNum=0

Caused by: java.net.UnknownHostException: ubuntu

原因:hbase会根据192.168.137.25 找到虚拟机主机,并且根据主机hosts文件解析IP127.0.0.1,这就造成了无法识别主机名。

解决方法

  1. 修改linux的host
1
2
3
4
vim /etc/hosts

# 127.0.0.1 ubuntu
172.16.245.129 ubuntu
  1. 修改本机的host
1
172.16.245.129 ubuntu

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!