4.2 Spark调度与任务分配模块

系统设计很重要的一环便是资源调度。设计者将资源进行不同粒度的抽象建模,然后将资源统一放入调度器,通过一定的算法进行调度,最终达到高吞吐量或者低访问延迟的目的。Spark的调度器设计精良,扩展性极好,为它的后续发展奠定了很好的基础。

Spark有多种运行模式,如Local模式、Standalone模式、YARN模式、Mesos模式。在集群环境下,为了减少复杂性,抓住系统主要脉络进行理解。本节主要介绍Standalone模式中的名词,其他运行模式中各角色实现的功能基本一致,只不过是在特定资源管理器下使用略为不同的名称和调度机制。

在Standalone模式下,集群启动之后,使用jps命令在主节点会看到Master进程,在从节点会看到Worker进程。其中,Master负责接收客户端提交的作业,管理Worker。提供了Web UI呈现集群运行时状态信息,方便用户诊断性能问题。

在Spark的应用提交之后,Spark调度应用。系统设计的一个核心就是调度。从Spark整体上看,调度可以分为4个级别,Application调度、Job调度、Stage的调度、Task的调度与分发。上节已经介绍了这4个概念和概念之间的对应关系。下面对这4个层级调度进行介绍。