一:背景介绍
在当前hadoop的整个体系架构中,mesos和yarn是两个比较流行的资源管理组件。在MR1之前,hadoop核心代码包里没有资源管理组件,主要是依赖mesos进行资源的管理。等到MR2之后,hadoop自身发布了新一代资源管理组件 yarn。由于先天优势,从目前业界的使用情况来看,yarn越来越被经常使用。然而,mesos就被取代了吗?从目前来看,yarn在资源调度时延以及稳定性方面都不如mesos。下面我们先了解二者的处理流程,然后再综合比较下。
二:mesos
2.1 Mesos诞生于UC Berkeley的一个研究项目,现已成为Apache Incubator中的项目,当前有一些公司使用Mesos管理集群资源,比如Twitter。Apache Mesos为了简化设计,也是采用了master/slave结构,通过zookeeper解决该单点故障问题将master做得尽可能地轻量级,其上面所有的元数据可以通过各个slave重新注册而进行重构.
下面我们介绍几个名词
(1) Mesos-master:Mesos master,主要负责管理各个framework和slave,并将slave上的资源分配给各个framework
(2) Mesos-slave:Mesos slave,负责管理本节点上的各个mesos-task,比如:为各个executor分配资源
(3) Framework:计算框架,如:Hadoop,Spark等,通过MesosSchedulerDiver接入Mesos
(4) Executor:执行器,安装到mesos-slave上,用于启动计算框架中的task。
mesos总体架构
总体上看,Mesos是一个master/slave结构,其中,master是非常轻量级的,仅保存了framework(各种计算框架称为framework)和mesos slave的一些状态,而这些状态很容易通过framework和slave重新注册而重构,因而很容易使用了zookeeper解决mesos master的单点故障问题。
Mesos master实际上是一个全局资源调度器,采用某种策略将某个slave上的空闲资源分配给某一个framework,各种framework通过自己的调度器向Mesos master注册,以接入到Mesos中;而Mesos slave主要功能是汇报任务的状态和启动各个framework的executor(比如Hadoop的excutor就是TaskTracker)。
整个mesos系统采用了双层调度框架:第一层,由mesos将资源分配给框架;第二层,框架自己的调度器将资源分配给自己内部的任务。
在Mesos中,各种计算框架是完全融入Mesos中的,也就是说,如果你想在Mesos中添加一个新的计算框架,首先需要在Mesos中部署一套该框架; Mesos采用linux container对内存和cpu进行隔离。
2.2 Framework 注册时资源分配过程
1. framework add
2. framework actived
3. Slave注册上来,只是分配当前的Slave
4. revive offers
5. allocation_interval 周期之后,定周期执行
流程图如下
2.3Mesos executor注册流程
Mesos executor注册流程稍微复杂些,我打算分两个流程来讲解:
首先:从dirver task启动到slave task运行,这一阶段是为了后续注册做准备
其次:从run task消息分发到executor注册
下图为dirver task启动到slave task运行流程图
run task消息分发到executor注册流程图如下
slave run task以后,根据当前状态要进行判断,
如果,当前executor已经启动,则发送runtask消息,executor执行task
否则,开始executor注册里流程
当前没有executor起送,需要executor注册流程如下
当前有executor已经启动,就比较简单了,直接发送runtask message让task去执行
2.4Framework本身的注册
之前和大家一起梳理了Framework的资源分配流程,接下来,把Framework本身的注册流程和大家一起过一下。
Framework本身的注册是一个比较复杂的流程,准备分为以下几个步骤
1. Framework scheduler到master detected过程
2. Master到resourceoff message消息发送
3.Mesos schedulerdriver到executor的任务启动 Framework scheduler到master detected过程流程图如下
Master到resourceoff message消息发送流程如下
Mesos scheduler driver到executor的任务启动流程如下
以上framework自身的注册就完成了
2.5mesos作业更新上报
Master/slave架构最重要的一点就是消息上报,底层的处理结果要及时通知给上层,才能保证流程执行的正确性。
Mesos上报的主要流程如下
Frameworkexecutor -> executorprocess -> slave -> master ->frameworkscheduler
详细流程如下:
以上mesos的主要处理流程就梳理完了,下面准备另起一篇,描述yarn的调度机制,最后把二者的区别做个总结