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

透明加密注意事项

HBase

配置透明加密后,在使用bulkload工具生成HFile和导入HFile时,HFile路径必须指定为“/HBase根目录/extdata”的子目录(例如“/hbase/extdata/bulkloadTmp/hfile”),且执行bulkload命令时,使用的HBase用户需要加入对应集群的hadoop用户组,且具有HBase根目录的加密key的读权限,具体的权限控制请参考权限控制

非FusionInsight Manager下第一个安装的集群,用户组为“c<集群ID>_hadoop”,例如“c2_hadoop”。

例如:

hbase com.xxx.hadoop.hbase.tools.bulkload.ImportData -Dimport.skip.bad.lines=true -Dimport.separator=',' -Dimport.bad.lines.output=/hbase/extdata/bulkloadTmp/badline -Dimport.hfile.output=/hbase/extdata/bulkloadTmp/hfile configuration.xml ImportTable /datadirImport

hbase org.apache.hadoop.hbase.mapreduce.LoadIncrementalHFiles /hbase/extdata/bulkloadTmp/hfile ImportTable

“-Dimport.hfile.output”必须指定到“/HBase根目录/extdata”的子目录。

Hive

  • 当Hive的“hive.server2.enable.doAs”参数为“true”时,需要对用户授予KMS的访问权限。
  • 使用透明加密,在移动数据时,应尽量避免数据复制,提供以下几点建议:
    • 跨加密区执行load命令加载数据时,会执行复制动作,数据量大时性能会变差,建议load数据时,源路径和目标路径为同一加密区。
    • 建议设置参数hive.exec.scratchdir值对应的目录和数据仓库目录为同一加密区,避免数据复制。
    • 不建议修改“hive.exec.stagingdir”参数值,避免数据复制。
  • Hive透明加密使用限制:
    • 不支持跨加密区表或分区修改location。
    • 不支持加密区表或分区修改location到非加密区表或分区,也不支持非加密区表或分区修改location到加密区表或分区。
    • 开启回收站功能时,不支持非加密区数据删除到加密回收站。
    • 不支持跨加密区备份恢复。
    • 不支持动态分区跨加密区写入。
  • Hive透明加密使用场景:
    • 支持跨加密区写入表或分区(insert/load)。
    • 支持非加密表或分区写入加密区,也支持反向写入表或分区(insert/load)。
    • 支持跨加密区联合查询,也支持加密区、非加密区表联合查询。
    • 开启回收站功能时,支持将加密区表删除到非加密区回收站中。
    • 支持加密区表备份到非加密目录中,支持非加密区表数据恢复到加密区目录。

      例如:

      目标表test与数据源“/tmp/zone1/zone/test.txt”的加密密钥分别为key1和key2,执行以下命令从数据源覆盖式load数据到test表:

      load data local inpath '/tmp/zone1/zone/test.txt' overwrite into table test;

Spark

  • 使用透明加密,在移动数据时,应尽量避免数据复制,提供以下建议:

    跨加密区执行load命令加载数据时,会执行复制动作,数据量大时性能会变差,建议load数据时,源路径和目标路径为同一加密区。

  • 访问加密数据时,要注意本地配置中添加native库。

    例如使用hibench工具时,在工具的“conf/spark.conf”配置文件中增加以下配置:

    spark.driver.extraLibraryPath = /opt/client/Spark/spark/native
    spark.yarn.cluster.driver.extraLibraryPath = ${BIGDATA_HOME}/FusionInsight_HD_8.3.1/install/FusionInsight-Hadoop-3.1.1/hadoop/lib/native
    spark.executor.extraLibraryPath = ${BIGDATA_HOME}/FusionInsight_HD_8.3.1/install/FusionInsight-Hadoop-3.1.1/hadoop/lib/native