解决hadoop集群中datanode启动后自动关闭的问题
2013-11-02 17:21
911 查看
= 240012870; datanode namespaceID = 1462711424 .
问题:Namenode上namespaceID与datanode上namespaceID不一致。
问题产生原因:每次namenode
format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,所以造成namenode节点上的namespaceID与datanode节点上的namespaceID不一致。启动失败。
第一种解决方法:即:
(1)停掉集群服务
(2)在出问题的datanode节点上删除data目录,data目录即是在hdfs-site.xml文件中配置的dfs.data.dir目录,本机器上那个是/var/lib/hadoop-0.20/cache/hdfs/dfs/data/ (注:我们当时在所有的datanode和namenode节点上均执行了该步骤。以防删掉后不成功,可以先把data目录保存一个副本).
(3)格式化namenode.
(4)重新启动集群。
问题解决。
这种方法带来的一个副作用即是,hdfs上的所有数据丢失。如果hdfs上存放有重要数据的时候,不建议采用该方法,可以尝试提供的网址中的第二种方法。
下面给出两种解决办法,我使用的是第二种。
Workaround 1: Start from scratch
I can testify that the following steps solve this error, but the side effects won’t make you happy (me neither). The crude workaround I have found is to:
1. stop the cluster
2. delete the data directory on the problematic datanode: the directory is specified by dfs.data.dir in conf/hdfs-site.xml; if you followed this tutorial, the relevant directory is /usr/local/hadoop-datastore/hadoop-hadoop/dfs/data
3. reformat the namenode (NOTE: all HDFS data is lost during this process!)
4. restart the cluster
When deleting all the HDFS data and starting from scratch does not sound like a good idea (it might be ok during the initial setup/testing), you might give the second approach a try.
Workaround 2: Updating namespaceID of problematic datanodes
Big thanks to Jared Stehler for the following suggestion. I have not tested it myself yet, but feel free to try it out and send me your feedback. This workaround is “minimally invasive” as you only have to edit one file on the problematic datanodes:
1. stop the datanode
2. edit the value of namespaceID in <dfs.data.dir>/current/VERSION to match the value of the current namenode
3. restart the datanode
If you followed the instructions in my tutorials, the full path of the relevant file is /usr/local/hadoop-datastore/hadoop-hadoop/dfs/data/current/VERSION (background: dfs.data.dir is by default set to ${hadoop.tmp.dir}/dfs/data, and we set hadoop.tmp.dir to
/usr/local/hadoop-datastore/hadoop-hadoop).
If you wonder how the contents of VERSION look like, here’s one of mine:
#contents of <dfs.data.dir>/current/VERSION
namespaceID=393514426
storageID=DS-1706792599-10.10.10.1-50010-1204306713481
cTime=1215607609074
storageType=DATA_NODE
layoutVersion=-13
原因:每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有晴空datanode下的数据,导致启动时失败,所要做的就是每次fotmat前,清空tmp一下 的所有目录.
相关文章推荐
- 解决hadoop集群中datanode启动后自动关闭的问题
- 解决hadoop集群中datanode启动后自动关闭的问题
- 解决hadoop集群中datanode启动后自动关闭的问题
- hadoop2集群中的datanode启动以后自动关闭的问题
- hadoop集群启动后datanode和namenodemanager关闭问题解决
- hadoop运行故障问题解决1——datanode节点启动后自动关闭
- hadoop集群中datanode启动几秒钟自动关闭
- 解决hadoop集群环境datanode无法启动的问题
- 在搭建好Hadoop集群后,namenode与datanode两个过程不能起来,或者一个启动之后另一个自动关闭
- 搭建Hadoop2集群出现Datanode启动不了的问题及解决办法
- hadoop生产集群离线datanode(遇到的问题及解决方法)
- Hadoop集群所有的DataNode都启动不了解决办法
- hadoop 节点链接不通、datanode无法启动问题解决
- hadoop多次格式化namenode造成datanode无法启动问题解决
- hadoop集群只有一个datanode启动问题
- Hadoop集群无法启动datanode的解决方法
- 如何解决Hadoop集群环境下DataNode无法连接NameNode问题
- hadoop集群运行jps命令以后Datanode节点未启动的解决办法
- Hadoop 在重启或者多次格式化后无法启动datanode问题的解决
- hadoop集群启动是的datanode启动时碰到的问题