Mesos 上的 Spark 框架

Spark framework on Mesos

关于 Mesos-spark 我有几个问题:

  1. 当我在 Mesos 上提交具有不同 spark 上下文的 spark 作业时,它会调用不同的 mesos-spark 框架实例还是使用相同的实例。
  2. 如何确保每次创建不同的spark框架。
  3. 我可以为特定的 spark 上下文或框架实例指定 reserve/pre-allocate mesos-slave 的约束吗?我明白这有点违背了 Mesos 的目的,Mesos 可以在粗粒度模式下保证内存和 CPU。但出于某种原因,我不想共享 运行 跨不同 spark 作业(针对不同用户)的任务(从属)的物理机器

1/2,每个Spark Context都会启动一个单独的Mesos框架,你应该可以通过导航到Mesos来确认这一点UI并看到所有创建的框架,这应该是一一对应的到您创建的 Spark 上下文。

  1. 您可以为一组 Spark 任务预留资源,方法是在每个从属设备上预留您的一部分资源,并用特定角色标记它们。

例如,如果您想在从站上为 运行 一组特定任务保留 4GB 内存和 2 个内核,则可以在启动从站时指定 --resources="cpus(spark1):2,mem(spark1):4098,cpus():2,mem():4098"。这给 spark1 角色 4gb 的 ram 和 2 cpus,而所有其他框架 2 cpu 和 4gb ram。将自己注册为 spark1 角色的框架将收到保留的资源以及任何可用的通配符 (*) 资源供其使用。

在 Spark 框架方面,我有一个支持注册特定角色的开放 PR (https://github.com/apache/spark/pull/4960),希望尽快合并。因此,如果您想使用此功能,您现在需要应用此拉取请求并自行构建 Spark。