- Spark系统架构
- 运行模式
Spark系统架构
系统架构图
- ClusterMaster节点:ClusterMaster是整个Spark集群的核心,在集群中所处的地位与HDFS集群中的NameNode节点的地位类似。ClusterMaster节点并不执行实际的计算任务,而是负责管理整个集群的计算资源,这里所说的计算资源是指除ClusterMaster节点外其他物理主机的内存、CUP等物理资源。这些计算资源由ClusterMaster节点进行统一管理,并将资源合理地分配给用户提交的各个应用程序。所有计算节点都要向ClusterMaster节点进行注册,将自身的计算资源交给ClusterMaster节点进行统一调度。ClusterMaster节点随时监控了解这些注册的节点的运行状况,以便为应用程序提供合理的资源分配。需要注意的是,ClusterMaster节点是一个逻辑上的概念,当Spark集群采用不同模式运行时,ClusterMaster节点对应的是这些模式汇总相应管理节点。
例如:Standalone模式运行Spark时,ClusterMaster节点就是运行Master服务的节点。
YARN模式运行Spark时,对应的ClusterMaster节点为YARN中的ResourceManager节点。
Mesos模式运行Spark时,对应的ClusterMaster节点为Mesos中的Master节点。
- Slave节点:Slave是Spark集群中执行作业逻辑的节点。但与HDFS集群中作为Slave节点的DataNode节点只完成单一功能不同,Spark中的Slave节点又根据功能分为两类:任务带哦度节点(Driver)和任务执行节点(Worker)。区分这两种节点的根本方法就是看Slave节点上运行着哪种功能的进程。
- Driver节点:如果节点上运行了Spark程序main函数所在的进程,那么该节点就作为该应用程序的Driver节点。在Spark集群中,Driver进程可以运行在提交Spark程序的Client节点上,也可以是某个Workder节点上。
Driver节点主要负责两方面工作:
- 负责将一个应用程序分割为物理上可以执行的任务(Task),在Spark中,Task是物理上可执行的最小单元。一个应用程序可以启动成百上千的独立Task;
- 对于应用程序产生的Task,Driver进程将Task任务分配到最适合的Worker节点上运行,并协调这些Task在Workder上完成任务。
- Worker节点:运行Executor进程的节点为Worker节点,Spark为灭一个应用程序在Worker节点上创建一个Executor进程,Executor进程是实际物任务的执行者。
Executor进程负责两方面工作:
- 负责执行组成应用程的独立Task计算任务,并将执行节点反馈给Driver节点。
- Executor进程为RDD提供内存存储。
提示:以下是本篇文章正文内容,下面案例可供参考
运行模式- 本地(local)模式:本地模式,Spark作业是在单机使用非并行模式。
- 单机(Standalone)模式:Spark集群对不同的应用程序采用先进先出(FIFO)的顺序执行调度。
- 伪分布(local-cluster)模式:在点击环境下模拟了Standalone模式。在伪分布模式下资源的调度流程与Standalone模式完全相同,只是资源调度的不是实际的物理节点,而是在单机上运行的伪分布Spark集群。
- YARN模式:Spark集群运行在YARN资源管理框架上。可以为特定的应用程序分配一定数量的Executor,同时还可以对每个Executor使用的内存大小和占用CPU内核数据进行设定。
- Mesos模式:Spark集群运行在Mesos资源管理框架上。既可以配置Spark集群使用静态资源的分配策略,又可以配置集群中动态共享CUP内核的分配策略。在动态共享CPU内核分配策略下,每个独立的应用程序还会分配固定的内存资源,但当该应用程序所占用的某个机器的CUP内核处于空闲时,其他应用程序可以使用该空闲的CPU内核资源。



