https://zhuanlan.zhihu.com/p/34436165
https://zhuanlan.zhihu.com/p/70424613
1.介绍
Spark 是专为大规模数据处理而设计的快速通用的计算引擎。是Hadoop MapReduce的通用并行框架,Spark,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是——Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法。
2.Spark 系统架构
3.Spark基本概念
1.RDD:是弹性分布式数据集(Resilient Distributed Dataset)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型。
2.DAG:是Directed Acyclic Graph(有向无环图)的简称,反映RDD之间的依赖关系。如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图(DAG图)。
3.Driver Program:控制程序,负责为Application构建DAG图。
4.Cluster Manager:集群资源管理中心,负责分配计算资源。
5.Worker Node:工作节点,负责完成具体计算。
6.Executor:是运行在工作节点(Worker Node)上的一个进程,负责运行Task,并为应用程序存储数据。
7.Application:用户编写的Spark应用程序,一个Application包含多个Job。
8.Job:作业,一个Job包含多个RDD及作用于相应RDD上的各种操作。
9.Stage:阶段,是作业的基本调度单位,一个作业会分为多组任务,每组任务被称为“阶段”。
10.Task:任务,运行在Executor上的工作单元,是Executor中的一个线程。
总结:
- Cluster Manager在standalone模式中即为Master主节点,控制整个集群,监控worker。
- Worker Node从节点,负责控制计算节点,启动Executor或者Driver
- Executor是在WorkerNode上起的一个进程
- Task,负责内存和磁盘的使用。
- Driver是统管Task的产生与发送给Executor的,运行Application 的main()函数
- Application由多个Job组成,Job由多个Stage组成,Stage由多个Task组成。Stage是作业调度的基本单位。
4.Spark 运行原理
1.构建Spark Application的运行环境,启动SparkContext
2.SparkContext向资源管理器(可以是Standalone,Mesos,Yarn)申请运行Executor资源,并启动StandaloneExecutorbackend,
3.Executor向SparkContext申请Task
4.SparkContext将应用程序分发给Executor
5.SparkContext构建成DAG图,将DAG图分解成Stage、将Taskset发送给Task Scheduler,最后由Task Scheduler将Task发送给Executor运行
6.Task在Executor上运行,运行完释放所有资源