spark基本概念与运行架构

Apache Spark是一个分布式计算框架,旨在简化运行于计算机集群上的并行程序的编写。

RDD:弹性分布式数据集(Resilient Distributed Dataset)是分布式内存的一个抽象概念,提供了一个高度受限的共享内存模型。一个RDD包含多个分区(Partition)。

DAG:有向无环图(Directed Acyclic Graph)反应RDD之间的依赖关系。

Executor:运行在工作节点(WorkNode)的一个进程,负责运行Task。

Application:用户编写的Spark程序。

Task:运行在Executor上的工作单元。

Job:一个Job包含多个RDD及作用于相应RDD上的各种操作。

Stage:是Job的基本调度单位,一个Job会分为多组Task,每组Task被称为Stage,或者也被称为TaskSet,代表了一组由关联的、相互之间没有shuffle依赖关系的任务组成的任务集。

与MapReduce相比的优势:

  • 利用多线程来执行具体的任务,减少任务的启动开销
  • Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,减少IO开销

  1.  为应用构建起基本的运行环境,即由Driver创建一个SparkContext进行资源的申请、任务的分配和监控。
  2. 资源管理器为Executor分配资源,并Executor启动进程。
  3. SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;Executor向SparkContext申请Task,TaskScheduler将Task发放给Executor运行并提供应用程序代码。
  4. Task在Executor上运行把执行结果反馈给TaskSchedulor,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。

Spark运行架构特点

  1. 每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task。
  2. Spark运行过程与资源管理器无关,只要能够获取Executor进程并保存通信即可。
  3. Task采用数据本地性和推测执行等优化机制。


(厦门大学大数据公开课笔记)

猜你喜欢

转载自www.cnblogs.com/macyzhang/p/10054517.html