《Spark数据分析:基于Python语言 》 —3.1.3 Spark主进程与集群管理器
3.1.3 Spark主进程与集群管理器
Spark驱动器进程对运行Spark应用所需的任务集进行规划和协调。任务本身则在执行器中运行,而执行器运行在工作节点上。
执行器利用分布式集群的资源运行,在YARN或者Mesos模式下,这些运行执行器的资源被称为容器。主进程与集群管理器是对分布式集群的资源进行监控、占用以及分配的核心进程。主进程和集群管理器可以是分开的进程,有时也可以合在一个进程里,比如以独立集群模式运行Spark时。
1.Spark主进程
Spark主进程是向集群申请资源,并把资源交给Spark驱动器的进程。在各种部署模式中,主进程都向工作节点(从节点)请求资源(容器),并跟踪它们的状态,监控执行进度。
当以独立集群模式运行Spark时,Spark主进程在主节点的8080端口上提供了一个网页版的用户界面,如图3.6所示。
Spark主进程与Spark驱动器进程
驱动器和主进程的运行时功能需要重点区分。主进程这个叫法可能会让人以为这是管理应用执行的进程,然而并非如此。主进程只是请求资源,并把资源交给驱动器进程。尽管主进程还会监控这些资源的健康状态,但它并不会参与应用的执行以及应用内任务和阶段间的协调。这些是驱动器进程的工作。
图3.6 Spark主进程用户界面
2.集群管理器
集群管理器是负责监控工作节点并在主进程请求时在工作节点上预留资源,然后主进程就把这些集群资源以执行器的形式交给驱动器进程使用。
如前所述,集群管理器可以独立于主进程。在Mesos或者YARN上运行Spark就是这样。如果以独立集群模式运行Spark,那么主进程也会提供集群管理器的功能。实际上就是主进程充当了自己的集群管理器。
我们以在Hadoop集群上运行Spark应用时YARN的ResourceManager为例来介绍集群管理器。ResourceManager调度和分配YARN的NodeManager内运行的容器,并监控容器的健康状态。Spark应用使用这些容器来托管执行器进程,如果应用以集群模式运行,那么主进程也会运行在容器中。稍后再详细介绍这一点。
- 点赞
- 收藏
- 关注作者
评论(0)