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