之前几个月将Mesos的源代码大致上读了一遍感觉收获还是挺多,但是偷懒了一直没有总结,最近有人问起的时候,发现自己已经忘的差不多了,决定还是从头到尾仔仔细细的总结一下,也是对于之前工作的一个交代。
1、什么是Mesos?
社区中对其的定义如下:首先它是一个集群管理工具(what),这个工具能做什么呢?它为分布式的应用或者计算框架提供资源的隔离和共享,简单点说:它可以让Hadoop、MPI、Spark等多种分布式的计算框架运行在同一个动态、可扩展的集群之上。
2、如何实现这些功能?
结构和功能是分不开的,我们要知道它如何实现上述定义中的功能,我们就先来看看它的结构:
整个系统被分为了三个部分:
从上到下依次为:计算框架、Mesos Master、Mesos Slave
这三个部分分别是用来干什么的呢?
1、计算框架:
不用多说,就是我们定义中提到的各种分布式的应用,用户通过这些计算框架完成不同的计算任务。
2、Mesos Master
这个就是Mesos的主节点,它用来跟上层的计算框架进行交互以及slave节点的管理,这个我们后续还会详细的说明,这里只是跟大家提一下让大家有个印象。
3、Mesos Slave
这是整个集群中的从属节点,这些节点实际上跟上层的计算框架的从属节点是有重合的,也正是这些从属节点承载了集群中的计算资源,在其之上运行各种各样的计算任务。
整个系统的工作方式:我们以hadoop为例来说明:首先用户通过JobClient向Hadoop提交了作业之后,作业到达了Hadoop的jobTracker,JobTracker通过tackScheduler实例跟Mesos Master建立连接,然后Mesos Master将系统中的资源推送给JobTracker,如果资源满足运算需求,JobTracker跟slave节点上的TaskTracker通过心跳来完成任务分配,对应于系统中不同的计算框架在slave节点上会有不同的执行器(Executor),由它们来完成任务的执行和反馈。
本篇中我们大致上介绍了Mesos系统的运行机制,下面我们就以Mesos-0.10.0跟hadoop0.20.205为例来说明一下,Mesos如何支持Hadoop任务的。
阅读(5055) | 评论(0) | 转发(0) |