首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用HBCK2工具修复HBase集群

HBCK2工具是修复工具,可用于修复Apache HBase集群,包括CDP中的Apache HBase集群。HBCK2工具是Apache HBase hbck工具的下一版本。

要确定正在运行的HBase集群中的不一致或阻塞的列表,可以通过查看主日志来发现。一旦发现问题,就可以使用HBCK2工具修复缺陷或跳过不良状态。HBCK2工具使用交互式修复过程,要求Hbase Master进行修复,而不是在本地进行修复。

HBCK2每次运行时都会执行一个单独的任务。HBCK2工具不会分析正在运行的集群中的所有内容并修复所有问题。相反,您可以使用HBCK2工具来迭代地查找和修复集群中的问题。HBCK2工具使您可以使用交互式命令来一次解决一个问题。

重要

HBCK2工具特定于Apache HBase的内部。使用此工具需要特定于您的CDP运行时版本的二进制文件,并且您必须始终在Cloudera支持和/或Cloudera专业服务的帮助下使用它。如果您认为需要使用HBCK2工具遇到问题,请联系Cloudera支持。

运行HBCK2工具

您可以从目标集群中的命令行界面运行HBCK2工具。

HBCK2工具是hbase-operator-tools二进制文件的一部分。从Cloudera获得hbase-operator-tools二进制文件后,将二进制tarball上传到目标集群并解压缩tarball。HBCK2 JAR文件包含在Cloudera支持提供的操作员工具tarball中,位于 hbase-operator-tools-/hbase-hbck2/hbase-hbck2-.jar.处。

通过使用“ -j”选项指定JAR路径来运行HBCK2工具,如下所示:

运行命令时,将显示HBCK2工具命令行菜单。

作为使用此工具修复HBase集群的Cloudera支持或专业服务人员,您可以使用以下命令以HBase超级用户(通常为hbase)或HBase Principal(如果启用了Kerberos)收集有用的信息:

发现问题

HBCK2工具使您可以使用交互式命令来一次解决一个问题。如果有多个问题,则可能必须迭代运行该工具以查找和解决所有问题。使用以下实用程序和命令等诊断工具来查找问题。

主日志

Apache Hbase Master运行所有集群启动和停止操作、RegionServer分配以及服务器崩溃处理。Hbase Master所做的一切都是在状态机引擎上执行一个过程,并且每个过程都有唯一的过程ID(PID)。您可以通过在主日志中的条目跟踪过程的PID来跟踪过程的生命周期。某些过程可能会生成子过程,并等待子过程完成。

您可以通过跟踪子过程的PID和父PID(PPID)来跟踪子过程。

如果RegionServer分配存在问题,则主服务器将打印类似于以下内容的STUCK日志条目:

主用户界面

状态表

通过查看主用户界面主页上的状态表部分,可以在HBase表中找到问题。浏览表列表以识别表是ENABLED, ENABLING, DISABLED,还是DISABLING。您还可以查看处于过渡状态的区域:“OPEN, CLOSED”。例如,如果表已启用,某些区域未处于OPEN状态以及Master日志条目没有任何正在进行的分配,则可能会出现问题。

Procedures&Locks

启动Apache HBase集群时,将在Master用户界面中的Procedures&Locks页面中填充有关过程、锁和WAL文件计数的信息。集群建立后,如果WAL文件数没有减少,则会导致过程阻塞。您可以在此页面上标识这些过程和锁。

您还可以在HBase shell中使用此命令获取锁和过程的列表:

Apache HBase金丝雀工具

使用HBase Canary工具来验证集群中分配的状态。您可以运行此工具以仅关注一个表或整个集群。您可以使用以下命令检查集群分配:

使用-f参数查找失败的区域提取,并将-t参数设置为在指定时间运行。

解决问题

您可以使用HBCK2工具解决问题。

使用HBCK2修复问题时,必须牢记这些。确保这件事:

区域在“分配”期间未处于“CLOSING”状态,在“未分配”期间未处于“OPENING”状态。您可以使用setRegionState命令更改状态。有关更多信息,请参见HBCK2工具命令参考部分。

一次只能修复一张表。

重要

在使用任何HBCK2工具命令之前,请联系Cloudera支持。

解决分配和取消分配问题

您可以通过监视当前未完成锁列表来解决分配和取消分配问题。针对锁定区域的分配将等待,直到释放锁定。分配在该区域上获得排他锁。

修复主启动无法进行的错误

如果您在Master日志中看到错误master startup cannot progress holding-pattern until region online,则表明Master无法启动,因为没有分配hbase:meta的过程。您将看到类似于以下内容的错误消息:

要解决此问题,请运行以下命令:

hbase:namespace系统表可能发生相同的问题。要解决此问题,请运行以下命令:

您可以使用以下命令找到名称空间编码的区域标识:

命名空间编码区域ID是结果中“ ENCODED”字段下的值。

修复hbase:meta区域/表中的缺失区域

如果遇到从hbase:meta表中删除表区域的问题,则可以使用addFsRegionsMissingInMeta解决此问题。确保主服务器在线。该命令不像hbase:meta rebuild命令那样具有破坏性。

要解决此问题,请运行以下命令:

该命令将返回包含所有列出的重新插入区域的HBCK2“分配”命令。您必须重新启动主服务器,然后运行addFsRegionsMissingInMeta命令返回的HBCK2“分配”命令以完成修复。

输出示例:

修复hbase:meta区域/表中的额外区域

如果hbase:meta中还有多余的区域,则可能是由于手动拆分,删除/移动区域目录时出现问题,或者在极少数情况下是由于丢失了元数据。

要解决此问题,请运行以下命令:

重要

仅当额外区域与现有有效区域重叠时,才使用--fix选项。否则,请使用assigns命令重新创建区域。

重建hbase:meta

如果hbase:meta因为已损坏而处于脱机状态,那么如果损坏不太严重,则可以使其重新联机。如果名称空间区域在任务区域中,请在初始化期间扫描hbase:meta以检查hbase:meta是否在线。

要检查hbase:meta是否在线,请在Apache HBase shell中运行以下命令:

如果此扫描没有引发任何错误,则可以运行以下命令来验证表是否存在:

如果在存储中存在regioninfo文件,但是该区域由于问题而被删除,则命令addFsRegionsMissingInMeta会将区域添加回hbase:meta表。

修复删除的引用和损坏的HFiles

要修复挂起的引用和损坏的HFile,请运行以下命令:

HBCK2工具命令参考

您可以在目标集群的命令行界面中使用此HBCK2命令列表。

HBCK2命令

选项:-d,-force_disable如果禁用失败,则使用此选项中止表修复。

assigns [OPTIONS] ...

选项:-o,-覆盖使用此选项可以通过另一个过程覆盖所有权。

bypass [OPTIONS] ...

选项:-o,-override如果过程正在运行/卡住,则使用此选项覆盖-r,-recursive使用此选项绕过父项及其子项。

-w,-lockWait使用此选项等待(以毫秒为单位)然后放弃;默认值= 1。

extraRegionsInMeta ...

选项:-f,--fix使用此选项可通过删除找到的所有额外区域来修复meta。

filesystem [OPTIONS] [...]

选项:-f,--fix使用此选项可对损坏的HFile,错误链接和引用进行旁注。

replication [OPTIONS] [...]

选项:-f,--fix使用此选项可修复复制问题。

当hbase:meta中缺少区域但目录仍存在于HDFS中时,请使用此命令。

可能的区域状态:OFFLINE, OPENING, OPEN, CLOSING, CLOSED, SPLITTING, SPLIT, FAILED_OPEN, FAILED_CLOSE, MERGING, MERGED, SPLITTING_NEW, MERGING_NEW, ABNORMALLY_CLOSED。

警告

建议仅将此命令用作最后的手段。示例方案包括因为区域在hbase:meta中处于不一致状态而未发生的未分配/分配。

hbase:meta表中可能的表状态和表示形式:ENABLED(\ x08 \ x00),DISABLED(\ x08 \ x01),DISABLING(\ x08 \ x02),ENABLING(\ x08 \ x03)。

计划ServerCrashProcedure(SCP)用于RegionServer的列表。将服务器名称格式设置为',,'。

选项:-o,-覆盖使用此选项可以通过另一个过程覆盖所有权。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20210128A05VKP00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券