Apache Mesos实际上是做什么的?

42

我试图理解Apache Mesos,需要澄清一些问题。

我对Mesos的理解是,在集群中每个物理/虚拟机服务器(“节点”)上安装可执行文件,然后以某种方式提供Java API,将每个单独的节点视为计算资源(CPU / RAM等)的集体池。因此,对于使用Java API进行编码的程序,它们只看到1组资源,无需担心代码如何/在哪里部署。

因此,首先,我的理解可能基本上是错误的(如果是这种情况,请纠正我!)。但是如果我正确,那么Mesos提供的Java API如何允许Java客户端利用这些资源??有人能举一个Mesos实际应用的具体例子吗?


更新

请看下面我不好的图示。如果我正确理解了Mesos架构,我们有一个由3个物理服务器(phys01phys02phys03)组成的集群。这些物理机器的每一个都在运行Ubuntu主机(或其他操作系统)。通过类似Xen的虚拟化技术,我们可以在其上运行一个或多个虚拟机。

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

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

在Mesos之上运行一个“Mesos框架”,例如Marathon或Kubernetes。在Kubernetes内部运行各种Docker容器(C1 - C4)。

enter image description here

这样对Mesos的理解是不是更正确了?


我认为Mesos节点并不将底层所有资源视为单一池,而是视上层框架为整体。我的理解正确吗? - user104309
1个回答

32
你的总结几乎正确,但没有反映mesos所代表的本质。mesosphere公司背后的愿景是创建一个“数据中心操作系统”,mesos就像普通操作系统的内核一样是其中的内核。 API不仅限于Java,还可以使用C、C++、Java/Scala或Python。如果你已经按照问题中所描述的设置好了mesos集群,并想要使用你的资源,你通常会通过框架来实现,而不是直接在上面运行工作负载。这并不意味着这很复杂。这里有一个非常小的Scala示例(单击此处),可以演示这一点。为多个流行的分布式数据处理系统提供了框架,例如Apache SparkApache Cassandra等。还有其他框架,如Chronos,它是数据中心级别的cron,或者Marathon,它允许你运行基于Docker的应用程序。

更新:

是的,mesos将负责集群中的部署,因为这就是内核所做的——调度和有限资源的管理。但是,你所勾画的设置引发了几个明显的问题。

mesos以下的层次:在CoreOS上安装mesos是可能的,但我认为这很麻烦。这不是运行mesos的典型场景——通常它会被移到最低层(在你的情况下是Ubuntu的上面)。因此,我希望你有充分的理由来运行CoreOS并使用虚拟化。

mesos以上的层次:

Kubernetes作为框架提供,并且Mesosphere似乎在它上面花费了很多心力。然而毫无疑问,它们在功能上部分重叠,特别是在调度方面。如果你想要基于容器进行基本工作负载的调度,也许你最好使用Marathon,或者未来可能会使用Aurora。因此,我希望您有充分的理由做出这个决定。顺带一提,Kubernetes类似于具有更广泛方法论的Marathon。

非常感谢 @vanthome (+1) - 请看看我的更新和绘图。我是否正确理解了要点?如果是这样,我仍然不理解Mesos节点和运行在其上的“框架”(例如Marathon或Kubernetes)之间的区别,有可能您能详细说明一下吗?再次感谢! - smeeb
那么,可以说Mesos在物理服务器上的表现比虚拟服务器更好吗?如果是或不是,为什么? - Charles Prakash Dasari
一般来说,所有分布式资源管理系统都应该在裸机上运行,因为按照经验法则,如果你将虚拟化系统层叠在一起,每一层都会让你的IO性能损失约10%。然而,CPU和内存开销通常是可以忽略不计的。@CharlesPrakashDasari - vanthome
@vanthome 在许多地方,我看到框架(Marathon/Aurora/Kubernetes的Framework组件)执行“调度”,因此它是调度程序。但是你说Mesos执行调度,因为在一个地方它是内核的工作,而在另一个地方框架执行调度。正如你所说,调度似乎在Mesos和FW两个层面上重叠。对我来说,找到资源似乎是调度程序的核心工作,但这项工作由位于框架/调度程序下面的Mesos完成。 - user104309
@vanthome,那么框架(应该是调度器)的工作是什么?在细粒度上,“调度”的各种子工作是什么?Mesos完成了调度的哪一部分,框架完成了调度的哪一部分? - user104309

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接