Spark Executor无法识别AWS凭证环境变量导致S3数据读取失败问题求助
Spark Executor无法识别AWS凭证环境变量导致S3数据读取失败问题求助
各位大佬好,我最近碰到一个Spark+YARN+S3的凭证问题,折腾了好久没搞定,想请教下大家!
我的集群是基于K8s Pod搭建的,一共两个节点:一个跑YARN ResourceManager,另一个跑YARN NodeManager。这两个Pod里都配置了AWS的环境变量AWS_SECRET_ACCESS_KEY和AWS_ACCESS_KEY_ID,用来访问我AWS账号里的特定S3存储桶。
我提交了一个Spark应用,一开始看起来一切正常:
- 在S3桶里能看到Spark生成的
.inprogress文件,说明初始阶段Spark和S3的交互是成功的 - 同时也能看到对应的staging文件目录,这个目录是空的,符合我不保留staging文件的配置
不过问题来了,当Spark应用开始读取S3桶里的数据时(我推测是这个阶段),应用直接失败了。我现在特别困惑:既然初始的S3交互没问题,为什么读取数据时会因为凭证出问题?
我怀疑是不是Spark Executor没有继承到Pod里的AWS环境变量?有没有什么办法能确认Executor的环境变量配置?或者有没有其他更可靠的方式,能让Spark把这些凭证正确传递给Executor进程呢?
补充下我看到的S3状态:
.inprogress文件:S3桶里存在多个Spark应用相关的.inprogress后缀文件,证明初始文件操作成功- staging目录:对应的staging目录已创建,但内部为空,和我的配置一致
备注:内容来源于stack exchange,提问作者JBoy
相关产品推荐
相关产品推荐

