hadoop reformat

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



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章