最近在學習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