运行架构
Spark框架的核心是一个计算引擎,它采用了标准 master-slave (主从)的结构。
Driver 是master,负责管理整个集群中的作业任务调度,驱使整个应用运行起来的程序。
Executor 则是 slave,负责实际执行任务。
如图所示:
核心概念
Executor与Core
在提交应用时,可以提供参数指定计算节点的个数,以及对应的资源。这里的资源一般指的是工作节点Executor的内存大小和使用的虚拟CPU核(Core)数量。
应用程序相关启动参数如下:
–num-executors 配置Executor的数量
–executor-memory 配置每个Executor的内存大小
–executor-cores 配置每个Executor的虚拟CPU core数量
并行度(Parallelism)
整个集群并行执行任务的数量称之为并行度。
有向无环图(DAG)
由 各任务依赖关系 组成的 ,不闭环的抽象模型。(比如A方法用到了B方法 ,那么A依赖B,所以B要先执行)
作用就是 任务调度 (先执行B任务再执行A任务…)
提交流程
Spark应用程序提交到Yarn环境中执行的时候,一般会有两种部署执行的方式:Client和Cluster。
两种模式,主要区别在于:Driver程序的运行节点。
Driver程序的运行节点在集群内 就是 Cluster模式
Driver程序的运行节点在集群外 就是 Client模式
核心编程
Spark计算框架为了能够对数据进行高并发和高吞吐的处理,封装了三大数据结构,用于处理不同的应用场景。三大数据结构分别是:
RDD : 弹性分布式数据集
累加器:分布式共享只写变量
广播变量:分布式共享只读变量