mesos起源于Berkeley AMP实验室,目标是构建一个支持集群资源共享的平台,在该平台之上,hadoop、MPI等应用可以共享底下的集群资源。twitter意识到该项目的巨大价值,将该项目的负责人Ben Hindman招致麾下,从而加速了mesos从研究项目到工业化产品的转变,目前mesos在twitter管理数万台的服务器。
mesos是一个灵活的分布式资源调度管理平台,可以看作是数据中心的操作系统(DCOS)。
(1)传统操作系统上运行的是一个个的进程
VS
mesos上运行的是一个个的framework(例如spark、hadoop、marathon等,我们也可以实现自己的framework)
(2)要编写一个进程,传统操作系统提供了各种系统调用、库来支持对底层资源的消费
VS
要编写一个framework,mess提供了各种接口,包括framework在mess中的注册,资源的申请,任务的发起等等。目前支持C、Java、Python等语言。
(3)进程有优先级
VS
framework也有优先级
每个framework包含“scheduler”和“executor”两部分。framework通过运行scheduler来与mess进行交互,本质上scheduler就是一个进程。scheduler启动之后,首先会去连接mess以使用mesos的相关资源,在scheduler运行的过程中,它会向mess请求资源,如果资源满足要求,scheduler会向mess发起运行executor的请求来完成相关任务。