热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

记一次OBJECTS元数据表处于RIT的解决办法

最近一客户环境由于Hadoop故障,恢复时出现“_MD_.OBJECTS处于RIT状态,且长期不能恢复。使用Trafodion用户执行HBCHECK输

最近一客户环境由于Hadoop故障,恢复时出现“_MD_".OBJECTS处于RIT状态,且长期不能恢复。使用Trafodion用户执行HBCHECK输出如下,

HBase is available!HBase version: 1.1.2.2.4.3.0-227
HMaster: namenode-2.esg.local,16000,1568772195966Number of RegionServers available:4
RegionServer #1: datanode-3.esg.local,16020,1568772200461
RegionServer #2: datanode-4.esg.local,16020,1568772200097
RegionServer #3: datanode-2.esg.local,16020,1568772200709
RegionServer #4: datanode-1.esg.local,16020,1568772201234Number of Dead RegionServers:0
Number of regions: 31014
Number of regions in transition: 1
RegionInTransition: TRAF_RSRVD_1:TRAFODION._MD_.OBJECTS,,1529534107727.e5b72fdd54857972797d8c6583964d0a. state=OPENING, ts=Tue Sep 17 22:12:38 EDT 2019 (420s ago), server=null
Average load: 7753.5

RegionInTransition: TRAF_RSRVD_1:TRAFODION._MD_.OBJECTS,1529534107727.e5b72fdd54857972797d8c6583964d0a. state=OPENING, ts=Tue Sep 17 22:12:38 EDT 2019 (420s ago), server=null 表示TRAFODION._MD_.OBJECTS处于RIT状态。

经过一番尝试与努力之后,问题得以解决,在此分享一下尝试过的方法,仅供参考。
方法一
怀疑是HBase 自动split功能导致,把split关闭。方法为:修改split策略从org.apache.hadoop.hbase.regionserver.ConstantSizeRegionSplitPolicy为org.apache.hadoop.hbase.regionserver.IncreasingToUpperBoundRegionSplitPolicy,将hbase.hregion.max.filesize从默认的10G调整为100G。
重启HBase,验证问题仍然存在。

方法二
移除备份HBase的WAL目录,
hadoop fs -mkdir /hbase-wal-bak20190918
hadoop fs -mv /apps/hbase/data/WALs/* /hbase-wal-bak20190918/
完成以上命令后重启HBase,验证问题仍然存在。

方法三
手动assign表的region,
hbase(main):002:0> assign ‘e5b72fdd54857972797d8c6583964d0a’
完成后验证问题仍然存在。

方法四
(注:此步骤可能导致数据丢失,生产环境慎用)
删除表对应的recovered.edits
hadoop fs -rmr /apps/hbase/data/data/TRAF_RSRVD_1/TRAFODION._MD_.OBJECTS/e5b72fdd54857972797d8c6583964d0a/recovered.edits
重启HBase后,问题消失。

完成以上步骤后再执行hbcheck,输出如下,

HBase is available!HBase version: 1.1.2.2.4.3.0-227
HMaster: namenode-1.esg.local,16000,1568791177953Number of RegionServers available:4
RegionServer #1: datanode-1.esg.local,16020,1568791183192
RegionServer #2: datanode-2.esg.local,16020,1568791182670
RegionServer #3: datanode-4.esg.local,16020,1568791182598
RegionServer #4: datanode-3.esg.local,16020,1568791182581Number of Dead RegionServers:0
Number of regions: 31015
Number of regions in transition: 0
Average load: 7753.75

方法五
有时候,步骤四操作完成后问题可能依然存在,zookeeper下面可能还存在RIT的znode节点,我们需要去zookeeper-client中把对应的RIT删除。

[zk: datanode-2.esg.local:2181,datanode-1.esg.local:2181,datanode-3.esg.local:2181(CONNECTED) 3] ls /hbase-unsecure/region-in-transition
[e5b72fdd54857972797d8c6583964d0a]
[zk: datanode-2.esg.local:2181,datanode-1.esg.local:2181,datanode-3.esg.local:2181(CONNECTED) 4] rmr /hbase-unsecure/region-in-transition

方法六
使用hbase hbck来修复RIT的问题,
先命令检查命令来检查不一致的状态,

hbase hbck -details TRAF_RSRVD_1:TRAFODION._MD_.OBJECTS

然后使用以下命令来修复不一致的问题,

hbase hbck -fixAssignments TRAF_RSRVD_1:TRAFODION._MD_.OBJECTS

综上,方法四、五、六,可以解决问题的机率比较大,但方法四有丢数据的风险。在生产环境, 我们一般采用方法五结合方法六来处理,如果未果,再加上重启HBase,应该可以解决大部分情况。


推荐阅读
  • mapreduce源码分析总结
    这篇文章总结的非常到位,故而转之一MapReduce概述MapReduce是一个用于大规模数据处理的分布式计算模型,它最初是由Google工程师设计并实现的ÿ ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
  • 本文整理了Java中org.apache.hadoop.hbase.client.Increment.getDurability()方法的一些代码示例,展示了 ... [详细]
  • 上一章讲了如何制作数据集,接下来我们使用mmcls来实现多标签分类。 ... [详细]
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • tcpdump 4.5.1 crash 深入分析
    tcpdump 4.5.1 crash 深入分析 ... [详细]
  • 颜色迁移(reinhard VS welsh)
    不要谈什么天分,运气,你需要的是一个截稿日,以及一个不交稿就能打爆你狗头的人,然后你就会被自己的才华吓到。------ ... [详细]
  • 正则表达式及其范例
    为什么80%的码农都做不了架构师?一、前言部分控制台输入的字符串,编译成java字符串之后才送进内存,比如控制台打\, ... [详细]
  • 获取时间的函数js代码,js获取时区代码
    本文目录一览:1、js获取服务器时间(动态)2 ... [详细]
author-avatar
明天会更好--好过_652
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有