控制在Mesos上运行的Spark驱动程序的数量

问题描述 投票:0回答:1

[我们有一个在AWS中有6个EC2节点的群集(16 cpu,每个节点64 gb-1个节点运行mesos主节点,5个节点运行mesos从节点)。 mesos调度程序正在主节点上运行。我们仅使用此集群来运行火花作业。我们的火花配置为每个执行器5 cpu和10 gb(与驱动程序相同)。我

在我们预定的一项工作中,我们有一个场景,我们需要同时进行几百次火花提交。发生这种情况时,调度程序将启动所有这些Spark提交的驱动程序,而不会为群集中的任何执行程序留出空间。

我正在寻找一些选择。我想从spark / mesos社区的成员那里获得一些指导。

我不想进入的一些选项是:增加群集大小,要求分析师更改其工作结构,以将所有spark-submit合并为一个,然后切换到YARN / EMR(实际上,我尝试了此操作,陷入一些混乱的队列问题)

选项1:使用Mesos角色

我找到了一些有关使用配额和角色来解决此问题的文档。但是我不确定以下内容:

  • 如何创建Mesos角色并更新资源以供这个角色?

  • 如何为火花驱动程序和火花执行程序设置单独的角色?

默认情况下,所有资源均处于*角色。我可以在执行spark-submit时设置一个名为spark.mesos.role的标志,但不确定如何创建此角色并确保该角色仅用于执行者?

选项2:修改mesos群集调度程序

当mesos调度程序发生spark-submit时,它将驱动程序请求添加到WaitingQueue。如果驱动程序在执行期间失败,并且如果可以使用监督模式,则会将它们发送到具有自定义重试计划设置的PendingRetryQueue。当mesos可用资源时,首先调度PendingRetryQueue的这些驱动程序,然后调度下一个的WaitingQueue。 ,我会将这些驱动程序添加到PendingRetryQueue中,并安排它们在以后运行。目前,据我了解,当WaitingQueue mesos其余服务器中有200个以上的驱动程序发送失败消息时,不会将其添加到PendingRetryQueue中。

任何实现这两个选项的帮助都会对我有很大帮助。提前致谢。

apache-spark scheduler mesos marathon dcos
1个回答
-1
投票

选项1是好的。

首先通过创建类似dispatcher-quota.json的文件来设置调度程序配额

cat dispatcher-quota.json
{
 "role": "dispatcher",
 "guarantee": [
   {
     "name": "cpus",
     "type": "SCALAR",
     "scalar": { "value": 5.0 }
   },
   {
     "name": "mem",
     "type": "SCALAR",
     "scalar": { "value": 5120.0 }
   }
 ]
}

然后使用]将其推送到您是mesos大师(组长)>

curl -d @dispatcher-quota.json -X POST http://<master>:5050/quota

所以现在您将有一个驱动程序配额

如果需要,请确保调度程序正在使用正确的服务角色集运行。如果在DC / OS中使用

$ cat options.json
{
    "service": {
        "role": "dispatcher"
    }
}
$ dcos package install spark --options=options.json

否则,请随时分享您如何部署调度程序。我将为您提供指导。

司机可以。现在让我们以相同的方式与执行者一起工作]

$ cat executor-quota.json
{
  "role": "executor",
  "guarantee": [
    {
      "name": "cpus",
      "type": "SCALAR",
      "scalar": { "value": 100.0 }
    },
    {
      "name": "mem",
      "type": "SCALAR",
      "scalar": { "value": 409600.0 }
    }
  ]
}
$ curl -d @executor-quota.json -X POST http://<master>:5050/quota 

根据您的要求调整值

然后通过提供以确保以正确的角色启动执行程序>

--conf spark.mesos.role=executor \

我的解释来源来自https://github.com/mesosphere/spark-build/blob/master/docs/job-scheduling.md,如果不够,请不要犹豫。

这应该完成工作

© www.soinside.com 2019 - 2024. All rights reserved.