Hadoop启动时,没有启动DataNode
1、问题
有时候Hadoop没关闭就格式化NameNode,经常会出现没有启动 DataNode 的情况
2、原因
当我们使用 hadoop namenode -format
格式化 NameNode 时,会在 NameNode 数据文件夹(这个文件夹为自己配置文件中 dfs.name.dir 的路径)中保存一个 current/VERSION 文件,记录 clusterID,DataNode 中保存的 current/VERSION 文件中的 clustreID 的值是上一次格式化前保存的 clusterID,这样,DataNode 和 NameNode 之间的ID不一致,导致启动 DataNode 的情况
3、解决办法
3.1 删除 dfs 文件夹(dfs文件夹中没有重要的数据)
dfs 目录在 ${HADOOP_HOME}/tmp/,删除后重新格式化 namenode ,再启动服务就可以看到 datanode 出现了
3.2 复制 clusterID(dfs文件夹中有着重要的数据)
在 ${HADOOP_HOME}/tmp/dfs/name 目录下找到一个 current/VERSION 文件,记录 clusterID 并复制。
然后 ${HADOOP_HOME}/tmp/dfs/data 目录下找到一个 current/VERSION 文件,将其中 clustreID的值替换成刚刚复制的 clusterID 的值即可
jps 一下,DataNode 出现啦
4、总结
每次运行结束 Hadoop 后,都要执行 stop-all.sh
关掉Hadoop所有服务。下次想重新运行 Hadoop,不用再格式化 NameNode ,直接启动 Hadoop 即可