HBase表可以由HDFS中的特定用户拥有吗?

时间:2014-01-07 20:37:56

标签: hbase hdfs

我有一个HBase群集,其中每个regionserver和master都由用户hbaseuser运行。

当客户端john连接并创建表时,表目录和HDFS中的所有文件都归hbaseuser所有(合理地,因为hbaseuser实际上正在运行所有内容)。

但是,如果john想要从具有托管区域的表中删除整个区域,他将运行HRegion.deleteRegion(),它会尝试从HDFS中删除整个文件,因为用户john由于权限不足而失败。 HRegion.deleteRegion()尝试直接在HDFS上运行命令,而不是通过HBase。

是否有HBase配置(通过配置文件或以编程方式),这将允许用户创建的表使该用户拥有HDFS中的那些文件?

E.g。目前john创建的任何内容现在都是:

>hadoop fs -lsr /hbase/testregion
drwxr-xr-x  - hbaseuser supergroup ... /hbase/testregion/<id>
-rw-r--r--  - hbaseuser supergroup ... /hbase/testregion/<id>/.regioninfo

但我希望看到:

>hadoop fs -lsr /hbase/testregion
drwxr-xr-x  - john supergroup ... /hbase/testregion/<id>
-rw-r--r--  - john supergroup ... /hbase/testregion/<id>/.regioninfo

是否有人知道是否存在允许用户删除HBase为该用户创建的文件的配置?

我正在使用hbase-0.90.6-cdh3u5。

1 个答案:

答案 0 :(得分:0)

没有一种方法可以用HBase做你想做的事。

虽然有一些ACL支持,但请参阅HBase指南的Access Control Section。不幸的是,这仅适用于0.92以上的版本,适用于CDH4及更高版本的cloudera。访问控制也基于协处理器,它们无法处理hdfs级别的访问控制。

我想您可以在创建表后尝试更改HDFS中的目录权限,但是当区域打开时,它们将由运行HBase进程并具有默认权限的用户拥有。