hbase的表无法删除(drop),提示:The procedure 28 is still running

1、一张表被客户端的hbase api操作时卡住了
2、disable成功,drop非常久,提示:The procedure 28 is still running
3、那么这个procedure怎么查?如何不重启集群的情况下删除这个表?
 
hbase 版本 1.1.2 
已邀请:

HBaseAiHaoZhe - 90后T男

赞同来自: 过往记忆 point

cloudera manager version: 5.13.3
hbase version:HBase 1.2.0-cdh5.13.3
运行任务:bulkload
下面所有的路径都是在hdfs上前几天我也遇到过这样的问题:disable 'tablename' 成功;drop 'tablename',卡住,运行一段时间后,然后提示:The procedure 452 is still running;
后经过测试发现:
1,在hbase的命令行里,建表,插入数据,禁用表,删除表都是成功的;
2,只有经过bulkload的导入的数据,在drop 'tablename',时会提示The procedure 【号】 is still running;
后来又从网上找资料,测试等等,终于发现原因
最主要的原因是:【权限问题】
1,任务运行统一在普通用户目录下,比如说edq
2,从关系型数据库导出数据到hdfs中去,文件的权限是:  
文件权限       所属用户       所属组
-rw-r--r--     edq               hive
3,bulkload,其实有两步:
1)将源文件生成hfile文件,文件权限和上面一样:
文件权限       所属用户       所属组
-rw-r--r--     edq               hive
2)将hfile文件load进hbase中去,文件权限和上面一样:
文件权限       所属用户       所属组
-rw-r--r--     edq               hive
4,想必各位看官,有点明白了,我接着说,那我们看看hdfs上hbase中【/hbase/data/default/tablename/.../...】的文件权限。
hbase中的文件权限是:
文件权限       所属用户       所属组
-rw-r--r--     hbase              hbase
hbase中的文件所属用户统一为hbase用户
5,当我们想要drop删除hbase 表的时候,
表的hfile文件会从/hbase/data/default/tablename/../..移到/hbase/.tmp/data/default/tablename/...中,此时,当hbase想要删除
/hbase/.tmp/data/default/tablename/.. 表时,发现没有权限,为啥,因为
我的hfile文件权限为:
文件权限       所属用户       所属组
-rw-r--r--     edq               hive
所属者是edq,其他人只有r--,read权限,所以hbase用户无法删除该文件,如何验证,当你重启hbase时,会启动失败,因为,会报权限问题,无法删除临时目录下的文件:/hbase/.tmp/data/default/tablename/.. 
6,该怎么做?
进行删除操作之前赋予权限,我的是在bulkload第二步之前,进行赋予权限,将文件other用户添加为w权限,hbase即可删除:
hdfs dfs -chmod -R o+w   /hfilepath
7,希望对遇到此问题的朋友有所帮助
 
 
 
 
 
 
 
 
 

过往记忆

赞同来自:

有详细的错误信息吗?比如堆栈等。

point - 90后程序猿

赞同来自:

这个问题没有解决吗?我是api enableTable 时报这个错,procedure is still running.   

Imyerfazer

赞同来自:

我也出现了这个问题,跟楼主情况一样,不知道现在有没有解决办法,急,在线等,谢谢各位大神了

要回复问题请先登录注册


中国HBase技术社区微信公众号:
hbasegroup

欢迎加入HBase生态+Spark社区钉钉大群