Apache Mesos实际上做了什么?

我试图围绕Apache Mesos来理解,并需要澄清一些项目。

我对 Mesos 的理解是,它是一个可执行文件,安装在集群中的每个物理/VM 服务器(“节点”)上,然后提供一个 Java API(以某种方式),将每个单独的节点视为计算资源(CPU/RAM/等)的集体池。因此,对于针对Java API进行编码的程序,他们只能看到1组资源,并且不必担心代码的部署方式/位置。

因此,首先,我在这里的理解可能根本是错误的(在这种情况下,请纠正我!但是,如果我的目标,那么Java API(由Mesos提供)如何允许Java客户端利用这些资源?!?有人能举出一个动作中Mesos的具体例子吗?


更新

看看下面我那张可怕的图画。如果我正确理解了 Mesos 体系结构,我们有一个由 3 台物理服务器 (和 ) 组成的集群。这些物理中的每一个都在运行一个Ubuntu主机(或其他任何东西)。通过虚拟机管理程序(例如 Xen),我们可以运行 1 个以上的 VM。phys01phys02phys03

我对Docker和CoreOS感兴趣,所以我将在此示例中使用它们,但我猜这同样适用于其他非容器设置。

因此,在每个VM上,我们都有CoreOS。在每个 CoreOS 实例上运行的是一个 Mesos 可执行文件/服务器。集群中的所有 Mesos 节点都将它们下面的所有内容视为单个资源池,并且工件可以任意部署到 Mesos 集群,Mesos 将确定要实际将它们部署到哪个 CoreOS 实例。

在 Mesos 上运行的是一个“Mesos 框架”,如 Marathon 或 Kubernetes。在 Kubernetes 中运行的是各种 Docker 容器 ( - )。C1C4

enter image description here

这种对Mesos的理解或多或少是正确的吗?


答案 1

你的总结几乎是正确的,但它并没有反映mesos所代表的本质。该项目背后的公司mesosphere的愿景是创建一个“数据中心操作系统”,而mesos是它的核心,类似于普通操作系统的内核。API不仅限于Java,您可以使用C,C++,Java / Scala或Python。如果您已经设置了 mesos 集群(如问题中所述)并希望使用资源,则通常通过框架执行此操作,而不是直接在其上运行工作负载。这并不意味着这很复杂,这是Scala中一个非常小的例子,它证明了这一点。框架存在于多个流行的分布式数据处理系统中,如Apache SparkApache Cassandra。还有其他框架,例如数据中心级别的Chronos a cron或Marathon,它允许您运行基于Docker的应用程序。

更新:

是的,mesos 会负责集群中的位置,因为这就是内核的作用 - 调度和管理有限的资源。但是,您绘制的设置提出了几个明显的问题。

Mesos下面的层:在CoreOS上安装mesos是可能的,但我认为这很麻烦。这不是运行 mesos 的典型情况 - 通常它被移动到尽可能低的层(在你的情况下高于 Ubuntu)。所以我希望你有充分的理由运行CoreOS虚拟机管理程序。

层在 mesos 之上:Kubernetes ist 可用作框架,而 mesosphere 似乎在其中投入了大量精力。然而,毫无疑问,在功能方面存在部分重叠 - 特别是在调度方面。如果要根据容器安排基本工作负载,则最好使用 Marathon 或将来的 Aurora。所以在这里,我希望你有充分的理由进行这种安排。旁注:Kubernetes与Marathon类似,方法更广泛,而且相当固执己见。


答案 2

推荐