HBase集群无法读写数据

原创 2015年11月18日 16:23:00

1 问题现象

HBase集群于11.17晚无法写入数据,所有的同步至HBase的服务都无法写入HBase库。

2 问题原因

所有的写入服务都无法写入数据,排除应用本身的问题,考虑HBase集群本身出现问题。进入hbase shell,scan一下当中的表是否可以读取数据,结果命令卡住无法正常读取数据。重新启动HBase集群,查看 master节点日志,发现:
这里写图片描述
由此,可到看到hbase:meta所在region是下线的,故HBase集群当然不可读写数据。

3 解决方法

HBase集群本身提供了数据修复的工具:hbase hbck ,尝试运用该工具进行相关修复工作,最终还是无法解决hbase:meta不一致的状况。为啥无法修复?我想原因是HMaster进程虽然启动成功了,但它的启动时是报了异常的,所以优先解决HMaster无异常启动。HBase集群也提供了离线修复jar包来应对HMaster无法启动的过程。先关闭HBase集群,运用以下命令:
hbase org.apache.hadoop.hbase.util.hbck.OfflineMetaRepair
修复完成后,可以看到hbase:meta也重新分配了region,再次重启HMaster,无异常正常启动。然后HMaster一直等待HRegionserver的汇报心跳,此时启动所有Hregionserver。所有启动正常后,再用hbase hbck工具检测不一致性,还有不一致就用此工具修复。最后验证HBase集群的读写情况。

4 小结

HBase中表读写数据流程如下:
(1) HBase Client提交读写请求,首先与zookeeper交互,zookeeper中存储hbase:meta表region所在regionserver所在位置信息。
(2) 找到hbase:meta所在位置后,HBase Client直接与对应的regionserver交互,读取region中的内容。
(3) hbase:meta表中存储的内容为:每1行对应1个region,主要包含region名,起止rowkey,对应regionserver位置等。
(4) 由上就可以找到特定表所在regionserver位置,并与之交互。

版权声明:本文为博主原创文章,转载请注明:http://blog.csdn.net/oozie123

相关文章推荐

HBase读取数据卡住长时间不返回的原因分析

这些天做HBase,但是遇到Hbase连接上之后读取数据的时候,一直卡在那儿,程序既不报错也不结束,让我好生纠结,困扰我一整天。现在问题终于解决,现在写了一段Demo代码,具体如下:public st...
  • eff666
  • eff666
  • 2016-07-22 19:54
  • 3705

hbase集群断电数据被破坏无法启动

集群机器意外断电重启,导致hbase 无法正常启动,抛出reflect invocation异常,可能是正在执行的插入或合并等操作进行到一半时中断,导致部分数据文件不完整格式不正确或在hdfs上blo...

测试一个config server 服务器挂机后,集群是否能读写数据

mongodb config server

数据切分——Atlas读写分离Mysql集群的搭建

关于数据切分的原理可以参见博客:         http://blog.csdn.net/jhq0113/article/details/44226789      ...

HBase数据的读写流程总结

HBase数据的读写流程 HMaster; Region Server Region

HBase-1.0读写数据

public class WordCount { public static void main(String[] args) throws IOException { Configuration ...

【HBase运维系列】集群间的数据拷贝-copytable

场景:数据从老环境拷贝到新环境,两个集群建是可以通讯的 集群间数据备份包括两种,一种是全停止拷贝,一种是动态备份。 动态备份还包括replication、copytable以及export imp...

HBase跨集群复制数据的另一种方法

一、从源hbase集群中复制出HBase数据库表到本地目录 最好停止HBase,否则可能会丢部分数据 [hbase@hadoop200 ~]$ hadoop fs -get /hbase/topl...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)