现象:1、用hbase shell 创建表roomRecord 提示表已经存在 但是list查不到,用enable \'roomRecord\'/disable \'roomRecord\'/is_enabled \'roomRecord\'均没有问题
2、java中通过HTableDescriptor创建表,报错如下图:
导致这种错误的操作:
在删除一个表之前,disable的时候 不小心断开或其他因素 导致disable没有成功,然后就直接drop掉了这张表,虽然表被删除掉了,但是zookeeper依然存在该表的信息,故而造成上述错误org.apache.hadoop.hbase.TableNotEnabledException,list的时候也找不到。
解决办法:
进入zookeeper安装文件夹bin下,
运行./zkCli.sh,进入zookeeper客户端,登陆成功出现如下提示:
运行 ls / 查看根目录下的文件夹,分别进入 table 和table92 文件夹,如果文件夹下边存在roomRecord,分别删除,然后重启hbase,问题得以解决。(注:重启过程中可能会出现master: java.net.BindException: Address already in use master: at sun.nio.ch.Net.bind。。。。的错误,是因为zookeeper已经启动,可以先手动关闭zookeeper,然后再启动hbase)
删除命令用:rmr /hbase/table92/roomRecord
以下是别人的分析思路:放这里供参考
WARN org.apache.hadoop.hdfs.DFSClient: DataStreamer Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File /hbase/.tmp/t2/.tmp/.tableinfo.0000000001 could only be replicated to 0 nodes, instead of 1
hbase(main):023:0* list
无相应表
排错
1.在hadoop查看有无此表的数据
hadoop fs -ls /hbase
也无此表的信息,说明没有创建成功
hadoop fs -ls /hbase hadoop/.tmp
也不相应内容
2.重新进入shell开启debug,创建一个不存在的表,看一下业务流程
hbase shell -d
创建表,发现了如下信息
13/05/06 11:15:03 DEBUG client.MetaScanner: Scanning .META. starting at row=lzotdsdsdest,,00000000000000 for max=2147483647 rows using org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation@42db681c
这个发现说明建表先到‘.META.’表里去检查了有没有要创建的表,于是scan了一下,也没有我创建的表的信息。
13/05/06 11:15:03 DEBUG zookeeper.ClientCnxn: Reading reply sessionid:0x13e77d2facc0005, packet:: clientPath:null serverPath:null finished:false header:: 9,4 replyHeader:: 9,596335,0 request:: \'/hbase/root-region-server,T response:: #ffffffff000d3139383239406861646f6f70306861646f6f70302c36303032302c31333637383039393138343531,s{589701,589701,1367809925480,1367809925480,0,0,0,0,45,0,589701}
这个信息说明在zookeeper上做了相应的检查
./zkCli.sh
ls /hbase/root-region-server
没有什么发现
DEBUG zookeeper.ClientCnxn: Reading reply sessionid:0x13e77d2facc0005, packet:: clientPath:null serverPath:null finished:false header:: 10,4 replyHeader:: 10,596342,0 request:: \'/hbase/table/lzotdsdsdest,F response:: #ffffffff000d3139363538406861646f6f7030454e41424c4544,s{596332,596338,1367810103284,1367810103537,2,0,0,0,25,0,596332}
这个信息说明在zookeeper上做了相应的检查