内容简介:hbsae表进行数据清洗,在清空数据的时候发生错误,引发后续问题由于我想保留分区,所以选择了
hbsae表进行数据清洗,在清空数据的时候发生错误,引发后续问题
HBase version: 1.2.0-cdh5.11.1
- HBase 清空数据
- truncate ‘TableName’(清除数据,并且清除了分区)
- 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 集群后这张表已经不存在,重新建表后正常
转载请注明出处
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Golang学习笔记之错误处理error、panic (抛出错误),recover(捕获错误)
- c – 构建PBRT v2错误 – 错误1错误U1077:’if’:返回代码’0x1′
- !错误!在 Android 下这么用 ShowModal 是错误的!
- Google开源ClusterFuzz:使得查找错误并修复错误变得异常简单
- 脚本错误量极致优化-定位压缩且无 SourceMap 文件的脚本错误
- php – 解析错误:语法错误,意外’未设置'(T_UNSET)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。