gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 14:16:59 30 4
gpt4 key购买 nike

我正在运行 AWS EMR 集群来运行 spark 作业。为了使用 s3 存储桶,hadoop 配置设置了访问 key 、 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")

在上面的配置下,spark程序可以从s3 bucket中读取数据,进行处理。但是当它尝试将结果保存到 s3 时失败,这强制要求必须对数据进行加密。如果桶允许未加密的数据,那么它被成功保存未加密。

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

从 emr 上的 hdfs 到 s3 的 hadoop distcp 也失败了。但是,当使用 --s3ServerSideEncryption 选项设置时,s3-dist-copy(aws 版本 hdfs distcp)可以成功运行。

但是,ec2 实例具有所需的角色权限,可以在不使用任何用户访问 key 的情况下通过服务器端加密将数据上传到同一存储桶。请参阅下面的示例命令。如果在下面的命令中省略了 -sse,它将抛出“访问被拒绝错误”。

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

如果有人可以帮助进行 spark/hadoop 中所需的配置以使用服务器端加密将数据保存到 aws s3,这将很有帮助。

最佳答案

现在已经解决了。 --emrfs 没有正确应用配置。但是下面的 aws emr create-cluster 选项适用于 spark 和 hadoop distcp

--configurations '[{"Classification":"emrfs-site","Properties":{"fs.s3.enableServerSideEncryption":"true"},"Configurations":[]}]'

由于已使用角色配置文件设置 ec2 实例以从存储桶中读取/写入,因此我的 spark 代码无需提供 aws 访问 key 即可运行。

更多 emr 配置选项可用,可与 --configuration 选项一起使用 emr create-cluster http://docs.aws.amazon.com/ElasticMapReduce/latest/ReleaseGuide/emr-configure-apps.html

我不确定为什么 aws emr 为做同样的事情提供了 2 个选项。一个有效,另一个无效。

关于hadoop - Spark/Hadoop - 无法使用服务器端加密保存到 s3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35549694/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com