1. 问题起因

通过snapshot做跨集群数据同步时,在执行拷贝脚本里没有指定所有者及所有组,导致clone时没有权限,客户端卡死。master一直报错,经过一系列操作后,导致RIT异常。

2. 异常记录

  • 不指定所有者,默认权限是hdfs:hbase,会导致异常

  • 执行clone_snapshot <snapshot_name>,<table_name>时,master异常信息

  • 经过一系列操作后(重启、删除hdfs相关目录)出现了RIT:

3. 解决过程

因之前使用hbase1.2.6版本可以通过hbck做修复,但habse2.0之后,大多hbck命令已经无法使用

  • 于是尝试其他操作:

(1)通过删除hdfs相关目录及zk下hbase目录等操作无效

(2)删除hbase:meta表中相关表记录无效

(3)删除zk下hbase目录,重启无效

4. 最终通过hbck2解决

由于HBCK2已经被剥离出HBase成为了一个单独的项目,如果你想要使用这个工具,需要根据自己HBase的版本,编译源码。

GitHub地址为:https://github.com/apache/hbase-operator-tools.git

(1)下载后在项目根目录下编译:mvn clean install -DskipTests(普通方式编译会报错)

现在使用的版本是hbase2.1.0版本,不支持编译hbck2,所以使用的默认hbase2.1.6编译完成,在hase-hbck2的target目录下可以找到我们最后需要的jar

  • 使用方法:

hbase hbck -j ./hbase-hbck2-1.1.0-SNAPSHOT.jar <命令>

(2)使用assigns方法解决 RIT

hbase hbck -j ./hbase-hbck2-1.1.0-SNAPSHOT.jar unassigns <regionname>

将一个或多个region unassign,返回值是创建的pid则为成功,-1则为失败。

在hbase页面找到rit相关的regionname

  • 执行命令,如图返回进程号为1819

  • master日志:

  • 可以看到rit数减少了一个

  • 重复以上操作,rit解决!

(3)在hbase界面上找到Procedure相关进程id释放

hbase hbck -j ./hbase-hbck2-1.1.0-SNAPSHOT.jar bypass <Procedure id>

当rit显示后,hbase依然不正常,hbaseshell无法操作,使用hbase hbck检查显示 Master is initializing

  • 执行后返回true代表成功,页面会显示RUNNABLE(Bypass)

  • 可以看到当前procedure还有很多子进程

  • 经过大约一小时之后,进程才结束

  • 此时页面也显示完成

  • 随后消失

  • 此时,检查hbase,hbase hbck,显示OK,解决过程到此结束!

一次snapshot迁移引发的Hbase RIT(hbase2.1.0-cdh6.3.0)的更多相关文章

  1. hadoop2.2.0 + hbase 0.94 + hive 0.12 配置记录

    一开始用hadoop2.2.0 + hbase 0.96 + hive 0.12 ,基本全部都配好了.只有在hive中查询hbase的表出错.以直报如下错误: java.io.IOException: ...

  2. File /hbase/.tmp/hbase.version could only be replicated to 0 nodes instead of minReplication (=1).

    File /hbase/.tmp/hbase.version could only be replicated to 0 nodes instead of minReplication (=1). 这 ...

  3. org/apache/hadoop/hbase/mapreduce/TableReducer:Unsupported major.minor version52.0

    问题详情: 问题原因: <dependency>    <groupId>org.apache.hbase</groupId>    <artifactId& ...

  4. 【hbase】hbase-2.2.1配置独立的zookeeper的安装与测试

    下载hbase-2.2.1-bin.tar.gz并执行安装命令: [hadoop@hadoop01 ~]$ tar -zxvf hbase--bin.tar.gz 查看安装目录: [hadoop@ha ...

  5. 相同版本的CDH集群间迁移hdfs以及hbase

    前言 由于项目数据安全的需要,这段时间看了下hadoop的distcp的命令使用,不断的纠结的问度娘,度娘告诉我的结果也让我很纠结,都是抄来抄去, 还好在牺牲大量的时间的基础上还终于搞出来了,顺便写这 ...

  6. Hbase RIT故障修复

    业务场景: RocketMQ+Storm+Hbase 组件版本: RocketMQ:3.4.6 Storm:1.2.1 Hbase:1.2.1 1. 问题描述 4月15号早上发现业务系统前一天数据量明 ...

  7. 基于:Hadoop 2.6.0-cdh5.4.0 hive1.1.0 HBase 1.0.0-cdh5.4.0 关键配置文件

    core-site.xml <configuration> <property> <name>fs.defaultFS</name> <value ...

  8. .Net Core 1.0升级2.0(xproj项目迁移到.csproj )

    vs2015的创建的项目是以*.xproj的项目文件,迁移到vs2017需要如下准备: 1.安装好vs2017(废话) 2.下载最新的SDK和 .NET Core 2.0 Preview 1 Runt ...

  9. 安装配置和使用HBASE Cluster(基于发行版CDH5.0.2)——系列随笔

    本系列文章只是记录了笔者本人在学习实验安装和使用基于CDH5.0.2的HBASE集群过程中的一些经验教训和心得,绝不是详细的安装过程,因本人不过一初学者,很多方面不甚了了,如果能让不幸读到的人有所得则 ...

随机推荐

  1. CSS知识点记录

    1.浏览器style中显示的样式 这里面的样式,是行内样式或者是使用js添加的样式

  2. 使用Jmeter测试thrift接口

    术语描述 jmeter:一款性能压力测试工具,支持多种协议,java .http 等,但是不支持thrift thrift:跨语言的RPC调用框架,提供编译器,可以将thrift接口生成不同语言的接口 ...

  3. 一个java文件被执行的历程

    学习java以来,都是以语法,类库入手,最基本的也是最基础的java编译过程往往被我遗忘,先解释一下学习java第一课时,都听到过的一句话,"java是半解释语言".什么是半解释语 ...

  4. 简易CLI

    使用C语言实现一个简易的CLI,命令通过模式进行划分,实现效果如下: 代码较为简单,主要是为了方便进行移植,这里就不进行详细的说明了. 代码路径:https://github.com/zhengcix ...

  5. react第十六单元(redux的认识,redux相关api的掌握)

    第十六单元(redux的认识,redux相关api的掌握) #课程目标 掌握组件化框架实现组件之间传参的几种方式,并了解两个没有任何关系组件之间通信的通点 了解为了解决上述通点诞生的flux架构 了解 ...

  6. Spark性能调优九之常用算子调优

    1.使用mapPartitions算子提高性能 mapPartition的优点:使用普通的map操作,假设一个partition中有1万条数据,那么function就要被执行1万次,但是使用mapPa ...

  7. angular8 在componet里面跳转新的地址页面

    this.router.navigate(['/teacher/course/detail/' + id]);

  8. Redisearch实现的全文检索功能服务

    "检索"是很多产品中无法绕开的一个功能模块,当数据量小的时候可以使用模糊查询等操作凑合一下,但是当面临海量数据和高并发的时候,业界常用 elasticsearch 和 lucene ...

  9. 5、Mycat安全

    1.权限配置 [1].user标签 目前 Mycat 对于中间件的连接控制并没有做太复杂的控制,目前只做了中间件逻辑库级别的读写权限控制.是通过 server.xml 的 user 标签进行配置. # ...

  10. Python爬虫:爬取喜马拉雅音频数据详解

    前言 喜马拉雅是专业的音频分享平台,汇集了有声小说,有声读物,有声书,FM电台,儿童睡前故事,相声小品,鬼故事等数亿条音频,我最喜欢听民间故事和德云社相声集,你呢? 今天带大家爬取喜马拉雅音频数据,一 ...