apache-spark - 使用 kubernetes 在 spark 2.3 中处理 spark-submit 的远程依赖项

标签 apache-spark amazon-s3 kubernetes

我正在尝试使用 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与所需的步骤

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

  • 该脚本还创建了第二个 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/

    相关文章:

    apache-spark - 如何控制Spark作业提交的Hadoop IPC重试次数?

    java - 如何有效地连接任意数量的 RDD?

    node.js - 在主程序之前在 lambda 中加载 S3 文件

    php - Helm + Kubernetes,在 PHP 中加载和启用扩展或模块

    kubernetes - 核心操作系统项目kube-prometheus和prometheus运算符有什么区别?

    hadoop - 如何使用 wholeTextFiles 在 Spark 中读取 gz 文件

    scala - spark sql中sc.broadcast和broadcast函数的区别

    php - 无法从 php 访问 localstack s3

    mysql - 使用 AWS s3 版本控制存储 gzip 压缩的 mysql 转储是否更有效?

    kubernetes - 在不存在的情况下将 `serviceAccountName`设置为 `default`