2011-01-25 77 views
2

我有一個由5個節點組成的集羣,我在HBase上創建了幾個表並使用數據填充它。其中一個節點失敗了,現在我可以列出所有的HBase的表,但一個掃描或禁用的兩個表給出了無法訪問HBase表

NativeException: org.apache.hadoop.hbase.client.NoServerForRegionException: No server address listed in .META. for region TableName,,1295871604968

我想刪除該表,但不能讓過去這個問題。我爲此使用了hbase shell。

+0

對於它的價值,事實上很久以後...當我創建一個Snappy壓縮表時,我看到了這個錯誤,但是還沒有將Snappy設置爲HBase。我嘗試改變表格將壓縮設置爲NONE,但錯誤仍然存​​在。然後我丟棄並重新創建表格,錯誤消失。 – dnuttle 2013-08-28 23:48:38

+0

我通過訪問hbase shell來解決我的問題,禁用'table'並啓用它,這要歸功於@WattsInABox的想法 – javinc 2015-12-13 03:35:53

回答

2

我解決了這個問題,通過刪除表中出現錯誤的表的.META.表條目,然後重新創建表。我認爲.META.表將節點的位置保存到死區節點上的區域,並且在節點死亡時由於某種原因無法更新區域位置。條目被刪除後,我可以重新創建表格。我發現了一個關於here的討論,它可以幫助我發現正確的道路。

1

是否可以重新啓動節點?

HBase應該將區域重新分配給其他節點。可能有幾個原因不會發生,但是我可以從頭頂上想到的一個原因是您的HDFS已損壞。如果您的數據節點中沒有複製(或複製數量低於節點失敗次數),則可能會發生這種情況。檢查您的文件系統(hadoop fsck /)

此外,列出您正在使用的hbase和hadoop的版本也很有幫助。如果可能的話,使用hadoop 0.20-append分支(包含在CDH3中)轉到HBase 0.90版本

+0

沒有進入節點的重新啓動,該節點被打破。 – Cornelius 2011-01-28 09:56:52

0

我們遇到了類似的問題,但是我們發誓我們沒有節點。然而,不管它是如何發生的(因爲我們還不太確定),我們如何解決它是我們拍攝了一張搞砸的表格的快照,並從該快照中重新創建了表格。

scan 'mytable' 
ERROR: No server address listed in hbase:meta for region mytable,,1408136497251.5110a0bae8315ed52af93663401ab415. containing row 

原來,即使表在表元搞砸,該數據沒有搞砸,我們能夠把它,刪除和克隆的一個新的快照。

snapshot 'mytable', 'mytable-Snapshot-2014-08-25' 
disable 'mytable' 
drop 'mytable' 
clone_snapshot 'mytable-Snapshot-2014-08-25', 'mytable' 
0

嘗試

沖洗 '.META。'

major_compact '.META。'

在hbase shell &嘗試再次掃描表。

0

在我們的案例中,當有人意外地將我們的某個表格置於「禁用」狀態時,我們發現這個錯誤。這導致該表具有0個區域,因此「在hbase:meta中沒有列出服務器地址」。此修復程序是意識到這是禁用,然後重新啓用它:

hbase is_disabled 'table name'

hbase enable 'table name'