AI交互教学平台的后台服务器之间采用Mesos集群模式,采用Hadoop做计算框架,通过运行Mesos方便Spark进行计算。具体的配置参见图5-4集群架构图。
图5-4 集群架构图
Mesos是Apache旗下的开源分布式资源管理框架,其起源于加州大学伯克利分校,后被Twitter推广使用。Mesos上可以部署多种分布式框架,Mesos资源分配图如图5-5所示,通过外部的计算框架,如Hadoop、Mesos等可通过注册的方式接入Mesos,以便Mesos进行统一管理和资源分配。
Mesos采用双层调度机制,能支持多种调度模式。Mesos的双层调度机制为:Mesos可接入如Yarn一般的分布式部署框架,但Mesos要求可接入的框架必须有一个主调度器模块,该调度器负责框架内部的任务调度。当一个外部计算框架要接入Mesos时,需要修改自己的调度器,以便向Mesos注册,并获取Mesos分配给自己的资源,再由自己的调度器将这些资源分配给框架中的任务,也就是说,整个Mesos系统采用双层调度框架:第一层是由Mesos将资源分配给计算框架,第二层是计算框架自己的调度器将资源分配给自己内部的任务。
Mesos可实现粗、细粒度资源调度和可动态分配资源,而Yarn只能实现静态资源分配。
图5-5 Mesos资源分配图(www.xing528.com)
粗粒度模式(Coarse-Grained Mode):程序运行之前就要把所需要的各种资源(每个Executor占用多少资源、内部可运行多少个Executor)申请好,运行过程中不能改变。
细粒度模式(Fine-Grained Mode):为了防止资源浪费,对资源进行按需分配。与粗粒度模式一样,应用程序启动时,先会启动Executor,但每个Executor占用的资源仅仅是自己运行所需的资源,不需要考虑将来要运行的任务。之后,Mesos会为每个Executor动态分配资源,每一次分配,便可以运行一个新任务,单个Task运行完之后可以马上释放对应的资源。每个Task会汇报状态给Mesos Slave和Mesos Master,便于更加细粒度管理和容错,这种调度模式类似于MapReduce调度模式,每个Task完全独立,优点是便于资源控制和隔离,但缺点也很明显——短作业运行延迟大。
在Mesos上运行的计算框架由两部分组成:一个是Scheduler,通过注册到Master来获取集群资源;另一个是在Slave节点上运行的Executor进程,它可以执行framework的Task。Master决定为每个外部计算框架提供多少资源,外部计算框架的Scheduler来选择提供的资源。当外部计算框架同意提供的资源,它通过Master主服务器将任务发送到提供资源的slaves上运行。Mesos的资源分配图如图5-5所示:
①Slave1向Master报告,有4个CPU和6 GB内存可用;
②Master发送一个Resource Offer给Hadoop Scheduler来描述Slave1有多少可用资源;
③Hadoop Scheduler中的Scheduler会答复Master:我有两个Task需要运行在Slave 1,一个Task需要<1个CPU,1 GB内存="">,另外一个Task需要<2个CPU,2 GB内存="">;
④最后,Master发送这些Tasks给Slave 1。然后,Slave 1还有1个CPU和3 GB内存没有使用,所以分配模块可以把这些资源提供给Hadoop Scheduler进行使用,从而实现资源的再调用使用。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。