Apache Mesos实际上做了什么?

sme*_*eeb 38 java virtualization cluster-computing iaas mesos

我试图围绕Apache Mesos,并需要澄清一些项目.

Mesos的理解是它是一个可执行文件,安装在集群中的每个物理/ VM服务器(" 节点 ")上,然后提供一个Java API(不知何故)将每个单独的节点视为一个集合的计算资源池( CPU/RAM /等).因此,对于使用Java API编码的程序,它们只能看到一组资源,而不必担心代码的部署方式/位置.

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


更新

看看下面我可怕的图画.如果我正确理解Mesos架构,我们就拥有一个由3个物理服务器组成的集群(phys01,phys02phys03).这些物理中的每一个都在运行Ubuntu主机(或其他).通过虚拟机管理程序,比如Xen,我们可以运行1+个虚拟机.

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

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

运行在Mesos之上的是一个"Mesos框架",如Marathon或Kubernetes.在Kubernetes中运行的是各种Docker容器(C1- C4).

在此输入图像描述

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

van*_*ome 31

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

更新:

是的,mesos将关注集群中的位置,因为这就是内核的作用 - 调度和管理有限的资源.但是,您绘制的设置引发了几个明显的问题.

Mesos下面的层:在CoreOS上 安装mesos是可能的,但我认为很麻烦.这不是运行mesos的典型场景 - 通常它被移动到可能的最低层(在你的情况下在Ubuntu之上).所以我希望你有充分的理由来运行CoreOS hypervisor.

以上层数:Kubernetes可用作框架,中间层似乎在其中投入了大量精力.然而,毫无疑问,在功能方面存在部分重叠 - 特别是在调度方面.如果您想基于容器安排基本工作负载,那么您可能最好使用Marathon或将来使用Aurora.所以我也希望你有充分的理由来做这个安排.旁注:Kubernetes类似于Marathon,具有更广泛的方法和相当自以为是.