我正在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依赖项。有人能帮助解释为什么会发生这种情况吗?这是正常的吗?
1条答案
按热度按时间dluptydi1#
码头集装箱由EMR上的Yarn管理:https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-docker.html
在客户端模式下,Spark驱动程序不会在docker容器中运行,因为该进程不是由Yarn管理的,它直接在运行
spark-submit
命令的节点上执行。在集群模式下,驱动程序由Yarn管理,因此在docker容器中执行。