【问题标题】:spark-ec2 --copy-aws-credentials not workingspark-ec2 --copy-aws-credentials 不工作
【发布时间】:2016-05-11 23:29:58
【问题描述】:
使用 Spark 1.5,我使用 spark-ec2 可执行文件和 --copy-aws-credentials 标志启动了一个 EC2 集群。登录主节点时,$AWS_ACCESS_KEY_ID 和 $AWS_SECRET_ACCESS_KEY 未设置。它们都设置在启动集群的机器上。尝试通过主节点上的spark-shell 中的sc.textFile("s3n://...) 获取文件会引发要求提供凭据的错误。
如何使用正确的 AWS 凭证启动集群?
【问题讨论】:
标签:
amazon-web-services
amazon-ec2
apache-spark
【解决方案1】:
我遇到了同样的问题。
通过查看 spark-ec2 安装脚本 [1],我了解到密钥已复制到两个 hdfs 安装的 core-site.xml 文件中。您可以查看~/ephemeral-hdfs/conf/core-site.xml 和~/persistent-hdfs//conf/core-site.xml。
这允许您将文件放入您配置的两个文件系统中的任何一个,而无需提供 AWS 凭证。然后,您可以从 Spark 访问 hdfs 中的文件(即hdfs:///yourdata)。
如果您想直接从 Spark 访问 S3,有多种选择。
- 将相同的配置放入
~/spark/conf/core-site.xml 和~/mapreduce/conf/core-site.xml。每次停止和启动集群时都必须重新执行此操作,这很烦人。
-
export AWS_ACCESS_KEY_ID=... 和 export AWS_SECRET_ACCESS_KEY=... 在提交 Spark 作业之前(例如,在提交作业的同一脚本中)
- 使用您的
s3n 网址 (s3n://YourAccesKey:YourSecretAccessKey@yourbucket/yourdata) 提供您的凭据
[1]https://github.com/amplab/spark-ec2