问题:
使用命令脚本启动hadoop之后,用jps命令查看节点进程发现有DataNode进程,但是一段时间之后就不见了,就是DataNode进
程异常,由于某种原因导致无法启动或者启动后数据节点DataNode进程自动关闭。
解决:
1.查看DataNode节点日志(注意如果没有配置hadoop日志路径默认在$HADOOP_INSTALL/logs目录下,也就是安装目录的
logs文件夹里,当然可以修改hadoop-env.sh文件中的HADOOP_LOG_DIR,比如加入export HADOOP_LOG_DIR=/var/log
/hadoop)
查看日志发现警告:
“Failed to add storage directory [DISK]file:/tmp/hadoop-hadoop/dfs/data/”,添加存储文件失败
失败路径:“/tmp/hadoop-hadoop/dfs/data/”。
紧接着报Java IO异常“java.io.IOException”,异常信息里显示的是,namenode和datanode的clusterID不一致,这些异常就导致
了后面提示初始化失败、DataNode进程退出等异常、警告信息。
2.该问题因为多次对namenode进行format,每一次format主节点NameNode产生新的clusterID、namespaceID,于是导致主
节点的clusterID、namespaceID与各个子节点DataNode不一致。当format过后再启动hadoop,hadoop尝试创建新的current目
录,但是由于已存在current目录,导致创建失败,最终引起DataNode节点的DataNode进程启动失败,从而引起hadoop集群完全
启动失败。
因此可以通过直接清空数据节点DataNode的数据文件夹(core-site.xml的hadoop.tmp.dir),解决该问题。
rm -rf data/*