HBase安全批量加載

由於客戶端必須將從MapReduce作業生成的文件的所有權轉移給HBase,所以在安全模式下的批量加載比正常設置涉及更多。安全批量加載由名為SecureBulkLoadEndpoint的協處理器實現,該協處理器使用由配置屬性hbase.bulkload.staging.dir配置的暫存目錄,該目錄默認為/tmp/hbase-staging/。

安全批量加載算法

  • 只有一次,創建一個臨時目錄,這個目錄是全局通用的,並由運行HBase的用戶擁有(模式711或rwx—x—x)。此目錄的列表將類似於以下內容:
<code>$ ls -ld /tmp/hbase-staging
drwx--x--x  2 hbase  hbase  68  3 Sep 14:54 /tmp/hbase-staging/<code>
  • 用戶將數據寫入該用戶擁有的安全輸出目錄。例如,/user/foo/data。
  • 在內部,HBase創建一個全局可讀/可寫(-rwxrwxrwx, 777)的秘密的臨時目錄。例如,/tmp/hbase-staging/averylongandrandomdirectoryname。該目錄的名稱和位置不會公開給用戶。HBase管理這個目錄的創建和刪除。
  • 用戶使數據具有全局可讀性和可寫性,將其移入隨機的臨時目錄,然後調用該SecureBulkLoadClient#bulkLoadHFiles方法。

安全的優勢在於秘密目錄的長度和隨機性。

要啟用安全批量加載,請將以下屬性添加到hbase-site.xml。

<code><property>
   <name>hbase.security.authorization/<name>   
   <value>true/<value>
/<property> 

<property>
   <name>hbase.bulkload.staging.dir/<name>   
   <value>/tmp/hbase-staging/<value> 
/<property> 
<property>
   <name>hbase.coprocessor.region.classes/<name>   
   <value>org.apache.hadoop.hbase.security.token.TokenProvider,   
    
   org.apache.hadoop.hbase.security.access.AccessController,
   org.apache.hadoop.hbase.security.access.SecureBulkLoadEndpoint/<value> 
/<property>/<code>


分享到:


相關文章: