使用Marathon

时间:2016-09-17 22:30:26

标签: apache-spark mesos marathon

我有火花应用程序并使用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

1 个答案:

答案 0 :(得分:1)

我可能会弄错,但我的理解是这里的火花提交任务只能告诉火花执行工作,我从火花中看到的输出或多或少说“火花接受了工作”,然后你的命令按预期退出。 Marathon将继续执行此操作,因为它旨在使长时间运行的应用程序保持活力。你可能想要调查Metronome / DCOS Jobs或Chronos这样的事情(或者直接将火花作业提交给集群,因为这不是马拉松的目的)。