一、什么是Mesos
Mesos是Apache下的开源分布式资源管理框架,它被称为是分布式系统的内核。
二、出现背景
随着互联网的发展,各种大数据计算框架不断出现,支持离线处理的MapReduce、在线处理的Storm,迭代计算框架Spark、及流式处理框架S4……各种分布式计算框架应运而生,各自解决某一类应用中的问题。而在互联网公司中,几种不同的框架都可能会被采用。考虑到资源的利用率、运维成本、数据共享等因素,我们往往会把不同的计算框架部署到一个公共的集群中,使其共享集群资源,而不同任务往往需要的资源(CPU、内存、网络I/O等)不同,它们运行在同一个集群中不免会相互干扰、资源竞争导致效率低下,因此就诞生了资源统一管理与调度平台,两个典型代表---Mesos和Yarn。
三、框架
- 总体框架
同其他分布式系统一样,Apache Mesos也采用了Master/Slave结构,为解决Master单点故障,将Master做的尽可能轻量级,Master上所有元数据可以通过各个Slave重新注册进行重构,并通过Zookeeper进行维护管理实现Master的高可用性。其总体架构图如下所示:
2、四大组成部分
(1)Mesos Master:整个系统的核心。主要负责管理各个Framework和Slave,并将Slave上的资源按照某资源分配策略分配给各个Framework;
(2)Mesos Slave:接收来自Mesos Master的命令、管理本地节点上的各个Mesos Task,如为每个Executor分配资源。Mesos Slave将自己的资源量(包括CPU和内存)发送经Mesos Master,由Mesos Master的Allocator模块决定资源的具体分配;
(3)Framework:负责外部的计算框架的接入,如Hadoop、Spark等。这些外部计算框架通过注册的方式接入Mesos,由Mesos进行分布式集群资源的分配;而任务的调度和执行由计算机框架本身完成;
(4)Executor:启动框架内部的Task。由于不同的框架接入Mesos的接口、方式不同,所以新框架接入Mesos需要编写自己的executor,通知Mesos如何启动框架中的Task。
四、特点
1、高效率
Mesos对分布式集群的资源可以做到细粒度的资源分配。细粒度的资源分配指按照任务实际需求进行分配资源,大大提高了资源的使用利用率。如图下:
2、可扩展 Mesos的设计采用两级调度架构,使用Framework代理任务的实际调度,Mesos Master则以非常轻量级的代码实现,更易于扩展集群发展的规模
3、模块化 每接入新的Framework,Master无需为此编码,Slave模块可以复用,使得在Mesos所支持的宽泛领域中,业务迅速增长
五、与yarn的区别
- Mesos和Yarn都采用双层调度机制,即资源管理系统层(将资源分配给应用程序)和资源调度层(将资源具体分配给计算框架中的任务),但资源分配程度不同。Mesos只负责为Framework计算框架提供资源,具体的资源分配由计算框架自己实现。而Yarn则从计算框架中分离出资源管理,自己全权负责资源分配及调度;
- Mesos是分布式资源管理框架,更为通用。而Yarn则是Hadoop1.0到Hadoop2.0升级优化分离出来进行统一资源管理系统,具有一定局限性;
- Mesos统一管理集群CPU、内存、硬盘等资源。而Yarn是基于HDFS分布式文件系统的基础上统一管理集群CPU和内存资源;
- Mesos采用Linux Container容器对多计算框架共享资源进行隔离。而Yarn则是通过进程隔离,这一点Yarn的性能比较好;
- 部署Mesos以后,再跑Spark或Hadoop MapReduce的时候,就不需要部署Spark和Hadoop了,直接在Mesos上运行Spark或Hadoop任务;