使用Docker时的EMR Spark部署模式

wf82jlnq  于 2022-11-16  发布在  Apache
关注(0)|答案(1)|浏览(133)

我正在AWS EMR中部署一个spark作业,并使用docker打包所有依赖项。

...
    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依赖项。有人能帮助解释为什么会发生这种情况吗?这是正常的吗?

dluptydi

dluptydi1#

码头集装箱由EMR上的Yarn管理:https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-docker.html
在客户端模式下,Spark驱动程序不会在docker容器中运行,因为该进程不是由Yarn管理的,它直接在运行spark-submit命令的节点上执行。在集群模式下,驱动程序由Yarn管理,因此在docker容器中执行。

相关问题