hbase hbck深入
官网介绍:http://hbase.apache.org/book.html#hbck.in.depth
hbck深入 HBaseFsck(hbck)是一个用于检查区域一致性和表完整性问题并修复损坏的HBase的工具。它工作在两种基本模式 - 只读不一致识别模式和多阶段读写修复模式。
C.1。运行hbck来识别不一致
要检查您的HBase集群是否损坏,请针对您的HBase集群运行hbck:
$ ./bin/hbase hbck
在命令输出结束时,它会打印OK或告诉您存在的INCONSISTENCIES数量。您可能还想运行hbck几次,因为一些不一致可能是暂时的(例如,群集正在启动或区域正在分裂)。在操作上,您可能希望定期运行hbck并在其重复报告不一致时设置警报(例如通过nagios)。一连串的hbck将报告不一致的列表以及受影响的区域和表格的简要描述。使用该
-details
选项将报告更多细节,包括所有表格中所有分割的代表性列表。$ ./bin/hbase hbck -details
如果您只想知道某些表是否已损坏,则可以限制hbck以仅在特定表中标识不一致。例如,以下命令只会尝试检查表TableFoo和TableBar。好处是hbck运行时间更短。
$ ./bin/hbase hbck TableFoo TableBar
C.2。不一致性
如果经过多次运行,不一致仍会继续报告,您可能会遇到腐败现象。这些应该是罕见的,但是如果它们发生在较新版本的HBase中,则包括启用了自动修复选项的hbck工具。
有两个不变式在违反HBase时会产生不一致:
- 如果每个区域都被分配和部署在一个区域服务器上,并且这个状态保存的所有地方都是一致的,那么HBase的区域一致性不变是满足的。
- 如果对于每个表,每个可能的行键只解析为一个区域,HBase的表完整性不变是满足的。
-fix
命令行选项完成。如果这些问题在错误的服务器或多个区域服务器上打开,则这些问题会关闭区域,并且如果区域服务器未打开,也会将区域分配给区域服务器从HBase版本0.90.7,0.92.2和0.94.0开始,引入了几个新的命令行选项来帮助修复损坏的HBase。这个hbck有时会被昵称“uberhbck”取代。每个特定版本的uber hbck都与相同主版本的HBase兼容(0.90.7 uberhbck可以修复0.90.4)。但是,版本.90.90.6和版本?0.92.1可能需要重新启动主节点或故障转移到备份主节点。
C.3。本地化维修
修复损坏的HBase时,最好先修复最低风险的不一致。这些通常是区域一致性修复 - 局部单一区域修复,它只修改内存数据,临时动物园管理员数据或META表中的修补程序漏洞。区域一致性要求HBase实例具有HDFS(.regioninfo文件)中区域数据的状态,hbase:meta表中的区域行,以及区域服务器和主区域上的区域部署/分配。修复区域一致性的选项包括:
-fixAssignments
(相当于0.90-fix
选项)可修复未分配,错误分配或乘数分配的区域。
-fixMeta
当HDFS中不存在相应的区域时删除元行,并且如果它们的区域存在于HDFS中而不在META中则添加新的元行。要修复部署和分配问题,您可以运行以下命令:
$ ./bin/hbase hbck -fixAssignments
要修复部署和分配问题以及修复不正确的元行,您可以运行以下命令:
$ ./bin/hbase hbck -fixAssignments -fixMeta
有几类表完整性问题是低风险修复。前两个是简并(startkey == endkey)区域和向后区域(startkey> endkey)。这些通过将数据旁路到临时目录(/ hbck / xxxx)来自动处理。第三个低风险类是hdfs地区漏洞。这可以通过使用以下来修复:
-fixHdfsHoles
选项用于在文件系统上制作新的空白区域。如果检测到漏洞,则可以使用-fixHdfsHoles,并应包含-fixMeta和-fixAssignments以使新区域保持一致。
$ ./bin/hbase hbck -fixAssignments -fixMeta -fixHdfsHoles
由于这是一种常见操作,因此我们添加了一个
-repairHoles
与上一个命令等效的标志:$ ./bin/hbase hbck -repairHoles
如果这些步骤之后仍然存在不一致问题,则很可能出现与孤立或重叠区域相关的表完整性问题。
C.4。地区重叠修理
表完整性问题可能需要处理重叠的修复。这是一项风险较大的操作,因为它需要修改文件系统,需要做出一些决策,并且可能需要一些手动步骤。对于这些修理,最好分析一次
hbck -details
运行的输出,以便在检查发现问题时仅隔离维修尝试。因为这是更危险的,所以应该使用保护来限制维修的范围。警告:这是一个相对较新的版本,只在线上测试过,但闲置的HBase实例(没有读/写)。在积极的生产环境中使用您自己的风险!修复表完整性违规的选项包括:-fixHdfsOrphans
选择“采用”缺少区域元数据文件(.regioninfo文件)的区域目录。
-fixHdfsOverlaps
固定重叠区域的能力
-maxMerge
最大数量的重叠区域要合并
-sidelineBigOverlaps
如果超过maxMerge区域重叠,副业尝试旁路与其他大多数区域重叠的区域。
-maxOverlapsToSideline
如果大面积重叠的地区,副业最多n个地区。
-repair
包括所有区域一致性选项以及只有孔修复表完整性选项。
$ ./bin/hbase hbck -repair TableFoo TableBar
C.4.1。特殊情况:Meta未正确分配 有一些hbck可以处理的特殊情况。有时,元表唯一的区域不一致地分配或部署。在这种情况下,有一个特殊
-fixMetaOnly
选项可以尝试修复元分配。$ ./bin/hbase hbck -fixMetaOnly -fixAssignments
C.4.2。特殊情况:HBase版本文件丢失 【hbase hbck深入】HBase的文件系统数据需要一个版本文件才能启动。如果缺少这个文件,您可以使用该
-fixVersionFile
选项来制作新的HBase版本文件。这假设您正在运行的hbck版本是适用于HBase集群的版本。C.4.3。特例:Root和META已损坏。 最严重的腐败情况是ROOT或META损坏且HBase无法启动的情况。在这种情况下,您可以使用OfflineMetaRepair工具创建新的ROOT和META区域和表格。该工具假定HBase处于离线状态。然后通过现有的HBase主目录进行游览,从文件系统尽可能多地从区域元数据文件(.regioninfo文件)中加载信息。如果区域元数据具有适当的表完整性,则会旁路原始根目录和元目录表目录,并使用指向区域目录及其数据的指针构建新的目录。
$ ./bin/hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair
这个工具不像uberhbck那样聪明,但可以用来引导uberhbck可以完成的修复。如果工具成功,您应该能够启动hbase并在必要时运行联机修复。 |
-fixSplitParents
选项在META中重置它们以联机并且不拆分。因此,如果使用修复重叠区域选项,hbck可以将它们与其他区域合并。这个选项通常不应该被使用,并且它不在
-fixAll
。推荐阅读
- 深入理解Go之generate
- 【1057快报】深入机关,走下田间,交通普法,共创文明
- 生发知识,带你深入了解
- 深入理解|深入理解 Android 9.0 Crash 机制(二)
- 深入浅出谈一下有关分布式消息技术(Kafka)
- mysql|一文深入理解mysql
- mvcc原理和hbase实现
- Java并发编程|Java并发编程 - 深入剖析ReentrantLock之非公平锁加锁流程(第1篇)
- 深入浅出JavaScript8章节第01章语法
- 深入理解redis——布隆过滤器BloomFilter