读书人

hadoop 集群晋级失败记录

发布时间: 2012-08-14 10:39:57 作者: rapoo

hadoop 集群升级失败记录
一.错误概述

?

因为需要使用hadoop与hbase结合使用,所以需要为hadoop hdfs升级使用append写模式。需要对现有的hadoop 0.20.1 升级至0.20.205.0; 升级过程简单的使用 hadoop namenode -upgrade 从 -18 version => -32version(这个是dfs/name/current/VERSION).但我们发现0.20.205跟hive不兼容,所以又安装facebook的hadoop版本(-30版本)。

?

整个升级流程简单来说就是: ?dfs/name/current/VERSION ?-18 => -32 ?=> ?-30. 升级再回滚的过程。

?

?

二. namenode错误处理过程

1。启动namenode失败(第一个错误):?

?

11/12/12 19:34:26 INFO datanode.DataNode: Failed to start datanode org.apache.hadoop.hdfs.server.common.InconsistentFSStateException: Directory /data/hadoop-tmp/hadoop-hadoop/dfs/data is in an inconsistent state: previous and previous.tmp cannot exist together. at org.apache.hadoop.hdfs.server.common.Storage$StorageDirectory.analyzeStorage(Storage.java:427) at org.apache.hadoop.hdfs.server.datanode.DataStorage.recoverTransitionRead(DataStorage.java:113) at org.apache.hadoop.hdfs.server.datanode.DataNode.startDataNode(DataNode.java:332) at org.apache.hadoop.hdfs.server.datanode.DataNode.<init>(DataNode.java:249) at org.apache.hadoop.hdfs.server.datanode.DataNode.makeInstance(DataNode.java:1528) at org.apache.hadoop.hdfs.server.datanode.DataNode.instantiateDataNode(DataNode.java:1477) at org.apache.hadoop.hdfs.server.datanode.DataNode.createDataNode(DataNode.java:1485) at org.apache.hadoop.hdfs.server.datanode.DataNode.main(DataNode.java:1626)

?解决办法:

直接查看源码,发现Storage$StorageDirectory.analyzeStorage()完全是进行相关目录的状态检查。而且跟生产环境的hadoop集群对比,发生没有previous,previous.tmp 两个目录(是升级的备份文件),所以将这两个目录重命名。然后继续启动datanode成功。


最后通过 ?hadoop namenode?-finalize?来结束此次升级,以便删除升级的备份文件

四.本次处理总结:

1. ?对你的hadoop namenode数据及时做好备份,不管是否是测试集群

2. ?查看hadoop源码吧,有时处理问题还是得看源码,因为在google上搜索,资料还是相当少的。

读书人网 >行业软件

热点推荐