问题描述:
执行./start-dfs.sh
之后,使用jps
查询进程时,发现dataNode并未启动;执行./stop-dfs.sh
之后,发现:no datanode to stop
分析过程:
当使用hdfs namenode -format
格式化namenode时,会重新生成集群的相关信息,特别是clusterID,每次刷新都会产生一个新 的clusterID;但是该操作却不会影响DataNode节点的集群信息;
会在namenode数据文件夹中保存一个current/VERSION文件,记录clusterID,而datanode中保存的current/VERSION文件中的clusterID的值是第一次格式化保存的clusterID,这样导致datanode和namenode之间的ID不一致,从而出现问题;
解决过程:
-
查看
hdfs-site.xml
文件获取Hadoop数据存储的位置,分别找到…/dfs/name/current,…/dfs/data/current目录下的VERSION文件,查看NameNode和DataNode节点的clusterID-
修改namenode与datanode的clusterID的值;
-
停止HDFS集群后,同时删除NameNode和DataNode节点中配置的存储Hadoop数据的文件目录的所有子目录及文件;
-
再次使用
hdfs namenode -format
命令格式化NameNode节点,重启HDFS集群。
执行格式化过程中出现如下提示:
Call From bigdata-pro01.bigDAta.com/192.168.1.151 to bigdata-pro01.bigDAta.com:8485 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused at org.apache.hadoop.hdfs.qjournal.client.QuorumException.create(QuorumException.java:81) at org.apache.hadoop.hdfs.qjournal.client.QuorumCall.rethrowException(QuorumCall.java:223) at org.apache.hadoop.hdfs.qjournal.client.QuorumJournalManager.hasSomeData(QuorumJournalManager.java:232) at org.apache.hadoop.hdfs.server.common.Storage.confirmFormat(Storage.java:884) at org.apache.hadoop.hdfs.server.namenode.FSImage.confirmFormat(FSImage.java:171) at org.apache.hadoop.hdfs.server.namenode.NameNode.format(NameNode.java:937) at org.apache.hadoop.hdfs.server.namenode.NameNode.createNameNode(NameNode.java:1379) at org.apache.hadoop.hdfs.server.namenode.NameNode.main(NameNode.java:1504)
解决过程:
执行
./sbin/hadoop-daemon start journalnode
命令,在次执行格式化命令。在修改过程中出现了namenode无法启动的问题:
Directory /opt/modules/hadoop-2.6.0/data/tmp/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
-
重新进行namenode
格式化