记一次HBase Drop的错误

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

内容简介: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 集群后这张表已经不存在,重新建表后正常

转载请注明出处


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

查看所有标签

猜你喜欢:

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

Web之困:现代Web应用安全指南

Web之困:现代Web应用安全指南

(美)Michal Zalewski / 朱筱丹 / 机械工业出版社 / 2013-10 / 69

《web之困:现代web应用安全指南》在web安全领域有“圣经”的美誉,在世界范围内被安全工作者和web从业人员广为称道,由来自google chrome浏览器团队的世界顶级黑客、国际一流安全专家撰写,是目前唯一深度探索现代web浏览器安全技术的专著。本书从浏览器设计的角度切入,以探讨浏览器的各主要特性和由此衍生出来的各种安全相关问题为主线,深入剖析了现代web浏览器的技术原理、安全机制和设计上的......一起来看看 《Web之困:现代Web应用安全指南》 这本书的介绍吧!

URL 编码/解码
URL 编码/解码

URL 编码/解码

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换