Apache Mesos实际上做了什么?

时间:2015-01-22 16:43:57

标签: java cluster-computing virtualization mesos iaas

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

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

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


更新

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

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

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

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

enter image description here

对Mesos的理解是否正确?

1 个答案:

答案 0 :(得分:30)

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

<强>更新

是的,mesos将关注集群中的位置,因为这就是内核的作用 - 调度和管理有限的资源。然而,你勾勒出的设置提出了几个明显的问题。

以下图层: Installing mesos on CoreOS是可能的,但我认为很麻烦。这不是运行mesos的典型场景 - 通常它被移动到可能的最低层(在你的情况下在Ubuntu之上)。所以我希望你有充分的理由来运行CoreOS 一个虚拟机管理程序。

以上图层: Kubernetes可用作框架,中间层似乎付出了很多努力。然而,毫无疑问,在功能方面存在部分重叠 - 特别是在调度方面。如果您想基于容器安排基本工作负载,那么Marathon或将来Aurora可能会更好。所以我也希望你有充分的理由来做这个安排。 旁注:Kubernetes与Marathon类似,采用更广泛的方法,并且非常自以为是。