我看到Mesosphere在Mesos框架上构建各种应用程序,如Hadoop,Kubernetes等,但由于Marathon应用程序用于长期运行的服务,为什么不直接使用呢?例如。为什么不在一堆Marathon服务上设置Kubernetes节点?为什么直接在Framework API上实现Kubernetes?因为调度更有效率吗?同样的问题适用于Jenkins实现,为什么不只是在Marathon上运行Jenkins主/从...
答案 0 :(得分:5)
Apache Mesos是2-level scheduler。框架的目的是提供高级调度的智能。 Marathon提供了在群集中计划任务的能力,将该任务排队以便对已失败的任务进行调度和重新排队。它非常适合保持长时间运行的进程。它就像数据中心的init
。因此,它通常用于确保其他框架已启动并运行,例如Kubernetes-Mesos或Jenkins。
有许多应用程序,这种级别的调度不足。 Marathon可以并且经常用于运行诸如 Apache Kafka之类的东西,但是在许多故障模式中这通常都是不足的。此外,Marathon不关心任务是否在同一节点上多次运行,但是在同一个从站上运行多个Kafka节点是个坏主意。使用Hadoop作为另一个例子(因为你提到它),HDFS有几种类型的节点需要管理; NameNode,DataNode和JournalNode。 Marathon不知道启动这些命令的顺序,或者它们是否可以共存于同一节点上。它不知道如何扩展此应用程序。 HDFS框架管理这种情报。
就调度效率而言,我不确定这是否是目标。出于某种原因,Apache Mesos是一个2级调度程序。它是一个高效的2级调度程序。 2级调度的价值是将我上面描述的关注类型抽象到更高级别的调度程序(由Mesos称为框架)。 Marathon仍然是安排和确保其他框架高可用性的好方法。