今天在启动前几天搭建成功的hadoop集群的时候,出现了datanode启动之后自动关闭的情况,经过查询之后发现问题产生的原因是:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。
(该路径是配置文件hdfs-site.xml中指定的dfs.tmp.dir路径,如果在hdfs-site.xml中没有配置该属性,则该路径将为core-site.xml文件中指定的hadoop.tmp.dir路径)
第一种方法:
删除运行datanode的机器上的tmp文件夹,重新启动集群,启动成功!
(但是上面的方法会将hdfs中的所有文件删除,如果上面存有重要的文件,并不建议这么做!)
第二种方法:
将namenode机器上的dfs.tmp.dir/tmp/dfs/name/current里面的VERSION文件的clusterID属性值赋值给datanode机器上的dfs.tmp.dir/tmp/dfs/data/current里面的VERSION文件中的clusterID属性。让两个保持一致。
至此,重新启动集群,问题解决!