HBase meta元数据损坏导致hbase master初始化失败

故障起因:

跑kylin任务,过程出错,异常信息:Direct buffer memory,

java.io.IOException: java.lang.OutOfMemoryError: Direct buffer memoryat org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.handleException(HRegion.java:5607)at org.apache.hadoop.hbase.regionserver.HRegion$RegionScannerImpl.<init>(HRegion.java:5579)at org.apache.hadoop.hbase.regionserver.HRegion.instantiateRegionScanner(HRegion.java:2627)at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:2613)at org.apache.hadoop.hbase.regionserver.HRegion.getScanner(HRegion.java:2595)at org.apache.hadoop.hbase.regionserver.RSRpcServices.scan(RSRpcServices.java:2282)at org.apache.hadoop.hbase.protobuf.generated.ClientProtos$ClientService$2.callBlockingMethod(ClientProtos.java:32295)

重启HBase所有服务后,启动正常,一分钟后ambari显示,所有region server正常,但是active master和standby master全部挂掉。仍然报错:Direct buffer memory,修改hbase-env文件中的HBase off-heap MaxDirectMemorySize参数从4G调大到6G,重启HBase后,Direct buffer memory异常消失。但某些节点的系统meta表一直处于RIT状态。

症状描述:

1、region in transation

Ambari 显示HBase master 正常启动,hbase master ui :红色警告hbase:meta region in transation,在其中一个数据节点,且一直在持续,估计HBase 元数据文件损坏,已经落入永久RIT状态

2、查看region server报错

去处于RIT状态的region server查看实时log,主要有三种报错:

  • access denied
Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=hbase, access=WRITE, inode="/apps/hbase/data/archive/data/GatXtcYysLcsk/KYLIN_BM5CEA4Y43/473ee8eb537051873792fdb417f866ac/F1":root:hdfs:drwxr-xr-x
  • too many open files
2018-03-20 21:23:36,518 WARN  [62309924@qtp-666312528-1 - Acceptor0 SelectChannelConnector@0.0.0.0:16030] mortbay.log: EXCEPTION 
java.io.IOException: Too many open filesat sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method)at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:422)at sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:250)at org.mortbay.jetty.nio.SelectChannelConnector$1.acceptChannel(SelectChannelConnector.java:75)at org.mortbay.io.nio.SelectorManager$SelectSet.doSelect(SelectorManager.java:695)at org.mortbay.io.nio.SelectorManager.doSelect(SelectorManager.java:193)at org.mortbay.jetty.nio.SelectChannelConnector.accept(SelectChannelConnector.java:124)at org.mortbay.jetty.AbstractConnector$Acceptor.run(AbstractConnector.java:708)at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

查看hbase用户、hdfs用户的ulimit -a 发现open_files并不小,hbase open_files=32000应该够用。
3、hbase shell 执行status 报错: HBase master failed to initization
4、执行

su hbase
hbase hbck -fixMeta

重试35次后,仍然报错:

2018-03-19 19:09:36,553 FATAL [hdmaster3:16000.activeMasterManager] master.HMaster: Unhandled exception. Starting shutdown.
java.io.IOException: Failed to get result within timeout, timeout=60000msat org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:206)at org.apache.hadoop.hbase.client.ScannerCallableWithReplicas.call(ScannerCallableWithReplicas.java:60)at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithoutRetries(RpcRetryingCaller.java:200)at org.apache.hadoop.hbase.client.ClientScanner.call(ClientScanner.java:327)at org.apache.hadoop.hbase.client.ClientScanner.nextScanner(ClientScanner.java:302)at org.apache.hadoop.hbase.client.ClientScanner.initializeScannerInConstruction(ClientScanner.java:167)at org.apache.hadoop.hbase.client.ClientScanner.<init>(ClientScanner.java:162)at org.apache.hadoop.hbase.client.HTable.getScanner(HTable.java:794)at org.apache.hadoop.hbase.MetaTableAccessor.fullScan(MetaTableAccessor.java:602)at org.apache.hadoop.hbase.MetaTableAccessor.fullScanOfMeta(MetaTableAccessor.java:143)at org.apache.hadoop.hbase.MetaMigrationConvertingToPB.isMetaTableUpdated(MetaMigrationConvertingToPB.java:163)at org.apache.hadoop.hbase.MetaMigrationConvertingToPB.updateMetaIfNecessary(MetaMigrationConvertingToPB.java:130)at org.apache.hadoop.hbase.master.HMaster.finishActiveMasterInitialization(HMaster.java:824)at org.apache.hadoop.hbase.master.HMaster.access$500(HMaster.java:214)at org.apache.hadoop.hbase.master.HMaster$1.run(HMaster.java:1884)at java.lang.Thread.run(Thread.java:745)

调整参数:hbase.client.scanner.timeout.period,由默认60s改为600s,等待600s后master仍然会挂掉,所以考虑根本原因还是数据损坏。

解决途径:

1、停止hbase所有服务
2、执行命令:
hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair
离线修复meta元数据,因为hbase hbck -fixMeta只能在master正常,数据表丢失的情况下使用,master初始化失败时,无法使用。
在此命令执行过程中,先后出过多个异常:
1)kylin_meta表的region中有重复starttime,转移meta数据
2)WALS文件报错,转移到其他位置
3)成功启动master后,多数region上线,但仍有个别非meta表的region 处于RIT状态,强行删除后,过一段时间,所有region上线,表数据恢复。
3、删除hbase znode,进入zookeeper 命令端,删除hbase znode
4、启动hbase
5、再有问题,可以执行:
hbase hbck -repair修复数据

总结

这次的解决过程非常痛苦,生产环境出问题三天,在查master和region server 日志过程中走了很多弯路,也没有找对方向,最终数据恢复了,但丢了kylin的元数据表,所有的cube都重新build的,要奉劝大家的是kylin的元数据要经常备份,至此虽然服务都起来了,但没有找到引起这个问题的真正原因,或许的kylin本身的bug,或许是多次不停的挂掉重启,导致meta表损坏、异常。

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

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

相关文章

HBase shell执行批量脚本

场景描述&#xff1a; HBase namespace中有大量无用的小表&#xff0c;占用了过多的block&#xff0c;需要批量删除&#xff0c;了解了一下有两种方式&#xff1a; 1、使用通配符 用drop命令可以删除表。在删除一个表之前必须先将其禁用。 hbase(main):018:0> disable em…

时间序列分析综述

一.基本分类 1.单变量的传统时间序列分析 2.单变量的随机时间序列分析 3.多变量的时间序列分析 建立在回归基础上的两变量序列分析 建立在AR基础上的多变量序列分析 4.截面时序数据结合的分析 转载于:https://www.cnblogs.com/xyp666/p/9220667.html

Ubuntu开启允许root用户远程登录

SSH服务器&#xff0c;可以通过SSH协议来访问远程服务器&#xff0c;代替telnet和ftp。但是ubuntu默认是不启用root用户也不允许root远程登录的。所以需要先启用root用户 1、启用root用户&#xff1a; 第一步 sudo passwd root //修改密码 第二步&#xff1a; vim /usr…

补码(为什么按位取反再加一):告诉你一个其实很简单的问题(转自醍醐灌顶)...

首先&#xff0c;阅读这篇文章的你&#xff0c;肯定是一个在网上已经纠结了很久的读者&#xff0c;因为你查阅了所有你能查到的资料&#xff0c;然后他们都会很耐心的告诉你&#xff0c;补码&#xff1a;就是按位取反&#xff0c;然后加一。准确无误&#xff0c;毫无破绽。但是…

Kettle报错:Entry to update with following key could not be found

问题描述&#xff1a; 一个转换对一个表进行插入操作&#xff0c;第一次查询然后插入数据&#xff0c;但是有些字段需要特殊处理下&#xff0c;也就是要先插入主要的信息&#xff0c;然后针对这个记录根据刚才生成的id进行更新操作&#xff0c;在开发环境上测试没问题&#xf…

IntrospectorCleanupListener作用

https://www.cnblogs.com/qiankun-site/p/5886673.html 1、此监听器主要用于解决java.beans.Introspector导致的内存泄漏的问题 2、此监听器应该配置在web.xml中与Spring相关监听器中的第一个位置(也要在ContextLoaderListener的前面)3、JDK中的java.beans.Introspector类的用途…

CentOS安装Oracle12C

文章转载&#xff1a; https://www.howtoforge.com/tutorial/how-to-install-oracle-database-12c-on-centos-7/

7-2 幼儿园数学题(29 分)

我系渣渣辉&#xff0c;我在梦工厂等你&#xff0c;是兄弟就来砍我啊&#xff01;&#xff01; 刚上幼儿园的渣渣辉迷上了一款名叫贪玩蓝月的新游戏&#xff0c;由于过于沉迷游戏&#xff0c;上课听讲的效率直线下降。 今天&#xff0c;他的数学老师给他布置了一道求解二元一次…

PLSQL中文显示乱码(问号)

1、输入 select * from V$NLS_PARAMETERS 查看第一行value值是否为简体中文 simplified chinese 实际显示为&#xff1a;AMERICAN 2、设置本地环境变量 &#xff1a;NLS_LANG NLS_LANGAMERICAN_AMERICA.ZHS16GBK NLS_LANG的值为三个划线值拼接而成。 3、重新打开PLSQL…

python2精确除法

python2和python3除法的最大区别: python2: print 500/1000 python2结果:取整数部分,小数并没有保留 0Process finished with exit code 0 python3: print 500/1000 python3结果:得到真实结果,小数保留 0.5Process finished with exit code 0 那么,如果python2想保留小数部分,要…

vim 中代码的折叠和打开

文章转载自&#xff1a;http://liufabin66688.blog.163.com/blog/static/13968548200810140486304/ 仅用于个人学习备查收藏。 在查看代码的时候&#xff0c;如果代码十分冗长&#xff0c;尤其是c/c系列的时候&#xff0c; 代码结构比较让人难以理清&#xff0c;主要是各种注…

WGCNA | weighted correlation network analysis

早就接触过这个包了&#xff0c;只是一直畏惧&#xff0c;以为很复杂&#xff0c;也没有应用场景&#xff0c;所以认识很肤浅。 现在有应用场景了&#xff0c;我自己开发了一个幼稚的版本&#xff0c;发现了很多需求&#xff0c;后来想起了WGCNA似乎部分解决了我的问题&#xf…

CentOS7安装Oracle11g R2全过程

安装过程主要参考&#xff1a; 1、https://www.howtoforge.com/tutorial/how-to-install-oracle-database-12c-on-centos-7/ 2、http://www.cnblogs.com/sonnychen/p/5366021.html 3、 https://www.jianshu.com/p/57e3e6ad81ef 遇到的问题&#xff1a; 1、安装完KDE&…

Mybatis下collections使用pageHelper进行分页

pageHelper在对mybatis一对多分页时造成查询总页数结果不对的情况。 可以做出如下修改&#xff1a; service层&#xff1a; public CommonResult worksList(String userId, int page, int pageSize) throws Exception { PageHelper.startPage(page, pageSize); List<…

使用Kylin导入JDBC数据源遇到的问题

一、目标&#xff1a; 直接使用Mysql数据作为Kylin数据源 二、参考官方配置 JDBC 数据源 准备 Sqoop Kylin 使用 Apache Sqoop 从关系型数据库加载数据到 HDFS。在与 Kylin 同一个机器上下载并安装最新版本的 Sqoop。我们使用 SQOOP_HOME 环境变量指出在本指南中 Sqoop 的安…

php 通过array_merge()和array+array合并数组的区别和效率比较

众所周知合并两个数组可以使用array_merge()&#xff0c;这是php提供的一个函数。另外还可以通过 array 的方式来合并数组&#xff0c;这两种直接有什么区别&#xff0c;哪一个的效率更高呢&#xff1f; array_merge() 格式&#xff1a; array array_merge ( array … ] ) 注意…

解决ubuntu系统root用户下Chrome无法启动问题

说明&#xff1a;本文转载自-https://www.cnblogs.com/hbsygfz/p/8409517.html 由于ubuntu16.04系统自带的是Firefox浏览器&#xff0c;需要安装Chrome浏览器&#xff0c;但是在root用户下安装后发现&#xff0c;Chrome无法正常启动。安装及问题解决具体如下&#xff1a; 1. …

mysql ERROR 1045 和2058时(28000): 错误解决办法

mysql ERROR 1045 (28000): 错误解决办法 听语音|浏览&#xff1a;54286|更新&#xff1a;2018-02-23 14:34|标签&#xff1a;mysql 1234567分步阅读ERROR 1045 (28000): Access denied for user ODBClocalhost (using password: NO) ERROR 1045 (28000): Access denied for us…

Hive设置参数-指定引擎-队列

文章转载&#xff1a;https://www.cnblogs.com/huangmr0811/p/5571001.html Hive提供三种可以改变环境变量的方法&#xff0c;分别是&#xff1a;&#xff08;1&#xff09;、修改${HIVE_HOME}/conf/hive-site.xml配置文件&#xff1b;&#xff08;2&#xff09;、命令行参数&…

php实现 字符串加密(分类分布分工,化不可能为可能)

php实现 字符串加密&#xff08;分类分布分工&#xff0c;化不可能为可能&#xff09; 一、总结 一句话总结&#xff1a;谋而后动&#xff0c;加先伪代码&#xff0c;在带函数逻辑&#xff0c;在函数的方式可以极大的避免错误和降低难度。不然这个题目乎出现各种乱七八糟的错误…