出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。
1:其实网上已经有解决办法了,这里自己脑补一下,也可以让别人看到我是怎么解决的。出现这个问题主要是和配置这个文件相关:core-site.xml;
<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 --> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> <!-- 指定hadoop运行时产生文件的存储目录 --> <property> <name>hadoop.tmp.dir</name> <value>/home/hadoop/hadoop-2.4.1/tmp</value> </property>
主要和配置的这个/home/hadoop/hadoop-2.4.1/tmp的这个tmp目录里面的(这个tmp目录是自己起的,自己开心就好);
而网上是这样解决的:
打开hdfs-site.xml里配置的datanode和namenode对应的目录,分别打开current文件夹里的VERSION,可以看到clusterID项正如日志里记录的一样,确实不一致,修改datanode里VERSION文件的clusterID 与namenode里的一致,再重新启动dfs(执行start-dfs.sh)再执行jps命令可以看到datanode已正常启动。
我感觉这样不是很畅快解决问题,所以直接/home/hadoop/hadoop-2.4.1/tmp/dfs/data/current下面的VERSION删除了,然后再执行一下又重新执行了格式化命令(hdfs namenode -format),最后启动start-dfs.sh和start-yarn.sh就可以了;
2:启动start-dfs.sh和start-yarn.sh显示节点的类别:
1:HDFS的守护进程
(1):主节点:Namenode、SecondaryNamenode
(2):从节点:Datanode
2:YARN的守护进程
(1):主节点:ResourceManager
(2):从节点:NodeManager
3:心灵鸡汤:
有时候,也许坚持下去也不会有所成就,但是放弃肯定是一无所有......致自己;