Hbase 元數據一致性檢查(轉)


最近在學習HBase先關的知識,順便做一下筆記,以加深知識的了解和掌握。

Hbase常用工具

文件檢測修復工具

hbase hbck -help

常用選項:

-details 顯示所有region檢查的完整報告

-summary 輸出表和狀態的總結信息

-metaonly 只檢查-ROOT-和.META.表

-fixAssignments 用於修復Region分配錯誤

-fixMeta 用於修復.META.表的問題(前提是HDFS上的region信息是正確的)

-fixHdfsHoles 修復RegionHoles問題

-fixHdfsOrphans 修復Orphan Region(HDFS上沒有.regioninfo的Region)

-fixHdfsOverlaps 修復Region區間重疊的問題

-fixVersionFile 修復缺失hbase.version文件問題

快速修復元數據選項

-repair 相當於-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps

-repairHoles 相當於-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans

檢測Hbase集群是否有文件損壞

hbase hbck

hbase hbck -details

快速修復元數據損壞

使用快速修復元數據選項是解決不一致問題風險最低的一種方法

hbase hbck -repair

hbase hbck -repairHoles

修復Region疊加的問題(風險系數高)

hbase hbck -fixHdfsOrphans

#合並region的時候,一次最大合並3個

hbase hbck -fixHdfsOverlaps -maxMerge 3

hbase hbck -fixHdfsOverlaps -sidelineBigOverlaps

#一組中最多允許4個region不參與

hbase hbck -fixHdfsOverlaps -maxOverlapsToSideline 4

修復.META.表沒有正確分配

hbase hbck -fixMetaOnly -fixAssignments

修復版本(hbase.version)丟失的問題

hbase hbck -fixMetaOnly -fixVersionFile

修復-ROOT-和.META.表損壞

當-ROOT-和.META.表損壞的時候,HBase將啟動失敗,這種情況下要使用OFFlineMetaRepair工具創建新的-ROOT-和.META.表。該工具的工作原理是找到HBase在HDFS的主目錄,加載Region的元數據文件信息,然后重新創建新的-ROOT-和.META.表,命令如下:

hbase org.apache.hadoop.hbase.util.OffileMetaRepair

 


hfile文件查看

hbase hfile -v -p -f hiflepath/hiflename

WAL日志查看

hbase hlog -j hlogpath/hlogfilename

 


數據遷移工具

CopyTable  用於在同集群內部或者集群之間復制表的部分或者全部數據的工具

export 可以將表的內容導出成HDFS的序列化文件

import 可以加載導出數據回HBase

WALPlayer 日志回放工具,可以重放WAL文件到HBase

 


Region和RegionServer的管理

major_compact一般會對IO有比較大的影響,因此一般禁用線上系統的自動大合並(配置文件中hbase.hregion.majorcompaction設為0),而采用腳步觸發的方式來進行合並

major_compact可以對表、region、列族等進行合並,常用的是對表和對表的單個region進行大合並,命令如下:

對表進行大合並

major_compact 'tablename'

對表的單個region進行大合並

major_compact 'regionname' #tablename

 


下線regionServer節點

balance_switch false

cd  /data/hbaseadmin/hbaseenv/hbase/bin;  ./hbase-daemon.sh stop regionserver

RegionServer會關閉該server上所有的region,然后關閉自身的進程,在停止過程中,RegionServer會向ZK報告說自己已經過期。master會發現RegionServer已經死掉,會把它當作崩潰的節點來處理,然后會將Region分配到其他的節點上。

下線節點后再開始負載均衡

balance_switch true

優雅地下線RegionServer節點

當RegionServer下線的時候,Region按順序被關閉,如果一個RegionServer上有很多Region,從第一個Region下線,到最后一個Region關閉,並且Master認為其死掉了,該Region才可以上線,整個過程要花很長的時間。HBase 0.90.2中加入了一個graceful_stop的功能,該功能可以讓節點逐漸降低其負載,直到最后關閉。

優雅下線1台RegionSever的命令為:

graceful_stop RegionServer_HOSTNAME

graceful_stop做的工作是逐個地講Region從RegionServer中移除,先移除一個Region,然后將這個Region安置到一個新的地方,再移除下一個,直到Region被全部移除。最后關閉RegionServer。

滾動重啟

for i in `cat conf/regionservers | sort`;do graceful_stop.sh --restart --reload --debug $i;done &  > /tmp/log.txt &

滾動重啟,並解決本地化問題

1、運行hbck確保一致性

    hbase hbck

2、重啟master

   cd /data/hbaseadmin/hbaseenv/hbase/bin && ./hbase-daemon.sh stop master

     ./hbase-daemon.sh start master

3、關閉負載均衡器

    echo  "balance_switch false" | hbase shell

4、滾動重啟RegionServer

    for i in `cat conf/regionservers | sort`;do graceful_stop.sh --restart --reload --debug $i;done &  > /tmp/log.txt &

5、再次重啟Master

    cd /data/hbaseadmin/hbaseenv/hbase/bin && ./hbase-daemon.sh stop master

     ./hbase-daemon.sh start master

6、開啟負載均衡器

    echo  "balance_switch true" | hbase shell

7、運行hbck確保數據一致

    hbase hbck



作者:飛鴻無痕
鏈接:https://www.jianshu.com/p/d34d633460fe


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM