我在用 spark-submit
在“cluster”模式下,使用python脚本对运行在mesos上的spark集群执行,并在 spark.mesos.executor.docker.image
.
我的脚本文件已经烘焙到docker图像中(比如在path中) /app/script.py
),所以我不想在执行之前使用spark submit的特性通过http下载脚本。
每https://spark.apache.org/docs/latest/submitting-applications.html#advanced-依赖关系管理通过将应用程序脚本指定为 local:
url,例如。 spark-submit [...options...] local:/app/script.py
. 但是这没有起作用,我在mesos(spark-driver任务的stderr,由spark-dispatcher框架调度)上看到了如下错误:
I0727 20:31:50.164263 9207 fetcher.cpp:533] Fetcher Info: {"cache_directory":"\/tmp\/mesos\/fetch\/root","items":[{"action":"BYPASS_CACHE","uri":{"cache":false,"extract":true,"value":"\/app\/script.py"}}],"sandbox_directory":"\/data\/mesos\/slaves\/GUID\/frameworks\/GUID\/executors\/driver-TIMESTAMP\/runs\/GUID","user":"root"}
I0727 20:31:50.170289 9207 fetcher.cpp:444] Fetching URI '/app/script.py'
I0727 20:31:50.170361 9207 fetcher.cpp:285] Fetching directly into the sandbox directory
I0727 20:31:50.170413 9207 fetcher.cpp:222] Fetching URI '/app/script.py'
cp: cannot stat ‘/app/script.py’: No such file or directory
E0727 20:31:50.174051 9207 fetcher.cpp:579] EXIT with status 1: Failed to fetch '/app/script.py': Failed to copy '/app/script.py': exited with status 1
s 1
浏览之后https://spark.apache.org/docs/latest/running-on-mesos.html,我猜是 local:
路径由“mesosclusterdispatcher”解释,它是一个后台进程,为spark驱动程序进程(使用我的自定义spark executor docker映像)旋转一个容器。由于此调度器本身不在自定义docker映像/容器中运行,因此它找不到该文件。
有没有其他方法告诉spark submit不要下载应用程序脚本,只使用docker映像中已经存在的脚本?
暂无答案!
目前还没有任何答案,快来回答吧!