mesos解读

转载 2016年06月01日 18:24:06

转载

其中绿色部分为本人批注

1. 前言

同其他大部分分布式系统一样,Apache Mesos为了简化设计,也是采用了master/slave结构,为了解决master单点故障,将master做得尽可能地轻量级,其上面所有的元数据可以通过各个slave重新注册而进行重构,故很容易通过zookeeper解决该单点故障问题。

什么是apache mesos?参考:《统一资源管理与调度平台(系统)介绍》,本文分析基于Mesos SVN Revision 1327410

2. Apache mesos中的基本术语解释

(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中时,需要实现一个Framework scheduler和executor以接入Mesos。

3. 总体架构

Apache Mesos由四个组件组成,分别是Mesos-master,mesos-slave,framework和executor。

Mesos-master是整个系统的核心,负责管理接入mesos的各个framework(由frameworks_manager管理)和slave(由slaves_manager管理),并将slave上的资源按照某种策略(dominat resouce fairness,个人理解为一种趋向平均,阻碍欺骗的算法)分配给framework(由独立插拔模块Allocator管理)。

Mesos-slave负责接收并执行来自mesos-master的命令、管理节点上的mesos-task,并为各个task分配资源。mesos-slave将自己的资源量发送给mesos-master,由mesos-master中的Allocator模块决定将资源分配给哪个framework,当前考虑的资源有CPU和内存两种,也就是说,mesos-slave会将CPU个数和内存量发送给mesos-master,而用户提交作业时,需要指定每个任务需要的CPU个数和内存量,这样,当任务运行时,mesos-slave会将任务放到包含固定资源的linux container中运行,以达到资源隔离的效果。很明显,master存在单点故障问题,为此,mesos采用了zookeeper解决该问题。(根据原文献的含义,此处的逻辑为双层调度。首先slave通过master向framework通知,我这边有多少资源可以用,然后framework所对应的任务会通过master告诉slave 我这边需要你多少的资源来跑的任务。如果资源不足的话就用DRF来调度分配)

Framework是指外部的计算框架,如Hadoop,Mesos等,这些计算框架可通过注册的方式接入mesos,以便mesos进行统一管理和资源分配。Mesos要求可接入的框架必须有一个调度器模块,该调度器负责框架内部的任务调度。当一个framework想要接入mesos时,需要修改自己的调度器,以便向mesos注册,并获取mesos分配给自己的资源, 这样再由自己的调度器将这些资源分配给框架中的任务,也就是说,整个mesos系统采用了双层调度框架:第一层,由mesos将资源分配给框架;第二层,框架自己的调度器将资源分配给自己内部的任务。当前Mesos支持三种语言编写的调度器,分别是C++,java和python,为了向各种调度器提供统一的接入方式,Mesos内部采用C++实现了一个MesosSchedulerDriver(调度器驱动器),framework的调度器可调用该driver中的接口与Mesos-master交互,完成一系列功能(如注册,资源分配等)。

Executor主要用于启动框架内部的task。由于不同的框架,启动task的接口或者方式不同,当一个新的框架要接入mesos时,需要编写一个executor,告诉mesos如何启动该框架中的task。为了向各种框架提供统一的执行器编写方式,Mesos内部采用C++实现了一个MesosExecutorDiver(执行器驱动器),framework可通过该驱动器的相关接口告诉mesos启动task的方法。

此外master 和slave 之间通过libprocess 进行沟通,比如master宕机后,如何给新master传递恢复信息等

4. 参考资料

(1)Mesos主页:http://www.mesosproject.org/index.html

(2)Mesos代码:https://svn.apache.org/repos/asf/incubator/mesos/trunk/

(3)Mesos: A Platform for Fine-Grained Resource Sharing in the Data Center. B. Hindman, A. Konwinski, M. Zaharia, A. Ghodsi, A.D. Joseph, R. Katz, S. Shenker and I. Stoica, NSDI 2011, March 2011.

原创文章,转载请注明: 转载自董的博客

本文链接地址: http://dongxicheng.org/apache-mesos/meso-architecture/

作者:Dong,作者介绍:http://dongxicheng.org/about/

Mesos资料收集(持续更新)

Mesos资料收集,持续更新中

Mesos入门介绍

2016年会火的技术之一, Mesos。 花了一些时间, 将Mesos相关的知识整理了一下, 以做备忘。 水平有限, 如有疏漏或谬误之处, 还望指出。  Mesos是什么 Mesos是...

Mesos实战总结

我们使用Mesos也有一段时间了,目前有两个项目使用Mesos作为底层资源管理系统,各自部了一套集群。这中间对比Mesos的论文和源码实现,到底哪些功能实现了,哪些功能未实现,版本是否稳定,使用是否顺...

mesos概述

Mesos概述
  • lsshlsw
  • lsshlsw
  • 2015年07月27日 16:28
  • 4796

Mesos 常用 Framework整理总结(读书笔记)

由于Mesos的两层调度架构,使得它更像一个DCOS的内核。它本身只负责 物理资源的管理、调度等。而对于上层应用只提供了任务层面的抽象。而对于任务的具体调度执行等,都需要Framework来自行实现。...

Mesos Framework开发指南 一

转自:http://www.hitdcos.com/read.php?tid=14&fpage=4 Framework Development Guide 简介:描述了如何基于Mesos构建应...

Zookeeper介绍

什么是ZOOKEEPER? 如果我们把HADOOP系列看成动物园的话 Zookeeper的功能就和它的名字一样了。...

Mesos+Marathon的JAVA API案例

package example; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStr...

Mesos 配置解读

Mesos 配置(丰富中。。。)转自 http://blog.csdn.net/yeasy/article/details/46683297 .。 基本项 –ip 监听的IP地址 –port 监...

深入浅出Mesos.docx

  • 2017年11月24日 09:22
  • 1.04MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:mesos解读
举报原因:
原因补充:

(最多只允许输入30个字)