我有火花应用程序并使用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.
当我直接从remote-ip或Mesos slave运行这个spark应用程序时,它按预期工作,即我可以看到在Mesos master上运行的框架/驱动程序,日志也显示正在运行的Tasks。我希望使用Marathon运行相同的程序,但是当我使用Marathon运行时,应用程序在Mesos-Slaves上启动,任务状态为“FINISHED”,但是spark-app很快死了,说“Executor要求关闭”。我不明白为什么火花应用程序没有运行。有人可以帮助我理解为什么马拉松无法在Mesos上启动spark-app吗?
应用程序的Marathon配置:
{
"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
答案 0 :(得分:1)
我可能会弄错,但我的理解是这里的火花提交任务只能告诉火花执行工作,我从火花中看到的输出或多或少说“火花接受了工作”,然后你的命令按预期退出。 Marathon将继续执行此操作,因为它旨在使长时间运行的应用程序保持活力。你可能想要调查Metronome / DCOS Jobs或Chronos这样的事情(或者直接将火花作业提交给集群,因为这不是马拉松的目的)。