Spark 核心概念:Master、Worker、Driver Program、Executor、RDDs
一、Master
Spark 特有资源调度系统的 Leader,掌管着整个集群的资源信息(Standalone模式),类似于 Yarn 集群中的ResourceManager。
主要功能:
- 监听 Worker,看集群中的 Worker 是否正常工作;
- 管理 Worker、Application(接收 Worker 的注册并管理所有的 Worker;接收 Client 提交的 Application,调度等待的Application 并向Worker提交)。
二、Worker
Spark 特有资源调度系统的 Slaver,一个集群中有多个 Slaver(Standalone),每个 Slaver 掌管着所在节点的资源信息,类似于 Yarn 框架中的 NodeManager。
主要功能:
- 通过 RegisterWorker 注册到 Master;
- 定时发送心跳给 Master;
- 根据 Master 发送的 Application 配置进程环境,并启动 ExecutorBackend(执行 Task 所需的临时进程)。
三、Driver Program(驱动程序)
每个 Spark 应用程序都包含一个驱动程序,驱动程序负责把并行操作发布到集群上。驱动程序包含 Spark 应用程序中的main()函数。在 WordCount 案例中,spark-shell 就是我们的驱动程序,所以我们可以在其中键入我们任何想要的操作,然后由它负责发布。驱动程序通过 SparkContext 对象来访问 Spark,SparkContext 对象相当于一个到 Spark 集群的连接(用它来连接Spark集群)。
四、Executor(执行器)
SparkContext 对象一旦成功连接到集群管理器, 就可以获取到集群中每个节点上的执行器(Executor)。执行器是一个进程(进程名: ExecutorBackend, 运行在 Worker 节点上),用来执行计算和为应用程序存储中间数据。
Spark 会发送应用程序代码(比如:jar包)到每个执行器,最后,SparkContext 对象发送任务到执行器开始执行程序。
Master、Worker、Driver Program、Executor之间的关系:
五、RDD(Resilient Distributed Dataset) 弹性分布式数据集
RDD 是 Spark 对数据的核心抽象,其实就是分布式的元素集合。在 Spark 中,对数据的所有操作不外乎创建 RDD、转化已有RDD 以及调用 RDD 操作进行求值。而在这一切背后, Spark 会自动将 RDD 中的数据分发到集群上,并将操作并行化执行。
Spark 中 RDD 是一种不可变的分布式对象集合,所以,对 RDD 的每一个操作都会生成一个新的 RDD。
六、专业术语列表
术语 | 含义 |
---|---|
Application |
基于 Spark 构建的用户程序,一般包括了集群上的一个 driver 程序与多个 executor。 |
Application jar |
包含了用户的 Spark application 的一个 jar 包。 |
Driver program |
运行 application 的 main() 函数和创建 SparkContext 的进程. |
Cluster manager |
获取集群资源的一个外部服务, 比如 standalone 管理器, Mesos 和 YARN. |
Deploy mode |
区分 driver 进程在何处运行. 在 “cluster” 模式下, 框架在集群内部运行 driver. 在 “client” 模式下, 提交者在集群外部运行 driver. |
Worker node |
集群内任一能够运行 application 代码的节点 |
Executor |
在 worker node 上 application 启动的一个进程, 该进程运行 task 并在内存或磁盘上保存数据. 每个 application 都有其独有的 executor. |
Task |
发送到一个 executor 的一系列工作 |
Job |
由多个 task 组成的一个并行计算, 这些 task 产生自一个 Spark action (比如, save, collect) 操作. |
Stage |
每个 job 被分解为多个 stage, 每个 stage 其实就是一些 task 的集合, 这些 stage 之间相互依赖 (与 MapReduce 中的 map 与 reduce stage 类似),执行过程中,每碰到一个shuffle就是一个stage。 |