网站制作方案解决办法,辽宁省和城乡建设厅网站,衡阳网站定制,搬瓦工如何搭建做网站spark任务中入hbase任务全部失败了#xff0c;查看日志发现hbase出现问题
报错日志#xff1a;
在hbase的log中看到报错 Call queue is full on xxxx,16000,1611197476326, too many items queued 修改了配置文件#xff0c;增加了队列数量 propertynameh…spark任务中入hbase任务全部失败了查看日志发现hbase出现问题
报错日志
在hbase的log中看到报错 Call queue is full on xxxx,16000,1611197476326, too many items queued 修改了配置文件增加了队列数量 propertynamehbase.regionserver.handler.count/namevalue200/value/propertypropertynamehbase.regionserver.metahandler.count/namevalue80/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 来查看状态
如果日志中出现statusinconsistencies证明还存在region不一致搜索ERROR(在vim命令模式输入/ERROR来搜索)查看信息每个ERROR都有错误说明根据说明进行修复。
7、RIT的几种情况
7.1、 hdfs上region不存在但是元数据存在
对regionID进行assigns或extraRegionsInMeta --fix进行修复。或者将region unassigns 下线然后进入hbase shell将hbase:meta表中的多余元数据删除执行deleteall hbase:meta,regionName ,需要注意regionname为全路径从表名开始如果regionname中存在转义字符则使用双引号不存在单引号双引号都可以。
7.2、hdfs上region存在但是元数据不存在
如果region是正常的region而不是修复产生的可以尝试重建元数据 addFsRegionsMissingInMeta如果是修复产生的那么此region里是没有真实数据信息的或者此region是存在重叠的那么需要删除hdfs上的region文件夹
7.3、 not deployed on any region serverregion未分配
使用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后statusok了不一致的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
三个解决办法
使用fixMeta命令来重建空洞和修复region重叠(使用后没效果)删除HDFS对应region下recovered.edits注意此操作可能会丢失部分数据先将出现空洞的左右两边的region执行unassigns下线操作然后删除HDFS上的recovered.edits然后将执行assigns将region上线等待一会观察空洞是否消失如果还存在执行一下fixMeta即可解决空洞。我使用的这个只出现了一两个region数据空洞并且数据丢一点可以接受网上博客说的删除所有表的尽量不要去操作我这里只是删除了出现数据空洞的region下的recovered.edits增加配置后重启集群提高regionserver的线程数量以此来提高rs处理region的能力(没测试)
property namehbase.regionserver.executor.openregion.threads/name value100/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 它里面的连接也可以一并看下