spark RDD相关概念和运行架构
核心概念
- RDD定义:弹性分布式数据集,是Spark中基础数据处理抽象,具弹性、不可变、可分区及并行计算特性。
弹性
存储的弹性:内存与磁盘的自动切换;
容错的弹性:数据丢失可以自动恢复;
计算的弹性:计算出错重试机制;
分片的弹性:可根据需要重新分片。
➢ 分布式:数据存储在大数据集群不同节点上
➢ 数据集:RDD 封装了计算逻辑,并不保存数据
➢ 数据抽象:RDD 是一个抽象类,需要子类具体实现
➢ 不可变:RDD 封装了计算逻辑,是不可以改变的,想要改变,只能产生新的 RDD,在新的 RDD 里面封装计算逻辑
➢ 可分区、并行计算
- 核心属性:涵盖分区列表、分区计算函数、RDD之间依赖关系、分区器(可选)、首选位置(可选) 。
执行与特性
- 执行原理:在Yarn环境下,经启动集群、申请资源、划分任务、发送任务步骤,RDD封装逻辑生成Task供Executor计算。
- 序列化:涉及闭包检查、序列化方法和属性,介绍Kryo序列化机制。
- 依赖关系:含血统关系、窄依赖、宽依赖,介绍RDD任务划分及相关概念。
- 持久化:通过Cache或Persist方法存储结果,涉及存储级别、检查点设置等。
- 分区器:支持Hash分区和Range分区,用于自定义分区 。
数据操作
- 文件读取与保存:从文件格式(文本、Sequence、对象文件等)和数据格式(本地文件系统、HDFS等)维度介绍数据读取与保存方式。
架构基础
- 运行架构:Spark 框架采用master - slave结构 ,Driver为master负责作业任务调度,Executor为slave负责实际任务执行。
核心组件
- Driver:执行Spark任务main方法,负责将用户程序转为作业、调度任务、跟踪Executor执行情况、通过UI展示运行情况。
- Executor:集群工作节点中的JVM进程,运行具体任务,通过块管理器为RDD提供内存存储。
- Master & Worker:独立部署环境中,Master负责资源调度分配与集群监控,Worker由Master分配资源处理计算数据。
- ApplicationMaster:Hadoop用户向YARN集群提交应用时,用于申请资源容器、运行任务、监控执行及处理异常。
核心概念
- Executor与Core:介绍Executor作为计算节点,以及相关启动参数如数量、内存、虚拟CPU核数配置 。
- 并行度:指集群并行执行任务数量,可依框架默认配置或动态修改 。
- 有向无环图(DAG):由Spark程序执行时数据流向抽象,用于表示程序拓扑结构,是第二代计算引擎支持特性,Spark为第三代计算引擎支持Job内部DAG和实时计算。
提交流程
- Yarn Client模式:用于监控调试,Driver在客户端执行,介绍启动及任务执行流程。
- Yarn Cluster模式:用于实际生产,Driver在Yarn集群资源中执行,介绍启动及任务执行流程。