记一次HBase Drop的错误

栏目: 数据库 · 发布时间: 5年前

内容简介:hbsae表进行数据清洗,在清空数据的时候发生错误,引发后续问题由于我想保留分区,所以选择了

hbsae表进行数据清洗,在清空数据的时候发生错误,引发后续问题

HBase version: 1.2.0-cdh5.11.1

  • HBase 清空数据
  1. truncate ‘TableName’(清除数据,并且清除了分区)
  2. truncate_preserve ‘TableName’(清除数据,不清除分区)

由于我想保留分区,所以选择了 truncate_preserve

问题发生:

用hbase shell 执行truncate_preserve ‘TableName’,中途网络问题ssh突然断开连接

  • shell显示:
Truncating 'TableName' table (it may take a while):
 - Disabling table...
 - Truncating table...

后重新连接ssh hbase shell,list 发现表名存在,但是scan、disable、drop命令都报Table not found

ERROR: Table TableName does not exist.

Start disable of named table:
  hbase> disable 't1'
  hbase> disable 'ns1:t1'

HBase Web UI 上也存在这张表,但是点进去有报错信息:

org.apache.hadoop.hbase.client.HBaseAdmin.checkTableExistence(HBaseAdmin.java:1499)
org.apache.hadoop.hbase.client.HBaseAdmin.isTableEnabled(HBaseAdmin.java:1510)
org.apache.hadoop.hbase.generated.master.table_jsp._jspService(table_jsp.java:192)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1221)
org.apache.hadoop.hbase.http.lib.StaticUserWebFilter$StaticUserFilter.doFilter(StaticUserWebFilter.java:113)
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
org.apache.hadoop.hbase.http.ClickjackingPreventionFilter.doFilter(ClickjackingPreventionFilter.java:48)
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
org.apache.hadoop.hbase.http.HttpServer$QuotingInputFilter.doFilter(HttpServer.java:1354)
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
org.apache.hadoop.hbase.http.NoCacheFilter.doFilter(NoCacheFilter.java:49)
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
org.apache.hadoop.hbase.http.NoCacheFilter.doFilter(NoCacheFilter.java:49)
org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1212)
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:767)
org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
org.mortbay.jetty.Server.handle(Server.java:326)
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:928)
org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:549)
org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

问题推断

第一反应是这张表到底存不存在?

到HDFS上查看文件:

hadoop fs -ls /hbase/data/default/TableName

发现文件目录存在,但是里面没有任何文件,是空目录。推断可能是文件已经删掉了,但是缓存中或者zk中还是有这张表的信息,因为突然中止导致table meta没有生成

尝试恢复

  • snapshot 恢复(失败)

因为这张表之前做过snapshot备份,想从snapshot恢复

clone_snapshot 'TableName_Bak', 'TableName'
restore_snapshot 'TableName_Bak'

发现一只会卡在 restore_snapshot 'TableName_Bak' ,应该是找不到这张表的meta

  • hbck修复(失败)

  • 想着通过meta修复,可以自动生成desc文件

#修复 meta
hbase hbck -fixMeta

#重新分配rs
hbase hbck -fixAssignments

执行这两条语句后发现日志中均没有该表名,也没有任何异常,问题依旧

  • zookeeper删除信息(成功)

登录hbase zk:

zkCli.sh

ls /hbase/table
rmr  /hbase/table/TableName 相关信息

ls /hbase/table-lock
rmr /hbase/table-lock/TableName 相关信息

重启hbase 集群后这张表已经不存在,重新建表后正常

转载请注明出处


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

新媒体革命——在线时代的媒体、公关与传播

新媒体革命——在线时代的媒体、公关与传播

仇勇 / 电子工业出版社 / 2016-2-1 / CNY 50.00

这既是传统媒体的大裂变年代,也是在线媒体开启的新闻业的黄金时代。 信息流动的新法则不仅改变了媒体业,也在重塑公关、传播和商业的面貌。总之,这个世界的连接方式不仅不再相同,而且这一改变不可逆转。在这个全新重启的在线时代里,无论是信息的获取还是商业本身,信任都变得比以往更重要。 从告别传统媒体的那一刻起,我就有着两个小小的“野心”:一是探寻适合在线时代的媒体生产方式;二是让优质内容有权获得......一起来看看 《新媒体革命——在线时代的媒体、公关与传播》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

SHA 加密
SHA 加密

SHA 加密工具