$ ./bin/hbase hbck -details
如果您只想知道某些表是否已损坏,则可以限制hbck以仅在特定表中标识不一致。例如,以下命令只会尝试检查表TableFoo和TableBar。好处是hbck运行时间更短。
$ ./bin/hbase hbck TableFoo TableBar
C.2。不一致性
如果经过多次运行,不一致仍会继续报告,您可能会遇到腐败现象。这些应该是罕见的,但是如果它们发生在较新版本的HBase中,则包括启用了自动修复选项的hbck工具。
有两个不变式在违反HBase时会产生不一致:
如果每个区域都被分配和部署在一个区域服务器上,并且这个状态保存的所有地方都是一致的,那么HBase的区域一致性不变是满足的。
如果对于每个表,每个可能的行键只解析为一个区域,HBase的表完整性不变是满足的。
修复通常分三个阶段进行:识别不一致的只读信息收集阶段,恢复表完整性不变的表完整性修复阶段,以及最后恢复区域一致性不变的区域一致性修复阶段。从版本0.90.0开始,hbck可以检测关于可能的表完整性问题的子集的区域一致性问题报告。它还包括自动修复最常见的不一致性,区域分配和部署一致性问题的能力。此修复可以通过使用-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固定重叠区域的能力
在修复重叠区域时,可以通过两种方式在文件系统上修改区域的数据:1)通过将区域合并到更大的区域中或2)通过将数据移动到稍后可以恢复数据的“sideline”目录的旁路区域。合并大量区域在技术上是正确的,但可能导致需要一系列昂贵的压缩和分裂操作的非常大的区域。在这些情况下,最好将与其他大多数地区(可能是最大范围)重叠的地区划分开来,以便合并可以在更合理的范围内进行。由于这些边界区域已经布局在HBase的本地目录和HFile格式中,因此可以使用HBase的批量加载机制进行恢复。默认的保障阈值是保守的。
-maxMerge 最大数量的重叠区域要合并
-sidelineBigOverlaps 如果超过maxMerge区域重叠,副业尝试旁路与其他大多数区域重叠的区域。
-maxOverlapsToSideline 如果大面积重叠的地区,副业最多n个地区。
由于您经常只想修复表格,因此您可以使用此选项打开所有修复选项:
-repair 包括所有区域一致性选项以及只有孔修复表完整性选项。
最后,还有一些保护措施可以限制对特定表格的修复。例如,以下命令只会尝试检查并修复表格TableFoo和TableBar。
$ ./bin/hbase hbck -repair TableFoo TableBar
C.4.1。特殊情况:Meta未正确分配
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!