amazon-web-services - 使用 Docker 时的 EMR Spark 部署模式

标签 amazon-web-services docker apache-spark amazon-emr spark-submit

我正在 AWS EMR 中部署 Spark 作业,并使用 docker 打包所有依赖项。我的 python 化 Spark 提交命令如下所示

    ...
    cmd = (
            f"spark-submit --deploy-mode cluster "
            f"spark-submit --deploy-mode {deploy_mode} "
            f"--conf spark.executorEnv.YARN_CONTAINER_RUNTIME_TYPE=docker "
            f"--conf spark.executorEnv.YARN_CONTAINER_RUNTIME_DOCKER_IMAGE={docker_image} "
            f"--conf spark.executorEnv.YARN_CONTAINER_RUNTIME_DOCKER_CLIENT_CONFIG={config} "
            f"--conf spark.executorEnv.YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=/etc/passwd:/etc/passwd:ro "
            f"--conf spark.yarn.appMasterEnv.YARN_CONTAINER_RUNTIME_TYPE=docker "
            f"--conf spark.yarn.appMasterEnv.YARN_CONTAINER_RUNTIME_DOCKER_IMAGE={docker_image} "
            f"--conf spark.yarn.appMasterEnv.YARN_CONTAINER_RUNTIME_DOCKER_CLIENT_CONFIG={config} "
            f"--conf spark.yarn.appMasterEnv.YARN_CONTAINER_RUNTIME_DOCKER_MOUNTS=/etc/passwd:/etc/passwd:ro "
            f"{path}"
        )
    ...

当我的 deploy_mode 为集群时,它按预期工作,但当 deploy_mode 为客户端时,我看不到任何 docker 依赖项。谁能帮忙解释为什么会发生这种情况,这是否正常?

最佳答案

docker 容器由 EMR 上的 Yarn 管理:https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-docker.html

在客户端模式下,您的 Spark 驱动程序不会在 docker 容器中运行,因为该进程不受 Yarn 管理,而是直接在运行 spark-submit 命令的节点上执行。 在集群模式下,您的驱动程序由 Yarn 管理,并在 docker 容器内执行。

关于amazon-web-services - 使用 Docker 时的 EMR Spark 部署模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71780140/

相关文章:

apache-spark - HDP + ambari + yarn 节点标签和HDFS

amazon-web-services - 通过AWS Lambda使用boto3访问被拒绝

amazon-s3 - 是否可以将 s3 存储桶移动/复制到其他帐户?

amazon-web-services - AWS 为我们提供了 Amazon MQ,但如何触发 Lambda?

docker - Docker Compose 配置中 "ipam"键的用途是什么?

从主机到容器的 docker cp 不起作用

docker - Godep无法在Docker容器中工作

apache-spark - 如何使用 PySpark 正确执行两个 RDD 的完整外连接?

amazon-web-services - 基于 lambda 的服务的 CloudFormation 模板,S3Key 不存在

scala - Spark 2.2 空安全左外连接空指针异常