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。