【问题标题】:handling Remote dependencies for spark-submit in spark 2.3 with kubernetes使用 kubernetes 在 spark 2.3 中处理 spark-submit 的远程依赖项
【发布时间】: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


【解决方案1】:

它可以与 s3a:// 网址一起正常工作。不幸的是,让 s3a 在现有的 spark-hadoop2.7.3 上运行是有问题的(主要是身份验证),所以我选择使用 Hadoop 2.9.1 构建 spark,因为 S3A 在那里取得了显着的发展

我创建了一个gist,其中包含

所需的步骤
  • 使用新的 hadoop 依赖项构建 spark
  • 为 k8s 构建 docker 镜像
  • 将图像推送到 ECR

该脚本还创建了第二个 docker 映像,其中添加了 S3A 依赖项和基本 conf 设置,用于使用 IAM 凭证启用 S3A,因此在 AWS 中运行不需要将 access/secretkey 放入 conf 文件/args 中

我还没有使用该图像运行任何生产 Spark 作业,但已经测试了基本的保存和加载到 s3a url 确实有效。

我还没有尝试使用 S3Guard,它使用 DynamoDB 来确保 S3 写入/读取是一致的 - 类似于 EMRFS

【讨论】:

  • 辛苦了!如果没有找到其他选项(配置键、环境变量),S3A 客户端应自动选择 IAM 配置选项。如果您使用 -Phadoop-cloud 选项构建 spark,它应该引入正确的依赖项并消除冲突。希望这会有所帮助
【解决方案2】:

Spark 会自动为您创建 Init 容器。

例如,你可以使用

kubectl describe pod [您的驱动程序 svc 的名称] 你会看到名为 spark-init 的 Init 容器。

您还可以通过以下命令从 init-container 访问日志:

kubectl 日志 [您的驱动程序 svc 的名称] -c spark-init

警告:我不是在 AWS 中运行,而是在自定义 K8S 中运行。我的 init-container 成功地从 HTTP 服务器(但不是 S3,奇怪地)运行了下载依赖项。

【讨论】:

    猜你喜欢
    • 2015-06-08
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多