Spark-Mesos架构图

Spark Mesos 架构图

Apache Mesos采用Master/Slave架构,主要由Mesos Master、Mesos Slave、Framework和Executor四部分组成,整体架构如下如所示。其中Mesos Master是整个系统的核心,Framework是外部的计算框架,它们通过注册接入Mesos后,由Mesos Master进行统一管理和资源分配,具体的执行任务由Executor执行,不同的计算框架需要实现自己的Executor。也就是Mesos采用双层调度框架:

  • Mesos Master分配资源给外部框架。
  • 外部框架的调度模块将资源分配给外部框架的内部计算任务。

Mesos资源调度分为粗粒度调度和细粒度调度:

  • 粗粒度调度:Executor获得资源后就长期持有,直到应用程序退出才释放资源。
  • 细粒度调度:Executor根据任务的实际需要动态申请资源,任务完成以后归还资源给系统。

Spark 可以通过spark.mesos.coarse true or false来设置粗粒度模式或者细粒度模式。
架构图如下:

粗粒度调度模式

Client在启动时通过CoarseMesosSchedulerBackend向Mesos Master获取资源,CoarseMesosSchedulerBackend额外实现了Mesos的资源调度接口,可以向Mesos资源调度框架注册和接受来自Mesos的资源分配,得到资源之后他会通过Mesos远程启动CoarseGrainedExecutorBackend。
在粗粒度模式下,Executor从Mesos Master获取的资源会等到所有的计算任务结束(退出应用程序)时才会向Mesos归还资源。

细粒度调度模式

细粒度调度模式和粗粒度调度模式的实现基本相同,只不过在细粒度模式下是按照任务来向Mesos Master申请资源,并且在计算任务结束后就归还资源。
这种模式避免了资源浪费问题,但是每次任务调度都会从系统动态申请资源,所以调度的时间开销比较大,对于运行时间短但计算任务比较多的应用性能会变得很差。

Reference:

[1] Spark技术内幕:深入解析Spark内核架构设计与原理实现(张安站)

[2] https://blog.csdn.net/lsshlsw/article/details/47104913

你可能感兴趣的:(Spark-Mesos架构图)