第二次尝试修复Hbase2出现Region不一致,使用 HBCK2 - 2021.11.15

spark任务中入hbase任务全部失败了,查看日志发现hbase出现问题

报错日志:

  1. 在hbase的log中看到报错
    Call queue is full on xxxx,16000,1611197476326, too many items queued
    修改了配置文件,增加了队列数量
     <property><name>hbase.regionserver.handler.count</name><value>200</value></property><property><name>hbase.regionserver.metahandler.count</name><value>80</value></property>

参数说明:https://hijiazz.gitee.io/hbase-callqueue-isfull/
2. 并且zookeeper好像挂掉了,后来重启zk。

然后重启hbase后出现了region不一致的情况。

尝试进行修复

1、前提:HDFS fsck 确保 hbase根录下文件没有损坏丢失,如果有,则先进行坏block 移除。

2、看webUI中lock页面是否有锁住的producer

先尝试bypass -or +pid ,将父producer解锁,再bypass -o将子producer解锁

3、 看webui中是否出现RIT卡在了OPENNING/CLOSING状态的region,使用assigns -o 进行重分配,生成新的producer

4、再次查看lock中是否出现新的,重复步骤2和3,直到RIT消失或lock中不再出现新的。

5、使用hbase hbck --details > hbck.log 来查看状态

如果日志中出现status=inconsistencies证明还存在region不一致,搜索ERROR(在vim命令模式输入/ERROR来搜索)查看信息,每个ERROR都有错误说明,根据说明进行修复。

7、RIT的几种情况:

7.1、 hdfs上region不存在但是元数据存在

  1. 对regionID进行assigns或extraRegionsInMeta --fix进行修复。
  2. 或者将region unassigns 下线,然后进入hbase shell将hbase:meta表中的多余元数据删除,执行deleteall 'hbase:meta',"regionName" ,需要注意regionname为全路径从表名开始,如果regionname中存在转义字符则使用双引号,不存在单引号双引号都可以。

7.2、hdfs上region存在但是元数据不存在

  1. 如果region是正常的region,而不是修复产生的,可以尝试重建元数据 addFsRegionsMissingInMeta
  2. 如果是修复产生的,那么此region里是没有真实数据信息的,或者此region是存在重叠的,那么需要删除hdfs上的region文件夹

7.3、 not deployed on any region server,region未分配

使用assigns命令分配此region

7.4、 region元数据在dn1但实际是在dn2上启动的

尝试unassign在assigns,直到RIT消失,这个具体解决办法未知,就是尝试上线下线

7.5、 hbase There is an overlap in the region chain 出现两个region重叠的问题

一般来说是修复别的问题产生的,我这边是这个原因,因为产生了一个新的region,所以讲新region删除即可,判断region新旧,就去看hdfs上region数据的日期,或者去元数据里看timestamp的日期,找到最新的删除即可,注意删除前先unassigns,然后删除元数据,在删除hdfs数据即可。

7.6、Multiple regions have the same startkey 出现key重叠

与7.5出现的原因是一致的,由修复所产生的,目测是因为assigns了一个在线的region,重新分配了两次导致产生了一个新region,处理步骤与7.5一致,先确定哪个是最新的region,然后unassigns此region,在删除元数据,删除hdfs数据即可。

5. 注意

实际上面的解决办法都不一定能解决,实际如何解决的有待商榷。

根据hbck2 -help 来查看帮助文档,看看其中的命令在什么情况下使用,然后就操作就行了。

最终解决的办法是hbase hbck后还存在5个region不一致,后来将他们在hdfs上删除了(会丢失数据),然后重新assign这些region,(这里可能会存在一定时间的延迟,多执行几次hbase hbck和assigns命令)最终hbase hbck后status=ok了,不一致的region特别多或者数据不可以删除能修复尽量去修复,总共修复了15/6个小时,还是在第二天将最后几个无法处理掉的region删除后集群才恢复正常的,本来是存在56个不一致的region的。

8、 如果出现数据空洞,There is a hole in the region chain between. You need to create a new .regioninfo and region dir in hdfs to plug the hole

三个解决办法

  1. 使用fixMeta命令来重建空洞和修复region重叠,(使用后没效果)
  2. 删除HDFS对应region下recovered.edits,注意此操作可能会丢失部分数据,先将出现空洞的左右两边的region执行unassigns下线操作,然后删除HDFS上的recovered.edits,然后将执行assigns将region上线,等待一会观察空洞是否消失,如果还存在,执行一下fixMeta,即可解决空洞。(我使用的这个,只出现了一两个region数据空洞,并且数据丢一点可以接受),网上博客说的删除所有表的尽量不要去操作,我这里只是删除了出现数据空洞的region下的recovered.edits
  3. 增加配置后重启集群:提高regionserver的线程数量,以此来提高rs处理region的能力(没测试)
<property>  <name>hbase.regionserver.executor.openregion.threads</name> <value>100</value> 
</property>

尽量阅读hbck2的help文档,理解一下里面命令的使用准则,在根据hbase hbck中的ERROR信息对应进行修复,里面的命令在解决的过程中基本都尝试过了,但是对其理解的还是不透,后续还要在研究一下,如果实在是尽力了也无法修复,那就删除它吧,目前只能修复到这种地步了,经过16个小时的尝试最后剩余了5个region只能删除了,然后问题就解决掉了,HBCK2修复元数据网上的资料实在是太少了,只能摸着石头过河,不断成长。

参考/引用博客:

官网文档:https://github.com/apache/hbase-operator-tools/tree/master/hbase-hbck2
队列参数修改:https://hijiazz.gitee.io/hbase-callqueue-isfull/
hbck2使用:https://www.modb.pro/db/54575
Hbase修复博客:https://cloud.tencent.com/developer/article/1359221 它里面的连接也可以一并看下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/437358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

@query传参_vue-router中params传参和query传参的区别及处理方法

在 Vue 实例内部&#xff0c;你可以通过 $router 访问路由实例。因此你可以调用 this.$router.push想要导航到不同的 URL&#xff0c;则使用 router.push 方法。这个方法会向 history 栈添加一个新的记录&#xff0c;所以&#xff0c;当用户点击浏览器后退按钮时&#xff0c;则…

JS成员函数声明位置优化

上代码 function A() {this.a function(){}; } a1 new A(); a2 new A(); alert( a1.aa2.a);输出 说明了a1.a&#xff0c;a2.a指向的内存不是同一个&#xff0c;也就是每个对象都有一份自己的函数&#xff0c;只不过一个类的所有实例之间的函数长得是一样的&#xff01; 所以…

【转】什么是用例

用例是什么? 其原始英文是usecase&#xff0c;直译过来就成了用例。这也是一个比较贴切的叫法了。 从字面的直接理解就是使用的例子。 另一种比较流行的定义是用例就是与使用者(actor)交互的&#xff0c;并且给使用者提供可观测的有意义的结果的一系列活动的集合。 这个定义…

第一次尝试修复Hbase2出现Region不一致,HBCK2

出现问题的原因 Hadoop中报错&#xff0c;集群中某节点的一块磁盘损坏了&#xff0c;运维修复后&#xff0c;hbase出现了region不一致的情况。 修复HBCK2 首先查看web ui中被lock的producer&#xff0c;先释放父region使用bypass -or pid&#xff0c;再释放子producer使用byp…

mybatis plus 事务管理器_SpringBoot第七篇:springboot开启声明式事务

springboot开启事务很简单&#xff0c;只需要一个注解Transactional 就可以了。因为在springboot中已经默认对jpa、jdbc、mybatis开启了事事务&#xff0c;引入它们依赖的时候&#xff0c;事物就默认开启。当然&#xff0c;如果你需要用其他的orm&#xff0c;比如beatlsql&…

【转】MySQL日期函数与日期转换格式化函数大全

Mysql作为一款开元的免费关系型数据库&#xff0c;用户基础非常庞大&#xff0c;本文列出了MYSQL常用日期函数与日期转换格式化函数 1、DAYOFWEEK(date) 1 2 SELECT DAYOFWEEK(‘2016-01-16) SELECT DAYOFWEEK(‘2016-01-16 00:00:00) 1 -> 7 (表示返回日期date是星期几…

JS静态变量和静态函数

function A(){this.id "我是AA"} // 在构造函数外定义的都是所有对象共享的 A.id "我是A"; A.sayId function(){alert(A.id);} A.sayId(); 如上&#xff0c;在构造函数外用函数名定义的属性或者方法&#xff0c;可以也只可以通过函数名来访问&…

Spark读取HDFS上的Snappy压缩文件所导致的内存溢出问题 java.lang.OutOfMemoryError: GC overhead limit exceeded

报错java.lang.OutOfMemoryError: GC overhead limit exceeded HDFS上有一些每天增长的文件&#xff0c;使用Snappy压缩&#xff0c;突然某天OOM了 1.原因: 因为snappy不能split切片&#xff0c;也就会导致一个文件将会由一个task来读取&#xff0c;读取后解压&#xff0c;数…

【转】VS编程,快速折叠或者展开代码到 #region 级别的设置方法。

在代码比较多的文档中&#xff0c;使用#region进行分功能的区分折叠是一个方便的方法。 如果文档中含有很多个#region标签&#xff0c;想一次全部折叠或者展开&#xff0c;有时是必要的。 这里给出一种设置方法&#xff0c;适用于VS2019&#xff0c;其它VS版本请自己验证。 1、…

记录一个JS异常Uncaught NotFoundError

在使用appendChild和insertBefore时&#xff0c;出现 Uncaught NotFoundError : An attempt was made to reference to a Node in a cotext where it does not exist 错误 经测试是因为误认为parent可以是向上n级的parent&#xff0c;而实际上应该是向上第一级的parent才正确…

.net一个函数要用另一个函数的值_Mysql:条件判断函数-CASE WHEN、IF、IFNULL详解

前言在众多SQL中&#xff0c;统计型SQL绝对是让人头疼的一类&#xff0c;之所以如此&#xff0c;是因为这种SQL中必然有大量的判读对比。而条件判断函数就是应对这类需求的利器。本文重点总结CASE WHEN、IF、IFNULL三种函数。1 CASE WHENCase when语句能在SQL语句中织入判断逻辑…

记录一次HBase的scan的分页查询

修改前任bug&#xff0c;Hbase查询过于慢了&#xff0c;以至于都查不出来了&#xff0c;看了代码发现使用的Scan只设置了withStartRow、withEndRow、setCaching扫描,拿到全部数据后存入集合再subList进行分页&#xff0c;但是HBase中存在某些数据有几百万条&#xff0c;根本sca…

python需要配置环境变量吗_python需要设置哪些环境变量?我只知道一个PYTHONHOME指向安装目录。(python详细安装教程 path)...

怎么把Python文件夹添加进Path中 “我的电脑”点右键&#xff0c;“属性” “高级”&#xff0c;“环境变量”&#xff0c;“系统变量” 然后&#xff0c;Path添加“c:\python26”之类的。 怎么在Path中添加Python路径 ⒈单击开始&#xff0c;在搜索框输入cmd&#xff0c;然后&…

qt5.3.1+opencv2.4.9编译环境的搭建

到官网下载qt-opensource-windows-x86-mingw482_opengl-5.3.1.exe文件&#xff0c;执行该文件&#xff0c;选择默认安装即可实现QT的安装&#xff08;安装在C盘的根目录下&#xff09;&#xff0c;该文件封装好了Qt libraries、Qt Creator&#xff0c;其中Qt Creator为3.1.2版本…

Spark2内存调优总结 - 内存划分 与 内存计算 与 调参方式

使用的Spark2以上版本所以只考虑UnifiedMemoryManager动态内存管理&#xff0c;如图&#xff1a; 1. 内存划分 与 内存计算 与 调参方式 1.1 三部分&#xff1a;Spark内存、用户内存、预留内存 预留内存&#xff1a;300MB 固定Spark内存和用户内存比例由参数spark.memory.fra…

java 通过id获取html代码_Maven私服安装配置,java通过私服下载代码,并打包后上传到私服(Nexus)...

Maven私服一般安装Nexus。首先&#xff0c;Nexus下载&#xff0c;访问Nexus官方网址https://www.sonatype.com/download-nexus-repo-oss下载完成后是个压缩包第二步 配置&#xff1a;1)将上一步下载的nexus解压2)端口和监听配置application-port&#xff1a;监听端口applicatio…

Qt下OpenCv中cvGetWindowHandle的使用

昨天因为OpenCv自带的 cvNamedWindow 功能不多&#xff0c;所以想修饰一下&#xff0c;添加几个控件上去&#xff0c;结果获取不到句柄或指针。试了半天无效&#xff0c;于是就准备放弃&#xff0c;打算自己写一个对话框&#xff0c;但是感觉有点麻烦&#xff0c;而且心里不爽&…

一些网站github等无法连接服务器的解决办法

1.打开站长工具 http://tool.chinaz.com/speedtest/ 2.搜索github.com/ 3. 点击总耗时-排序 4. 拿到延迟最低的ip地址20.205.243.166 5.修改本地dns windows&#xff1a;C:\Windows\System32\drivers\etc 修改hosts文件&#xff0c;末尾添加 20.205.243.166 github.com Lin…

【转】异步编程系列(Thread、Task、async/await、ajax等)

序 经过一番努力&#xff0c;我写的异步编程系列也算有头有尾&#xff0c;当然不是说这个系列已经更新完毕&#xff0c;这个头尾只是表示新旧知识点都有简单涉及到&#xff0c;接下去我还会丰富这一系列并且有机会整个小应用&#xff08;愿景是弄一个开源组件吧&#xff0c;结合…

linux里qt画直线_Qt与Web混合开发(一)简单使用

前言《Qt与Web混合开发》系列文章&#xff0c;主要讨论Qt与Web混合开发相关技术。这类技术存在适用场景&#xff0c;例如&#xff1a;Qt项目使用Web大量现成的组件/方案做功能扩展&#xff0c;Qt项目中性能无关/频繁更新迭代的页面用html单独实现&#xff0c;Qt项目提供Web形式…