// 启动 journalnode(在所有 datanode 上执行,也就是 cluster1, cluster2, cluster3)

$ hadoop-daemon.sh start journalnode 启动后使用 jps 命令可以看到 JournalNode 进程

// 格式化 HDFS(在 cluster1 上执行)

$ hdfs namenode -format

// 格式化完毕后可关闭 journalnode(在所有 datanode 上执行)

$ hadoop-daemon.sh stop journalnode

// 启动 HDFS(cluster1 上)

$ start-dfs.sh

// 启动后 cluster1 上使用 jps 可以看到 NameNode, DataNode, SecondaryNameNode cluster2 和 cluster3 上可以看到 DataNode

$ jps

-----------------------------------------------------------------------------------------------------------------------------------------

结果,cluster1 上使用 jps 看到 NameNode, SecondaryNameNode cluster2 和 cluster3 上什么都没看到!!!!

原因是:

当我们使用hadoop namenode -format格式化namenode时,会在namenode数据文件夹(这个文件夹为自己配置文件中dfs.name.dir的路径)中保存一个current/VERSION文件,记录clusterID,datanode中保存的current/VERSION文件中的clustreID的值是上一次格式化保存的clusterID,这样,datanode和namenode之间的ID不一致。

也就是只能格式化一次,以后不用格式化了!!!

解决方法:

hadoop启动history hadoop启动jps缺少datanode_hadoop启动history

删除后,重新格式化一次,再启动,就可以看到了!

hadoop启动history hadoop启动jps缺少datanode_HDFS_02

hadoop启动history hadoop启动jps缺少datanode_hadoop启动history_03