5

我看到 Mesosphere 在 Mesos 框架上构建各种应用程序,如 Hadoop、Kubernetes 等,但既然有用于长时间运行服务的 Marathon 应用程序,为什么不直接使用它呢?例如,为什么不在一堆 Marathon 服务上设置 Kubernetes 节点?为什么直接在 Framework API 上实现 Kubernetes?因为调度更有效?同样的问题也适用于 Jenkins 的实现,为什么不在 Marathon 上运行 Jenkins 主/从...

4

1 回答 1

5

Apache Mesos是一个2 级调度程序。框架的目的是提供高级调度的智能。 Marathon提供了在集群中调度任务、将该任务排队以进行调度以及将失败的任务重新排队的能力。它非常适合保持长时间运行的进程。它就像init数据中心一样。因此,它通常用于确保其他框架启动并运行,例如Kubernetes-MesosJenkins

有许多应用程序的这种调度级别是不够的。Marathon 可以并且经常用于运行Apache Kafka之类的东西,但是这在许多故障模式中通常都不够用。此外,Marathon 并不关心任务是否在同一个节点上运行多次,但是在同一个从属节点上运行多个 Kafka 节点是一个坏主意。使用 Hadoop 作为另一个示例(因为您提到了它),HDFS 有几种类型的节点需要管理;NameNode、DataNode 和 JournalNode。Marathon 不知道启动它们的顺序,或者它们是否可以位于同一节点上。它不知道如何扩展此应用程序。HDFS 框架管理这种智能。

至于调度效率,我不确定这是目标。Apache Mesos 是一个 2 级调度程序是有原因的。它是一个高效的 2 级调度程序。2 级调度的价值是将我上面描述的关注点类型抽象到更高级别的调度程序(Mesos 将其称为框架)。Marathon 仍然是安排和确保其他框架的高可用性的好方法。

于 2015-03-18T16:00:43.917 回答