Hadoop启动异常情况解决方案

1. 启动时报WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable错误。

原因:动态库获取路径为/home/hadoop/local/opt/hadoop//lib,实际动态库路径为/home/hadoop/local/opt/hadoop/lib/native,将native所有动态库复制一份到上级目录,再执行启动命令。

cd /usr/local/hadoop/hadoop-2.6.0/lib/native/
cp -r ./* ../

2. 关闭hadoop时若显示no nodemanager to stop或者no datanode to stop;先进行上面的操作,再进行下面的操作:

rm -r /usr/local/hadoop/hadoop-2.6.0/tmp
rm -r /usr/local/hadoop/hadoop-2.6.0/dfs

mkdir /usr/local/hadoop/hadoop-2.6.0/tmp
mkdir /usr/local/hadoop/hadoop-2.6.0/dfs/
mkdir /usr/local/hadoop/hadoop-2.6.0/dfs/name
mkdir /usr/local/hadoop/hadoop-2.6.0/dfs/data

/usr/local/hadoop/hadoop-2.6.0/bin/hadoop namenode -format

并且 在 hadoop-env.sh 和 yarn-env.sh 中设置好了pid的存储路径:

首先建立/var/hadoop/pids的存储路径;

在 hadoop-env.sh 中设置如下:

export HADOOP_PID_DIR=/var/hadoop/pids

在yarn-env.sh 中设置如下:

export YARN_PID_DIR=/var/hadoop/pids

 3. Hadoop-2.6.0集群部署时打开50070页面,始终live nodes数目不对的问题:

/etc/hosts文件配置存在逻辑的错误:一个ip对应两个名字,Linux系统应该只采纳排序靠头的记录,当之后有同ip的记录时,估计会抛弃。

192.168.1.233 localhost
192.168.1.233 hadoop1

当hadoop的内部机制会把【192.168.1.233 localhost】的映射发送到各个slave节点,最后造成一个回环,每个节点获得namenode的信息都是localhost名字,而具体到各个机器,localhost反向映射到自己,最后造成集群中一个死路回环。解决方法:把localhost放在最后面,并且写成127.0.0.1.

192.168.1.233 hadoop1
127.0.0.1     localhost

最好建议:/etc/hosts文件,一个ip只对应一个有效的机器名字,避免逻辑冗余与回环。最好不要使用127.0.0.1或localhost。

原文地址:https://www.cnblogs.com/fuleying/p/4556690.html