七十二、HBase安全批量加载

HBase安全批量加载

由于客户端必须将从MapReduce作业生成的文件的所有权转移给HBase,所以在安全模式下的批量加载比正常设置涉及更多。安全批量加载由名为SecureBulkLoadEndpoint的协处理器实现,该协处理器使用由配置属性hbase.bulkload.staging.dir配置的暂存目录,该目录默认为/tmp/hbase-staging/。

安全批量加载算法

  • 只有一次,创建一个临时目录,这个目录是全局通用的,并由运行HBase的用户拥有(模式711或rwx—x—x)。此目录的列表将类似于以下内容:
    $ ls -ld /tmp/hbase-staging
    drwx--x--x  2 hbase  hbase  68  3 Sep 14:54 /tmp/hbase-staging

  • 用户将数据写入该用户拥有的安全输出目录。例如,/user/foo/data。
  • 在内部,HBase创建一个全局可读/可写(-rwxrwxrwx, 777)的秘密的临时目录。例如,/tmp/hbase-staging/averylongandrandomdirectoryname。该目录的名称和位置不会公开给用户。HBase管理这个目录的创建和删除。
  • 用户使数据具有全局可读性和可写性,将其移入随机的临时目录,然后调用该SecureBulkLoadClient#bulkLoadHFiles方法。

安全的优势在于秘密目录的长度和随机性。

要启用安全批量加载,请将以下属性添加到hbase-site.xml。

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

文章永久链接:https://ddkk.com/?p=12566