Mesos是诞生于UC Berkeley的一个研究项目,它的设计动机是解决编程模型和计算框架在多样化环境下,不同框架间的资源隔离和共享问题。尽管它的直接设计动机与YARN稍有不同,但它的架构和实现策略与YARN类似。当前部分公司在使用Mesos管理集群资源,比如国外的Twitter、国内的豆瓣等。
Apache Mesos由以下四个组件组成:
1、Mesos MasterMesos
Master是整个系统的核心,负责管理整个系统中的资源和接入的各种框架(Framework),并将Mesos Slave上的资源按照某种策略分配给框架。为了防止Mesos Master出现故障后导致集群不可用,Mesos允许用户配置多个Mesos Master,并通过ZooKeeper进行管理,当主Mesos Master出现故障后,ZooKeeper可马上从备用Master中选择一个提升为新的主Mesos Master。
2、Mesos SlaveMesos
Slave负责接收并执行来自Mesos Master的命令,并定时将任务执行状态汇报给Mesos Master。Mesos Slave将节点上的资源使用情况发送给Mesos Master,由Mesos Master中的Allocator模块决定将资源分配给哪个Framework,需要注意的是,当前Mesos仅考虑了CPU和内存两种资源。为了避免任务之间相互干扰,同YARN一样,Mesos Slave采用了轻量级资源隔离机制Cgroups。
3、Framework Scheduler
Framework是指外部的框架,如MPI、MapReduce、Spark等,这些框架可通过注册的方式接入Mesos,以便Mesos进行统一管理和资源分配。Mesos要求接入的框架必须有一个调度器模块Framework Scheduler,该调度器负责框架内部的任务调度。一个Framework在Mesos上工作流程为:首先通过自己的调度器向Mesos注册,并获取Mesos分配给自己的资源,然后再由自己的调度器将这些资源分配给框架中的任务。也就是说,同YARN一样,Mesos系统采用了双层调度框架:第一层,由Mesos将资源分配给框架;第二层,框架自己的调度器将资源分配给内部的各个任务。当前Mesos支持三种语言编写的调度器,分别是C++、Java和Python,为了向各种调度器提供统一的接入方式,Mesos内部采用C++实现了一个MesosSchedulerDriver(调度器驱动器), Framework的调度器可调用该Driver中的接口与Mesos Master交互,完成一系列功能(如注册、资源分配等)。
4、Framework Executor
Framework Executor主要用于启动框架内部的任务。由于不同的框架,启动任务的接口或者方式不同,当一个新的框架要接入Mesos时,通常需要指定专有的Executor,以告诉Mesos如何启动该框架中的任务。为了给各种框架提供统一的执行器编写方式,Mesos内部采用C++实现了一个MesosExecutorDiver(执行器驱动器), Framework可通过该驱动器的相关接口告诉Mesos启动任务的方法。
标签:Mesos,框架,调度,Framework,Master,Apache,资源管理,资源分配 From: https://blog.51cto.com/key3feng/6094370