系统架构图作为Spark整体结构的一个 birdview:
整体上Spark分为以下几个主要的子模块:
-
deploy
:deply
模块包括Master
,Work
和Client
,参见architecture图的最上 部分。deploy
主要负责启动和调度用户实现的Spark application并且分配资源给用户 application,类似于Hadoop YARN框架。 -
scheduler
:scheduler
主要负责调度用户application内的tasks,根据部署方式的不 同Spark实现了多种不同的scheduler
,包括LocalScheduler
,ClusterScheduler
等 。 -
rdd
:rdd
类似于一个分布式的数据集,用户可以根据rdd
所提供的api进行数据集的 操作,rdd
模块是用户交互的主要模块。 -
storage
:storage
模块主要负责数据集,也就是rdd
的存取。根据设定的不同,数 据可以保存在内存、磁盘或是两者。Spark与Hadoop MapReduce最大的不同在于MapReduce 将数据保存在HDFS上,而Spark则由自己的存储系统。
当然还有一些其他的子模块,可以参考上图。
Spark采用了Actor的设计方式,整体架构,包括各子模块的设计上都是采用master-slave模 式,master和slave之间通信的主要协议可以参见上图。