当前位置: 首页 > 科技观察

ApacheMesos的整体架构

时间:2023-03-19 14:42:48 科技观察

1.前言与大多数其他分布式系统一样,ApacheMesos采用主/从结构以简化设计。为了解决master的单点故障,将master做的尽可能的轻量级,以上所有的元数据都可以通过对每个slave重新注册来重构,所以通过zookeeper很容易解决单点故障问题。(什么是apachemesos?参考:《统一资源管理与调度平台(系统)介绍》,本文分析基于MesosSVNRevision1327410)二、Apachemesos中基本术语解释(一)Mesos-master:Mesosmaster主要负责管理各个framework和slave,并将资源分配给各个framework(2)Mesos-slave:Mesosslave,负责管理本节点上的各个mesos-task,如:为各个executor分配资源(3)Framework:计算框架,如:Hadoop、Spark等,通过MesosSchedulerDiver访问Mesos(4)Executor:执行器,安装在mesos-slave上,用于启动计算框架中的任务。当用户尝试向Mesos添加新的计算框架时,他们需要实现一个框架调度器和执行器来访问Mesos。3.总体架构ApacheMesos由四个组件组成,分别是Mesos-master、mesos-slave、framework和executor。Mesos-master是整个系统的核心,负责管理与mesos相连的各个framework(由frameworks_manager管理)和slave(由slaves_manager管理),并将slave上的资源分配给framework(由独立的插件模块管理)Allocator)按照一定的策略管理)。Mesos-slave负责接收和执行来自mesos-master的命令,管理节点上的mesos-tasks,并为每个任务分配资源。mesos-slave将自己的资源发送给mesos-master,由mesos-master中的Allocator模块决定将资源分配给哪个framework。当前,考虑的资源是CPU和内存。也就是说,mesos-slave会将CPU数量和内存数量发送给mesos-master,而用户在提交作业时,需要指定每个任务需要的CPU数量和内存数量,这样当任务运行时,mesos-slave会把任务放在linux容器中的Run中,达到资源隔离的效果。很明显,master存在单点故障问题。为此mesos使用了zookeeper来解决这个问题。Framework是指外部的计算框架,比如Hadoop、Mesos等,这些计算框架可以通过注册的方式连接到mesos上,让mesos进行统一的管理和资源分配。Mesos要求可访问的框架必须有一个scheduler模块,负责框架内的任务调度。当一个框架要访问mesos时,需要修改自己的scheduler向mesos注册,获取mesos分配的资源,这样自己的scheduler才能将这些资源分配给framework中的task,也就是整个mesos系统采用两层调度框架:第一层,mesos为框架分配资源;第二层,框架自己的调度器为自己内部的任务分配资源。目前Mesos支持三种语言编写的调度器,即C++、java和python。为了给各种调度器提供统一的访问方式,Mesos内部使用C++实现了一个MesosSchedulerDriver(调度器驱动),框架调度器驱动中的接口可以调用与Mesos-master进行交互,完成一系列功能(如注册、资源分配等)。Executor主要用于启动框架内部的任务。因为不同的框架有不同的启动任务的接口或方法,当有新的框架需要接入mesos时,需要写一个executor告诉mesos如何启动框架中的任务。为了给各种框架提供统一的executor编写方式,Mesos内部使用C++实现了一个MesosExecutorDiver(executordriver)。框架可以通过驱动程序的相关接口告诉mesos如何启动任务。4.安装(1)MesosIncubator:http://www.mesosproject.org/index.html(2)MesosIncubator:https://svn.apache.org/repos/asf/incubator/mesos/trunk/(3)Mesos:数据中心细粒度资源共享平台。B.Hindman、A.Konwinski、M.Zaharia、A.Ghodsi、A.D.Joseph、R.Katz、S.Shenker和I.Stoica。

最新推荐
猜你喜欢