我有spark应用程序,用spark submit运行它,比如:
/opt/spark/bin/spark-submit \
--master mesos://dispatcher_ip:7077 \
--driver-memory xG \
--executor-memory xG \
--total-executor-cores x \
--deploy-mode cluster \
-- and jar files.
当我从远程ip或直接在mesos从属服务器上运行这个spark应用程序时,它可以正常工作,即我可以看到框架/驱动程序在mesos主服务器上运行,并且日志还显示任务正在运行。我想用marathon运行相同的程序,但是当我用marathon运行时,应用程序在mesos从属程序上启动,任务状态为“finished”,但是spark应用程序很快就死了,说“executor asked to shutdown”。我不明白为什么spark应用程序没有运行。有人能帮我理解为什么马拉松不能在mesos上启动spark应用程序吗?
应用程序配置:
{
"id": "/zzzzzzzzz333",
"cmd": "sh path_to/spark_app.sh",
"cpus": 2,
"mem": 2048,
"disk": 0,
"instances": 1,
"constraints": [
[
"hostname",
"CLUSTER",
"mesos_slave_ip"
]
],
"portDefinitions": [
{
"port": 10000,
"protocol": "tcp",
"labels": {}
}
]
}
从marathon部署应用程序并检查mesos上的任务状态时:任务状态为“已完成”,输出为:
{
"action" : "CreateSubmissionResponse",
"serverSparkVersion" : "1.6.1",
"submissionId" : "driver-20160917213046-0142",
"success" : true
}
驱动程序应用程序的mesos框架输出:
I0917 22:20:10.152683 13370 exec.cpp:143] Version: 0.28.2
I0917 22:20:10.162206 13378 exec.cpp:390] Executor asked to shutdown
1条答案
按热度按时间b91juud31#
我可能弄错了,但我的理解是,这里的spark submit任务只通知spark执行作业,我在这里看到的spark输出或多或少地表示“spark接受了作业”,然后您的命令按预期退出。marathon将持续执行此操作,因为它旨在使长时间运行的应用程序保持活力。您可能需要调查metronome/dcos作业或chronos之类的内容(或者直接将spark作业提交到集群,因为这并不是marathon想要做的事情)。