2014-01-07 46 views
1

我有一個HBase集羣,其中每個區域服務器和主服務器都由用戶hbaseuser運行。HBase表可以由HDFS中的特定用戶擁有嗎?

當客戶端john連接並創建表時,表目錄和HDFS中的所有文件歸hbaseuser(合理地說,因爲hbaseuser實際上正在運行所有內容)。

但是,如果john想要從包含受管理區域的表中刪除整個區域,他將運行HRegion.deleteRegion(),它將嘗試從用戶john中刪除HDFS中的整個文件,該文件由於權限不足而失敗。 HRegion.deleteRegion()嘗試直接在HDFS上而不是通過HBase運行命令。

是否存在一個HBase配置(通過配置文件或編程方式),這將允許用戶創建的表擁有該用戶擁有的HDFS文件?

E.g.目前由約翰創建,現在任何事情都是:

>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。

回答

0

沒有一個好方法可以用HBase來做你想做的事情。

儘管有一些ACL支持,請參閱HBase指南的Access Control Section。不幸的是,只有在0.92以上的版本纔可用,對於CDH4和更高版本的cloudera。訪問控制還基於無法處理hdfs級訪問控制的協處理器。

我想你可以在創建表後嘗試更改HDFS中的目錄權限,但是隨着區域被打開,它們將由運行HBase進程的用戶擁有默認權限。

相關問題