本节书摘来自华章出版社《Spark大数据分析:核心概念、技术及实践》一书中的第3章,第3.2节,作者[美] *·古勒(Mohammed Guller),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.2 总体架构
一个Spark应用包括5个重要部分:驱动程序、集群管理员、worker、执行者、任务(见图3-1)。
3.2.1 worker
worker为Spark应用提供CPU、内存和存储资源。worker把Spark应用当成分布式进程在集群节点上执行。
3.2.2 集群管理员
Spark使用集群管理员来获得执行作业所需要的集群资源。顾名思义,集群管理员管理集群中worker节点的计算资源。它能跨应用从底层调度集群资源。它可以让多个应用分享集群资源并且运行在同一个worker节点上。
Spark目前支持三种集群管理员:单独模式、Mesos模式、YARN模式。Mesos模式和YARN模式都允许在同一个worker节点上同时运行Spark应用和Hadoop应用。第10章将详细介绍集群管理员。
3.2.3 驱动程序
驱动程序是一个把Spark当成库使用的应用。它提供数据处理的代码,Spark将在worker节点上执行这些代码。一个驱动程序可以在Spark集群上启动一个或多个作业。
3.2.4 执行者
执行者是一个JVM进程,对于一个应用由Spark在每一个worker上创建。它可以多线程的方式并发执行应用代码。它也可以把数据缓存在内存或硬盘中。
执行者的生命周期和创建它的应用一样。一旦Spark应用结束,那么为它创建的执行者也将寿终正寝。
3.2.5 任务
任务是Spark发送给执行者的最小工作单元。它运行在worker节点上执行者的一个线程中。每一个任务都执行一些计算,然后将结果返回给驱动程序,或者分区以用于shuffle操作。
Spark为每一个数据分区创建一个任务。一个执行者可以并发执行一个或多个任务。任务数量由分区的数量决定。更多的分区意味着将有更多的任务并行处理数据。