欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 大数据技术之Scala

大数据技术之Scala

2025/4/18 21:17:05 来源:https://blog.csdn.net/2502_90678402/article/details/147098025  浏览:    关键词:大数据技术之Scala

 Spark运行架构核心是一个计算引擎

核心组件
1. Driver(驱动器)
   角色:Spark作业的“大脑”,负责解析用户代码、生成任务并调度执行。  
   功能:  
      将用户程序转换为作业(Job)。  
      调度任务到Executor,监控任务状态。  
     -提供Web UI展示运行状态。  

2. Executor(执行器)
   角色:集群中的工作节点,实际执行任务的JVM进程。  
   功能:  
     运行具体任务(Task),返回结果给Driver。  
      通过内存缓存RDD数据,加速计算。  

3. Master & Worker
   Master:资源调度管理者(类似YARN的ResourceManager),负责分配集群资源。  
   Worker:集群中的物理节点,执行Master分配的任务。  

4. ApplicationMaster
   作用**:解耦资源管理与计算调度,向ResourceManager申请资源并监控任务。  

 

核心概念
1. Executor与Core
    每个Executor可配置多个虚拟CPU核(Core),决定并行计算能力。  
   -提交应用时需指定Executor数量及资源(如内存大小)。  

2. 并行度(Parallelism)
   -集群中同时执行的任务数量,可通过配置动态调整,直接影响作业效率。  

3. 有向无环图(DAG)
    Spark将作业拆分为多个Stage,以DAG形式表示任务依赖关系,避免循环依赖,优化执行顺序。  

 

任务提交流程(YARN模式)
Spark支持两种部署模式,区别在于Driver的运行位置:  

1. YARN Client模式
   适用场景:测试环境。  
   特点:  
     -Driver运行在本地客户端,与集群交互。  
      任务提交后,ResourceManager启动ApplicationMaster,后者申请资源并启动Executor。  

2. YARN Cluster模式
   适用场景:生产环境。  
   特点:  
    Driver直接运行在YARN集群中(由ApplicationMaster担任)。  
    更适合长时间运行的作业,资源管理更稳定。  

共同流程:  
Executor启动后向Driver注册,触发Action算子后生成Job。  
根据宽依赖划分Stage,分发Task到Executor并行执行。  

Spark RDD核心解析:弹性分布式数据集的奥秘  

Apache Spark的核心竞争力之一在于其高效的分布式数据结构

RDD是Spark中最基本的数据抽象,具有以下核心特性:  

弹性:  

  存储弹性:内存不足时自动切换至磁盘。  

  容错弹性:数据丢失后通过血缘关系自动恢复。  

  计算弹性:任务失败自动重试。  

  分片弹性:支持动态调整分区。  

  分布式:数据分散在集群节点并行处理。  

  不可变:只能通过转换生成新RDD,保障数据一致性。  

 

RDD的五大核心属性

1. 分区列表:数据划分为多个分区,实现并行计算。  

2. 分区计算函数:每个分区独立执行计算逻辑。  

3. 依赖关系:记录父RDD与子RDD的血缘关系,用于容错。  

4. 分区器:Key-Value数据可自定义分区策略。  

5. 首选位置:优化数据本地化,减少网络传输。  

 

RDD执行原理

1. 资源申请:Spark先向集群申请计算资源(Executor)。  

2. 逻辑分解:将程序拆分为多个Task,每个Task对应一个分区。  

3. 任务分发:Driver调度Task至Executor并行执行。  

4. 结果整合:最终计算结果返回Driver或写入外部存储。  

 

RDD序列化与依赖关系

 序列化:  

 闭包检测:算子外的数据需可序列化,否则任务失败。  

 Kryo框架:比Java序列化快10倍,Spark默认用于简单数据类型。  

 依赖关系:  

 窄依赖:父RDD的每个分区仅被子RDD的一个分区依。  

  宽依赖:父分区被多个子分区依赖,触发Shuffle。  

 

RDD持久化:缓存与检查点

缓存(Cache/Persist):  

  将RDD数据暂存内存或磁盘,加速重复计算。  

  血缘关系保留,缓存丢失可回溯计算。  

检查点(Checkpoint):  

  将数据持久化至HDFS等可靠存储,切断血缘以降低容错开销。  

  最佳实践:对Checkpoint的RDD先缓存,避免重复计算。  

 

  RDD分区器与文件读写

  分区器:  

  Hash分区:按Key的哈希值分配分区(默认)。  

  Range分区:按Key范围分配,保证分区间有序。  

  文件读写:  

  支持格式:Text、CSV、SequenceFile、对象文件等。  

  存储系统:本地文件系统、HDFS、HBase等。 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词