背景:hadoop版本切换
hadoop 版本从2.6.5 切换到了2.7.4
结果datanode 启动失败
日志分析
错误提示namespaceIDs不一致。
解决办法1
删掉hadoop tmp目录下所有数据后,重新格式化
- 停掉集群服务
- 在出问题的datanode节点上删除data目录,data目录即是在hdfs-site.xml文件中配置的dfs.data.dir目录,本机器上那个是/var/lib/hadoop-0.20/cache/hdfs/dfs/data/ (注:我们当时在所有的datanode和namenode节点上均执行了该步骤。以防删掉后不成功,可以先把data目录保存一个副本).
- 格式化namenode.
- 重新启动集群。
原因
每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有晴空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下 的所有目录.
这种方法带来的一个副作用即是,hdfs上的所有数据丢失。如果hdfs上存放有重要数据的时候,不建议采用该方法,可以尝试提供的网址中的第二种方法。
解决办法2
更新有问题的datanode 的namespaceID
- 停止datanode
- 编辑datanode namespaceID in
/current/VERSIO to match the value of the current namenode - 重启datanode
|
|