Spark学习<->:设计理念和基本架构

Spark学习
-本系列学习书籍《Spark内核设计的艺术:架构设计与实现》--耿嘉安
一.本文内容:概括性讲述Spark的设计理念和基本架构
二.Spark设计理念
1.Spark包含很多子模块,理解这些模块有助于我们掌握Spark的设计思想。Spark的模块按照重要程度可分为核心功能和扩展功能。核心功能是Spark设计理念的核心实现,也是Spark陆续加入新功能的基础。在核心功能之上,通过不断地将丰富的扩展功能持续集成到Spark中,使得Spark满足更多市场、应用和用户的需求,促使Spark生态圈更加繁荣。
2.Spark在编程模型方面没有采用Hadoop的MapReduce编程模型,而是封装了丰富的转换与执行的API。开发人员可以充分利用这些API编写自己的Spark应用程序,而不用拘泥于如何套用MapReduce编程模型中的Mapper或Reducer。Spark提供的转换API将会在底层将数据封装为RDD,并对这些RDD进行转换、构建血缘、构建DAG、分片划分等处理,这些过程都是透明的,使得开发人员能更加专注于自己的业务实现。
3.Spark的模块设计:整个Spark主要由Spark Coke、Spark SQL、Spark Streaming、GraphX、MLlib组成,而后四项的能力都是建立在核心引擎之上
1)Spark核心功能:Spark Core中提供了Spark最基础与最核心的功能
(1)基础设施
(2)SparkContext
(3)SparkEnv
(4)存储体系
(5)调度系统
(6)计算引擎
2)Spark扩展功能
(1)Spark SQL
(2)Spark Streaming
(3)GraphX
(4)MLlib
4.Spark的模型设计:
1)Spark编程模型
2)RDD计算模型
三.Spark的基本架构
1.从集群部署的角度来看,Spark集群由集群管理器(Cluster Manager)、工作节点(Worker)、执行器(Executor)、驱动器(Driver)、应用程序(Application)等部分组成
Spark学习<->:设计理念和基本架构

  (1)Cluster Manager:Spark的集群管理器,主要负责对整个集群资源的分配与管理。Cluster Manager在YARN部署模式下为ResourceManager;在Mesos部署模式下为MesosMaster;在Standalone部署模式下为Master。Cluster Manager分配的资源属于一级分配,它将各个Worker上的内存、CPU等资源分配给Application,但是并不负责对Executor的资源分配。
  (2)Worker:Spark的工作节点。在YARN部署模式下实际由NodeManager替代。
  (3)Executor:执行计算任务的一线组件。主要负责任务的执行及与Worker、Driver的信息同步。
  (4)Driver:Application的驱动程序,Application通过Driver与Cluster Manager、Executor进行通信。Driver可以运行在Application中,也可以由Application提交给ClusterManager并由Cluster Manager安排Worker运行。
  (5)Application:用户使用Spark提供的API编写的应用程序,Application通过Spark API将进行RDD的转换和DAG的构建,并通过Driver将Application注册到Cluster Manager。Cluster Manager将会根据Application的资源需求,通过一级分配将Executor、内存、CPU等资源分配给Application。Driver通过二级分配将Executor等资源分配给每一个任务,Application最后通过Driver告诉Executor运行任务。
上一篇:(十九)、SpringCloud Alibaba Sentinel实现熔断和限流


下一篇:2021年最新大厂Java面试笔试题目,百度Java面试经验