Spark知识点整理
版本:Spark-2.1.1
Spark架构
Spark架构主要包含如下角色:
- Driver: 主计算进程,Spark job的驱动器
- Executor: 执行器,Worker上的计算进程
- Cluster Master: 主节点,在standalone模式中为主节点,控制整个集群,监控Worker. 在Yarn模式中充当资源管理器(Resource Manager)
- Worker: 从节点,负责控制计算节点,启动Executor或Driver
Driver
Spark的驱动器是执行main方法的进程,负责创建SparkContext,创建RDD,以及进行RDD的转化操作和行动操作的执行。Driver具有以下职能:
- 把用户程序转为Job
- 跟踪Executor运行状况
- 为执行器节点调度任务
- UI展示应用运行状况
Executor
Spark Executor是一个工作进程,负责在Spark作业中运行任务,任务间相互独立,Spark应用启动时,Executor节点同时启动,并且始终伴随着整个Spark应用的生命周期而存在。如果有Executor节点发生了故障或崩溃,Spark应用也可以继续执行,会将出错节点上的任务调度到其他Executor上继续执行。Executor具有以下职能:
- 负责运行Spark Task, 并将结果返回给Driver进程
- 通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存式存储. RDD是直接存储在Executor进程内的,因此任务可以在运行时充分利用缓存加速运算
Driver与Executor关系
- Executor: 接收任务并执行任务。RDD算子中的计算功能由Executor执行
- Driver: 创建Spark Context对象的应用程序。Spark程序除了计算RDD计算以外的逻辑由Driver执行,Executor代码中引用的Driver部分的对象必须是可序列化的,因为可能需要网络传输
Spark运行流程
运行模式
Local模式
本地模式,Master和Worker均为本机,可以断点调试
Standalone模式
使