我正在尝试使用 spark 2.3 docker 容器镜像运行 spark-submit 到 kubernetes 集群
我面临的挑战是应用程序有一个 mainapplication.jar 和其他依赖文件和 jars,它们位于远程位置,如 AWS s3,但根据 spark 2.3 文档,有一个叫做 kubernetes init-container 的东西来下载远程依赖项,但在这种情况下我不创建任何 Podspec 以在 kubernetes 中包含 init-containers,根据文档 Spark 2.3 spark/kubernetes 在内部创建 Pods(驱动程序、执行程序)所以不确定当存在远程依赖项时如何使用 init-container 进行 spark-submit。
https://spark.apache.org/docs/latest/running-on-kubernetes.html#using-remote-dependencies
请建议
最佳答案
它可以与 s3a://urls 一起工作。不幸的是,在 spark-hadoop2.7.3 上运行 s3a 是有问题的(主要是身份验证),所以我选择用 Hadoop 2.9.1 构建 spark,因为 S3A 在那里看到了显着的发展
我创建了一个 gist与所需的步骤
该脚本还创建了第二个 docker 镜像,其中添加了 S3A 依赖项和基本 conf 设置以使用 IAM 凭证启用 S3A,因此在 AWS 中运行不需要将访问/ key 放在 conf 文件/参数中
我还没有使用图像运行任何生产 Spark 作业,但已经测试了基本的保存和加载到 s3a url 确实有效。
我还没有尝试过 S3Guard它使用 DynamoDB 来确保 S3 写入/读取一致 - 类似于 EMRFS
关于apache-spark - 使用 kubernetes 在 spark 2.3 中处理 spark-submit 的远程依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49173055/