首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS :设置S3桶访问的hadoop凭据提供程序

AWS :设置S3桶访问的hadoop凭据提供程序
EN

Stack Overflow用户
提问于 2020-05-19 08:12:28
回答 1查看 970关注 0票数 0

我已经在AWS上建立了一个星火EMR集群(Hadoop2.8.5,Spark2.4.4)。我有一个s3桶url,它是访问凭据。在设置了集群并附加了笔记本之后,我可以在使用以下方法设置hadoop配置之后,使用spark.read.parquet("s3n://...")从存储桶中读取数据:

代码语言:javascript
复制
sc._jsc.hadoopConfiguration().set('fs.s3n.awsAccessKeyId', '...')
sc._jsc.hadoopConfiguration().set('fs.s3n.awsSecretAccessKey', '...')

但是,我在许多文档中看到,这是不推荐的,因为它将密钥存储在日志中。

因此,我正在尝试的是在HDFS文件系统中创建一个Hadoop凭证文件,然后在“核心站点”中添加一个EMR配置,以提供凭证文件路径。以下是我遵循的步骤:

  1. 使用SSH通过Putty.exe创建了EMR集群
  2. ,我创建了hadoop凭据文件:

代码语言:javascript
复制
$ hadoop credential create fs.s3a.access.key -provider jceks://hdfs/<path_to_hdfs_file> -value <aws_access_id>
$ hadoop credential create fs.s3a.secret.key -provider jceks://hdfs/<path_to_hdfs_file> -value <aws_secret_key>

  1. I在管理控制台的“核心站点”分类下向实例配置文件添加了一个配置,并将路径“jceks://hdfs/ path _ to _hdfs_ spark.hadoop.security.credential.provider.path”提供给spark.hadoop.security.credential.provider.path,并将配置应用到主和从配置。

问题:

然而,我无法使用spark.read.parquet()从EMR笔记本中访问桶,它会抛出一个访问拒绝异常。是我做错了还是有什么中间的步骤我错过了这里。我不想硬编码的钥匙在我的电子病历笔记本。任何帮助都将不胜感激。从一个星期以来,我一直在处理这个问题。

桶和聚类在不同的区域。但是,我也尝试过在与存储桶相同的位置创建集群,从而尝试了相同的过程。这个问题仍然存在。

EN

回答 1

Stack Overflow用户

发布于 2020-05-20 09:56:00

EMR中的

  • 对S3数据的访问应该与它们的连接器和s3:// URL一起使用;任何其他模式引用它们不支持的代码。
  • 您可以访问部署VM/容器的IAM角色。要访问特定的桶,请选择正确的角色

这是没有意义的,但s3n连接器(过时的,不受支持的)不支持JCEK文件

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61886239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档