透明加密注意事项
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