hbase修復 資料無法寫入到表中。

2021-08-11 06:54:53 字數 4485 閱讀 5773

2、解決步驟

我們輸入hbck命令檢視hbase的集群問題:

#根據上面的圖我們發現有region有空的row,所以我們需要進行修復一下:

[hadoop@namenode2 opt]$ hbase hbck -fixemptymetacells

然後我們再檢視hbase的集群情況:

至此問題就已經解決了,下面是hbck的詳細命令解釋,是從他人的部落格上copy的。

新版本的 hbck 可以修復各種錯誤,修復選項是:     

(1)-fix,向下相容用,被-fixassignments替代

(2)-fixassignments,用於修復region assignments錯誤

(3)-fixmeta,用於修復meta表的問題,前提是hdfs上面的region info資訊有並且正確。

(4)-fixhdfsholes,修復region holes(空洞,某個區間沒有region)問題

(5)-fixhdfsorphans,修復orphan region(hdfs上面沒有.regioninfo的region)

(6)-fixhdfsoverlaps,修復region overlaps(區間重疊)問題

(7)-fixversionfile,修復缺失hbase.version檔案的問題

(8)-maxmerge

(n預設是5),當region有重疊是,需要合併region,一次合併的region數最大不超過這個值。

(9)-sidelinebigoverlaps ,當修復region overlaps問題時,允許跟其他region重疊次數最多的一些region不參與(修復後,可以把沒有參與的資料通過bulk load載入到相應的region)

(10)-maxoverlapstosideline

(n預設是2),當修復region overlaps問題時,一組裡最多允許多少個region不參與

由於選項較多,所以有兩個簡寫的選項

(11) -repair,相當於-fixassignments

-fixmeta

-fixhdfsholes

-fixhdfsorphans

-fixhdfsoverlaps

-fixversionfile

-sidelinebigoverlaps

(12)-repairholes,相當於-fixassignments

-fixmeta

-fixhdfsholes

-fixhdfsorphans

新版本的 hbck

(1)缺失hbase.version檔案

加上選項 -fixversionfile 解決

(2)如果乙個region即不在meta表中,又不在hdfs上面,但是在regionserver的online region集合中

加上選項 -fixassignments 解決

(3)如果乙個region在meta表中,並且在regionserver的online region集合中,但是在hdfs上面沒有

加上選項 -fixassignments

-fixmeta 解決,( -fixassignments告訴regionserver close region),( -fixmeta刪除meta表中region的記錄)

(4)如果乙個region在meta表中沒有記錄,沒有被regionserver服務,但是在hdfs上面有

加上選項 -fixmeta

-fixassignments 解決,( -fixassignments 用於assign region),( -fixmeta用於在meta表中新增region的記錄)

(5)如果乙個region在meta表中沒有記錄,在hdfs上面有,被regionserver服務了

加上選項 -fixmeta 解決,在meta表中新增這個region的記錄,先undeploy region,後assign

(6)如果乙個region在meta表中有記錄,但是在hdfs上面沒有,並且沒有被regionserver服務

加上選項 -fixmeta 解決,刪除meta表中的記錄

(7)如果乙個region在meta表中有記錄,在hdfs上面也有,table不是disabled的,但是這個region沒有被服務

加上選項 -fixassignments 解決,assign這個region

(8)如果乙個region在meta表中有記錄,在hdfs上面也有,table是disabled的,但是這個region被某個regionserver服務了

加上選項 -fixassignments 解決,undeploy這個region

(9)如果乙個region在meta表中有記錄,在hdfs上面也有,table不是disabled的,但是這個region被多個regionserver服務了

加上選項 -fixassignments 解決,通知所有regionserver close region,然後assign region

(10)如果乙個region在meta表中,在hdfs上面也有,也應該被服務,但是meta表中記錄的regionserver和實際所在的regionserver不相符

加上選項 -fixassignments 解決

(11)region holes

需要加上 -fixhdfsholes ,建立乙個新的空region,填補空洞,但是不assign 這個 region,也不在meta表中新增這個region的相關資訊

(12)region在hdfs上面沒有.regioninfo檔案

-fixhdfsorphans 解決

(13)region overlaps

需要加上 -fixhdfsoverlaps

說明:

(1)修復region holes時,-fixhdfsholes 選項只是建立了乙個新的空region,填補上了這個區間,還需要加上-fixassignments

-fixmeta 來解決問題,( -fixassignments 用於assign region),( -fixmeta用於在meta表中新增region的記錄),所以有了組合拳 -repairholes 修復region holes,相當於-fixassignments

-fixmeta

-fixhdfsholes

-fixhdfsorphans

(2) -fixassignments,用於修復region沒有assign、不應該assign、assign了多次的問題

(3)-fixmeta,如果hdfs上面沒有,那麼從meta表中刪除相應的記錄,如果hdfs上面有,在meta表中新增上相應的記錄資訊

(4)-repair 開啟所有的修復選項,相當於-fixassignments

-fixmeta

-fixhdfsholes

-fixhdfsorphans

-fixhdfsoverlaps

-fixversionfile

-sidelinebigoverlaps

新版本的hbck從(1)hdfs目錄(2)meta(3)regionserver這三處獲得region的table和region的相關資訊,根據這些資訊判斷並repair

修復資料庫和修復表

use master gosp dboption 資料庫名 single user true go dbcc checkdb 資料庫名 repair allow data loss gouse 資料庫名 goexec sp msforeachtable dbcc checktable 表名 repa...

mysql修復資料表

myisamchk 修復工具 mysql 自帶了專門使用者資料表檢查和修復的工具 myisamchk,當 repair.php 多次修復均無法成功時,可以在伺服器終端使用 myisamchk 進行修復。在 mysql 的程式檔案目錄 見 資料備份與恢復 中的說明 可以找到這個工具。常用的修復命令為 ...

mysql修復資料表

myisamchk 修復工具 mysql 自帶了專門使用者資料表檢查和修復的工具 myisamchk,當 repair.php 多次修復均無法成功時,可以在伺服器終端使用 myisamchk 進行修復。在 mysql 的程式檔案目錄 見 資料備份與恢復 中的說明 可以找到這個工具。常用的修復命令為 ...