更新时间:2024-11-29 GMT+08:00

配置HBase使用透明加密

操作场景

HDFS实现透明加密,加密区配置完成后,用户往加密区上存储数据的时候,加解密处理流程由HDFS客户端完成,上层应用无感知。HBase的业务数据存放到HDFS上,默认支持透明加密,需要将HDFS上HBase根目录设置为加密分区。

前提条件

  • 集群已安装KMS服务、HDFS服务、HBase服务等,且服务正常运行。
  • 已配置HDFS服务对接KMS,请参见配置HDFS对接KMS
  • 已创建加密使用的key,请参见密钥管理
  • 已安装集群客户端,例如安装目录为“/opt/client”。

操作步骤

  1. 停止HBase服务。

    登录FusionInsight Manager,选择“集群 > 待操作的集群名称 > 服务”,在“HBase”服务窗口单击右上角的,在弹出菜单中单击“停止服务”

  2. 登录集群客户端,进入客户端安装目录。

    例如:

    cd /opt/client

  3. 导入客户端环境变量,然后使用系统内的hdfs用户执行kinit命令进行用户认证。

    source bigdata_env

    kinit hdfs

  4. 将HBase根目录(由“hbase.data.rootdir”参数指定,默认为“/hbase”)下的文件移动到备份目录。

    例如,HBase根目录为“/hbase”,备份目录路径为“/hbase_bak”,则执行以下命令:

    hdfs dfs -mkdir -p /hbase_bak/archive

    hdfs dfs -mkdir -p /hbase_bak/data

    hdfs dfs -mv /hbase/archive/* /hbase_bak/archive

    hdfs dfs -mv /hbase/data/* /hbase_bak/data

    hdfs dfs -rm -r /hbase/data

    hdfs dfs -rm -r /hbase/archive

    hdfs dfs -mv /hbase/* /hbase_bak

    • 如果配置了“HBase文件存储(HFS)”,且需要配置透明加密,则需要参考4~7将HFS文件存储目录(由HBase实例的服务配置参数“hbase.filestream.rootdir”指定)设置成透明加密分区。
    • 如果配置了“HDFS Federation”,且需要配置透明加密,则备份目录与HBase根目录需要在同一个NameService下,且执行4~10时HBase根目录与备份目录均需加上HDFS文件系统前缀(hdfs://NameService名称),例如:hdfs://ns1/hbasehdfs://ns1/hbase_bak

  5. 使用生成的key,将HBase根目录设置为加密分区。

    hdfs crypto -createZone -keyName key_name -path HBase根目录

    hdfs crypto -listZones //查看加密分区

    例如:

    hdfs crypto -createZone -keyName key1 -path /hbase

    hdfs crypto -listZones

    如果配置了“HDFS Federation”,则执行:

    hdfs crypto -fs hdfs://NameService名称 -listZones //查看加密分区

    例如:

    hdfs crypto -fs hdfs://ns1 -listZones //查看加密分区

  6. 使用系统内的hbase用户执行以下命令进行用户认证。

    kinit hbase

  7. 拷贝HBase旧有数据到加密分区。

    hadoop distcp -update -delete -prbugpcaxt -skipcrccheck 备份目录 HBase根目录

    例如:

    hadoop distcp -update -delete -prbugpcaxt -skipcrccheck /hbase_bak /hbase

  8. 登录FusionInsight Manager,选择“集群 > 待操作的集群名称 > 服务 > HBase > 配置”,在HBase的配置页面,修改参数“hadoop.security.crypto.buffer.size”的值为“65536”,然后保存。

    如果搜索不到该参数,选择“全部配置 > HBase > 自定义”,手动在“hadoop.config.expandor”参数中添加自定义参数。

  9. 启动HBase服务。

    登录FusionInsight Manager,选择“集群 > 待操作的集群名称 > 服务”,在“HBase”服务窗口单击右上角的,在弹出菜单中单击“启动服务”

  10. 删除备份目录。

    hdfs dfs -rm -r 备份目录

    例如:

    hdfs dfs -rm -r /hbase_bak

    如果配置了“HBase文件存储(HFS)”,且需要配置透明加密,则按照此方法删除HFS文件存储备份目录。