HBase强制删除一个表/元数据

2019-03-16 13:39 

1)    HBase强制删除一个表

情景:

由于内网测试环境hbase并没有安装“SNAPPY”压缩,而建表时执行了

alter 'TrojanInfo', {NAME => 'i', COMPRESSION => 'SNAPPY'}

强制删除表:

1、强制删除该表在hdfs上的所有文件(路径根据实际情况而定):

./Hadoop fs -rmr/hbase/TrojanInfo

2、删除该表在HBase系统表.META.中的记录:

A、首先从.META.中查询出表 TrojanInfo在.META.中的rowkey,这可以通过scan '.META.',然后手动筛选;

B、然后删除该rowkey下的3个字段(假设查询出的rowkey为TrojanInfo,,1361433390076.2636b5a2b3d3d08f23d2af9582f29bd8.)

delete'TrojanInfo','TrojanInfo,,1361433390076.2636b5a2b3d3d08f23d2af9582f29bd8.','info:server'

delete'TrojanInfo','TrojanInfo,,1361433390076.2636b5a2b3d3d08f23d2af9582f29bd8.','info:serverstartcode'

delete'TrojanInfo','TrojanInfo,,1361433390076.2636b5a2b3d3d08f23d2af9582f29bd8.','info:regioninfo'

C、重启hbase即可删除表 TrojanInfo

 

2)    删除Hbase的META中多余表项

由于操作HBase比较粗犷,有时直接在Hadoop中删除hbase对应的表,导致.META.中还记录着表项,但实际存储空间中却没找到。这样就会导致HBase的log中总在报错,说找不到xxx表,而且log在飞快增长。

办法是删除.META.中对应表项。

原来,.META.和-ROOT-其实也是hbase的两个特殊的表,这就是说,我们可以scan、delete等对其进行操作。

1. scan ‘.META.'
可以看到,本来已经删除的表,还在这里存在记录。而且每个表,会分别对应3行记录。

2. delete对应的行。

删除.META.表项与删除table中一行一样,输入:
delete '.META.',row,column
delete后加上3个参数,分别是:表、行、列(如 a:b)就能删除对应行。

之后重启hbase,报错就会消失。

B、然后删除该rowkey下的3个字段(假设查询出的rowkey为TrojanInfo,,1361433390076.2636b5a2b3d3d08f23d2af9582f29bd8.)

delete 'TrojanInfo','TrojanInfo,,1361433390076.2636b5a2b3d3d08f23d2af9582f29bd8.','info:server'

delete'TrojanInfo','TrojanInfo,,1361433390076.2636b5a2b3d3d08f23d2af9582f29bd8.','info:serverstartcode'

delete'TrojanInfo','TrojanInfo,,1361433390076.2636b5a2b3d3d08f23d2af9582f29bd8.','info:regioninfo'

C、重启hbase即可删除表 TrojanInfo

发表评论

您必须 登录 才能发表留言!