Apache Mesos 简介

Apache Mesos

  • Apache Mesos是由加州大学伯克利分校的AMPLab首先开发的一款开源群集管理软件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等应用架构。

分布式系统内核

Mesos使用了与Linux内核相似的规则来构造,仅仅是不同抽象层级的差别。Mesos从设备(物理机或虚拟机)抽取 CPU,内存,存储和其他计算资源,让容错和弹性分布式系统更容易使用。Mesos内核运行在每个机器上,在整个数据中心和云环境内向应用程序(Hadoop、Spark、Kafka、Elastic Serarch等等)提供资源管理和资源负载的API接口。

系统特性

  • 可扩展到10000个节点
  • 使用ZooKeeper实现Master和Slave的容错
  • 支持Docker容器
  • 使用Linux容器实现本地任务隔离
  • 基于多资源(内存,CPU、磁盘、端口)调度
  • 提供Java,Python,C++等多种语言 APIs
  • 通过Web界面查看集群状态

架构

从左侧架构图上可知,Mesos包含两个组件:Master Daemon和Slave Daemon,Master Daemon管理所有的Slave Daemon,Slave Daemon运行在各个节点上。 通过资源供给(Resource Offers)Master Daemon实现了跨应用的细粒度资源(CPU、内存、...)共享。每个资源供给(Resource Offers)包含一组资源列表。对照既定组织策略(例如共享属性、优先级),Master Dameon决定提供多少资源给每个应用框架。为了支持不同的策略控制,Master Daemon使用可拔插的模块化的架构方便增加新的策略控制机制。 运行在Mesos上的应用一般由两部分组件组成:调度器(Scheduler)和执行进程(Executor Process)。调度器注册在Master Daemon上用于决策资源供给,执行进运行在Slave节点上用于运行各个应用任务。当Master Daemon决定供给应用多少资源时,由调度器决定把那里的资源提供该应用使用。当应用决定接受被提供的资源时,它会告诉Mesos需要运行的任务都是什么,Mesos在对应的Slave节点上加载这些任务。