我有一个 Spark 应用程序在带有 YARN 的 EKS 集群上运行
应用程序启动,我可以在 YARN UI 中看到它,但由于缺少凭据而失败(请参见下面的屏幕截图),defaultFS 是 S3 存储桶。
在配置中,我没有指定任何凭据提供程序,因为默认凭据提供程序链包括从环境变量中读取,实际上我的环境变量包含 YARN rm 和 nm 中的访问密钥:
env | grep AWS
AWS_SECRET_ACCESS_KEY=<THE_KEY>
AWS_DEFAULT_REGION=us-east-1
AWS_WEB_IDENTITY_TOKEN_FILE=/var/run/secrets/eks.amazonaws.com/serviceaccount/token
AWS_REGION=us-east-1
AWS_ACCESS_KEY_ID=<THE_KEY_ID>
AWS_ROLE_ARN=arn:aws:iam::ROLE_NAME
AWS_STS_REGIONAL_ENDPOINTS=regional
凭证首先使用成功,确实我在 s3 存储桶中看到了
.inprogress
文件:spark.yarn.stagingDir: s3a://the_bucket
但是在它失败后不久报告它无法访问 s3 存储桶,但从异常中我无法理解哪个部分需要这些凭据,我认为我缺少一些配置,但我无法从异常中获取线索。
有什么建议吗?
我通过配置将凭证“注入”到 Spark 中来修复它:
spark.hadoop.fs.s3a.access.key: KEY
spark.hadoop.fs.s3a.secret.key: SECRET