【发布时间】:2023-04-08 14:51:01
【问题描述】:
我正在尝试使用 spark 2.3 docker 容器映像运行 spark-submit 到 kubernetes 集群
我面临的挑战是应用程序有一个 mainapplication.jar 和其他依赖文件和 jar,它们位于远程位置,如 AWS s3,但根据 spark 2.3 文档,有一个名为 kubernetes init-container 的东西可以下载远程依赖项,但在这种情况下,我没有创建任何 Podspec 以在 kubernetes 中包含 init-containers,根据文档 Spark 2.3 spark/kubernetes 在内部创建 Pod(驱动程序,执行程序)所以不确定当存在远程依赖项时如何使用 init-container 进行 spark-submit .
https://spark.apache.org/docs/latest/running-on-kubernetes.html#using-remote-dependencies
请推荐
【问题讨论】:
-
看起来你只需要在 spark-submit 的 --jars 和 --files 选项中包含对远程 jar 和远程文件(如果有的话)的引用。然后,当 spark 运行时创建 pod 来运行您的作业时,这些 pod 将包含一个 init-container 来检索远程依赖项。
-
@JonahBenton 所以我不需要创建任何初始化容器?
-
我不使用spark,但暗示驱动程序会处理它,只要在spark-submit的那些选项中指定依赖项即可。如果它不起作用,可能是因为 k8s 机器上的所有火花仍处于实验状态。在这种情况下,根据对 local: dependencies 的讨论,似乎可以将依赖项打包到包含作业的 docker 映像中。 Docker 能够在构建时检索远程资源并将它们写入文件系统,因此它们可以在映像中使用,而无需 spark 下载它们。
-
@shiv455 我也遇到了类似的情况,请问你是怎么做到的?
标签: apache-spark amazon-s3 kubernetes