小编sta*_*ash的帖子

Spark/Hadoop - 无法使用服务器端加密保存到s3

我正在运行AWS EMR Cluster来运行spark作业.为了使用s3存储桶,hadoop配置设置了access-keys,secret-key,enableServerSideEncryption和用于加密的算法.请参阅下面的代码

val hadoopConf = sc.hadoopConfiguration; hadoopConf.set("fs.s3.impl", "org.apache.hadoop.fs.s3native.NativeS3FileSystem") hadoopConf.set("fs.s3.awsAccessKeyId", "xxx") hadoopConf.set("fs.s3.awsSecretAccessKey", "xxx") hadoopConf.set("fs.s3.enableServerSideEncryption", "true") hadoopConf.set("fs.s3.serverSideEncryptionAlgorithm","AES256")

在上述配置下,火花程序能够从s3桶读取,执行处理.但是当它试图将结果保存到s3时失败,这强制了数据必须加密.如果存储桶允许未加密的数据,则保存成功未加密.

即使使用强制执行服务器端加密的选项构建群集,也会发生这种情况--emrfs Encryption=ServerSide,Args=[fs.s3.serverSideEncryptionAlgorithm=AES256].

从emr到s3的hdfs的hadoop distcp也失败了.但是,当使用--s3ServerSideEncryption选项设置时,s3-dist-copy(aws版本hdfs distcp)工作成功.

但是,ec2实例具有必需的角色权限,可以使用服务器端加密将数据上载到同一个存储桶,而无需使用任何用户访问密钥.请参阅下面的示例命令.如果在下面的命令中省略了-sse,它将抛出"访问被拒绝错误".

aws s3 cp test.txt s3://encrypted-bucket/ —sse

如果有人可以帮助解决spark/hadoop中所需的配置以将数据保存到具有服务器端加密的aws s3,将会很有帮助.

encryption hadoop amazon-s3 emr apache-spark

6
推荐指数
1
解决办法
3590
查看次数

标签 统计

amazon-s3 ×1

apache-spark ×1

emr ×1

encryption ×1

hadoop ×1