hyperbase运维之dstool的使用

  其他常见问题
内容纲要

概要描述

本文描述了 dstool 的使用方法,以及几种使用场景。

详细描述

dstool 主要应用于应用场景

  1. 出现 Regions in Transition(简称RIT)
    在active master的60010页面,Tasks一栏下面出现 "Regions in Transition",有region项目出现在此,并且RIT time(ms)这一项已经超出了1小时,此时可以运行此runDSTools.sh工具或者runHFileCheck.sh工具进行修复

  2. meta表损坏
    当HBase集群因meta表损坏启动不了时,可以运行runDSTools.sh工具进行HBase彻底的元信息重建更新,然后再启动集群。

  3. 当hbase出现部分表无法查询时
    当出现hbase表出现部分表无法查询时,且hbase active master的60010页面中的“Regions in Transition”也没有显示任务region卡住的现象时,可以运行runDSTools.sh工具进行修复。

1、dstool 工具的获取

  1. TDH 6.x dstool 已经内置在 TDH-Client
    具体路径为 ./TDH-Client/dstools

PS:TDH6.x 的 dstool 在使用之前,需要修改 init.sh 脚本,将脚本里面这一行 HBASE_HOME=$currentPath/hbase ,修改为 export HBASE_HOME=$currentPath/hbase ,然后 source init.sh ,再重新执行 dstool 相关命令

  1. TDH 4.x 和 TDH 5.x 的 dstool 使用
    TDH4.x 和TDH5.x 可以联系星环科技技术支持中心获取对应版本的 dstool 工具。
    内部员工可以到 http://172.16.3.121/document/DSTools/ 获取对应版本的 dstool 工具。

2、dstool 工具的使用配置

本文以5.1.2 环境为例,介绍一下 dstool 工具的使用。
下载对应的dstool的包上传至服务器并解压,得到 dstools-1.0.0-transwarp-5.1 目录

tar -zxvf dstools-1.0.0-transwarp-5.1.tar.gz

file

将 dstool 的配置文件目录下的 conf/hbase-site.xml 、conf/hdfs-site.xml 和 core-site.xml 替换成当前集群的配置文件。

PS:

  • hbase-site.xml 在 /etc/hyperbase1/conf/ 下
  • hdfs-site.xml 在 /etc/hdfs1/hdfs-site.xml 下
  • core-site.xml 在 /etc/hdfs1/core-site.xml 下

TDH 6.2.2 之后的,都不需要复制配置文件了;
但是需要做特殊的前置配置:
具体参考如下:
https://kb.transwarp.cn/posts/11280

解压并配置完成后的 dstool 目录结构如下:

DSTools-1.0.0-transwarp-5.1
├── bin
│    ├── mergeRegion.sh
│    ├── runDSTools.sh
│    └── runHFileCheck.sh
├── conf
│    ├── core-site.xml
│    ├── hbase-site.xml
│    ├── hdfs-site.xml
│    └── log4j.properties
└── lib

3、dstool 使用说明

在使用dstool之前,需要检查确认 hdfs 是否正常,包括如下检查:

  1. hdfs是否在安全状态(即safe mode)
    从TDH管理界面中找到hdfs中active namenode角色,点击link进入检查节点是否处于safemode;保证safemode处于关闭状态,即“Safemode is off”。

  2. 查看所有namenode和datanode的状态
    从manager界面去检查每个角色的状态 ,或者命令检查

    hdfs dfsadmin -report
  3. 查看hdfs有无block丢失或损坏

    hdfs fsck /hyperbase1 -files -locations -blocks
  4. 查找出 corruptfile 文件
    查找出 corruptfile 文件,在运行修复工具前检查这些损坏的文件

    hdfs fsck /hyperbase1 -list-corruptfileblocks

4 runDSTools.sh 操作步骤

runDSTools.sh 可以在以下两种情况下执行:

  1. 如果 Hbase 集群本身启动不了
    保证所有HBase角色服务都关闭,集群hyperbase状态为down,保证所有角色都是not running的状态。

file

  1. HBase集群已经启动正在运行,则需要保证所有 regionserver 都是在线存活状态,并且至少有两个及以上的 master 角色在线存活状态。

file

执行 source TDH-Client/init.sh,认证hbase身份,然后在工具所在目录下,执行

sh runDSTools.sh [table_name]

指定table_name选项可以针对特定的表进行修复。当用户要修整个集群或者一张大表时,推荐以下命令在后台跑,避免超时。

 nohup sh runDSTools.sh [table_name] &
  1. 如果HBase集群中只有一个active master(必要条件),但是region server和其余master都无法启动时
    需要运行命令:

    sh runDSTools.sh [table_name] -allowDeadRS true

    在有dead region server的情况下进行恢复

  2. 查看日志
    dstool运行的输出日志,查看最后的输出日志提示。如果运行时,集群是在线模式,正确的日志应该显示 inconsistance 为0。

file

如果集群本身是启动不了的情况,运行后,它会提示你可以在TDH管理界面中启动HBase集群的信息。

file

  1. 如果日志中出现连续的错误:“There is an overlap in the region chain”
    添加参数运行命令,其中number应该大于inconsistance的数量。

    sh runDSTools.sh [table_name] -maxMerge [number]

file

5 runHFileCheck.sh 操作步骤

runHFileCheck.sh 只能在HBase集群为在线模式,即至少有一个master存活,至少有一个regionserver存活的情况下执行。

  1. 运行命令看是否有hfile有损坏或无效引用存在。
    sh runHFileCheck.sh tableName 1>&2 2> /tmp/hfilecheck.log.1

    运行命令输出,若无损坏:

file

  • 若有损坏,HFiles corrupted数量不为0

file

  1. 运行命令修复
    sh runHFileCheck.sh -fixReferenceFiles -sidelineCorruptHFiles tableName 1>&2 2> /tmp/hfilecheck.log.2

file

6 mergeRegion.sh 操作步骤

mergeRegion.sh 可以在以下情况下运行:HBase集群为在线模式,即至少有一个master存活,至少有一个regionserver存活
且 mergeRegion 工具必须在 activemasterHost 所在集群的节点上运行。
mergeRegion 工具只能对同一张表使用一次

  1. 打开HBase集群的master管理界面,查看需要mergeRegion的表的Region数目。
    待执行mergeRegion操作的表 aaaaa 的Region数是16。

file

  1. 运行命令
    sh mergeRegion.sh [activemasterHost] [tableName]

    activemasterHost : active hmaster的ip或hostname。
    tableName : 为所需要merge region的table name

file

  1. 结果
    执行mergeRegion操作后的表 aaaaa 的Region数是8,为之前的一半。 此工具执行一次,把表的相邻的两个Region进行合并,最后实现表的Region数大约减半的效果。

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。