hadoop reformat
问题
ha集群
在hbase运维过程中,遇到这个问题:
2014-03-10 16:48:05,306 FATAL org.apache.hadoop.hdfs.server.namenode.NameNode: Exception in namenode join
java.io.IOException: There appears to be a gap in the edit log. We expected txid 35976735, but got txid 35976803.
at org.apache.hadoop.hdfs.server.namenode.MetaRecoveryContext.editLogLoaderPrompt(MetaRecoveryContext.java:94)
原因:
集群运行时,加入新机器,这时对hdfs-site.xml中的namenode进行了namenode -format操作,导致问题(clusterid expected 和seen 不符,txid expected 和seen 不符)。加入新机器时要额外小心配置。布置一个新集群时如果拷贝这个集群的配置,也一定要将namenode等设置配置好,否则等同于重新 namenode format运行中的集群。
解决:
1.停止namenode,停止journalnode
2.将active nn的current目录和journal下的current目录拷贝到 standby nn的对应目录下 (注意权限)
3.启动nn1,nn2
ha的namenode启动步骤,参照:
在namenode机器上启动namenode
(这里假定namenode1为active,namenode2为standby)
a.
如果是首次启动,在namenode1上运行format命令
bin/hadoop namenode -format
如果是非首次启动,则在namenode1上运行以下命令
bin/hdfs namenode -initializeSharedEdits
如果有是否ReFormat,选择 Y
b.
然后在namenode1上启动namenode
sbin/hadoop-daemon.sh start namenode
c.
在namenode2上运行以下命令
sbin/hadoop-daemon.sh start namenode -bootstrapStandby
d.
如果namenode2上有namenode,kill掉再启动。
然后在namenode2上启动namenode
sbin/hadoop-daemon.sh start namenode
这时,namenode1和namenode2都启动了,都是“standby”状态
e.
查看namenode的状态
bin/hdfs haadmin -getServiceState nn1
bin/hdfs haadmin -getServiceState nn2
如果都是standby,说明成功
在namenode1上运行bin/hdfs haadmin -transitionToActive nn1
这样,namenode1的状态就变成“active”
感谢白杨夫的指导http://my.csdn.net/baiyangfu