*Spark简介

目录

[引入 Spark](#引入 Spark)

[Spark 概念](#Spark 概念)

定义

相关概念

Spark框架架构

集群层面:集群管理

应用层面:作业执行

Spark的优势

Spark生态系统

Spark典型应用场景


Spark官方文档

引入 Spark

在 Spark 出现之前,大数据处理领域的主流工具是 Hadoop MapReduce,但 MapReduce 存在明显短板:

  1. 处理效率低:MapReduce 的中间结果会持久化到磁盘,涉及大量磁盘 I/O 操作,对于迭代计算(如机器学习算法)、交互式查询场景,性能表现极差;
  2. 编程模型简陋:仅支持 Map 和 Reduce 两种操作,处理复杂业务逻辑时需要拆分多个 Job 串联执行,开发效率低;
  3. 场景覆盖有限:无法很好地支持流处理、交互式分析等新兴大数据场景。

为了解决上述问题,加州大学伯克利分校 AMP 实验室于 2010 年开发了 Spark,2013 年捐赠给 Apache 基金会并成为顶级项目。Spark 以内存计算为核心,大幅提升了大数据处理效率,同时扩展了编程模型和应用场景,逐渐成为大数据处理生态的引擎。

Spark 概念

定义

Apache Spark 是一款快速、通用、可扩展的大数据分析计算引擎,它支持批量处理、交互式查询、实时流处理、机器学习和图计算等多种场景,它基于内存的分布式计算,减少了磁盘 I/O 开销。

相关概念

(1)RDD(Resilient Distributed Dataset)

  • 弹性分布式数据集,是 Spark 最基础的数据抽象,也是早期 Spark 的数据结构;
  • 特性:弹性(丢失可通过血缘关系重建)、分布式(数据分片存储在集群节点)、只读(不可修改,只能通过转换操作生成新 RDD);
  • 作用:作为分布式计算的载体,屏蔽了底层数据存储和节点通信细节,让开发者专注于业务逻辑。

(2)DataFrame & Dataset

  • DataFrame:结构化数据抽象,类似于关系型数据库的表,包含列名、数据类型等元数据,支持 SQL 查询,比 RDD 具有更高的查询优化效率;
  • Dataset:结合了 RDD 的强类型特性和 DataFrame 的结构化优化特性,是 Spark 2.0 + 推荐的主流数据抽象,兼顾开发灵活性和执行效率。

(3)作业(Job)、阶段(Stage)、任务(Task)

  • Job:由一个或多个行动操作(Action)触发的计算任务集合,对应一次完整的数据处理流程(如执行一次count()操作会生成一个 Job);
  • Stage:Job 被 DAG 调度器拆分后的执行阶段,划分依据是宽依赖(Shuffle 操作,数据需要跨节点重分区),一个 Job 可以包含多个 Stage,Stage 之间按顺序执行;
  • Task:Stage 的最小执行单元,对应一个数据分片的处理逻辑,多个 Task 可以在集群节点上并行执行。

(4)窄依赖与宽依赖

  • 窄依赖:父 RDD 的每个分区只对应子 RDD 的一个分区,无需跨节点数据传输(如map()filter()操作);
  • 宽依赖:父 RDD 的一个分区对应子 RDD 的多个分区,需要进行 Shuffle,涉及跨节点数据传输(如groupByKey()reduceByKey()操作)。

(5)Shuffle

  • 定义:分布式计算中,需要将不同节点上的相同 Key 数据聚合到同一节点进行处理的过程;
  • 影响:Shuffle 涉及磁盘 I/O 和网络传输,优化 Shuffle 是 Spark 性能调优的方向。

Spark框架架构

Spark 采用主从架构(Master-Slave 架构),分为集群层面和应用层面两个维度,组件:

集群层面:集群管理

负责资源的分配与管理,支持三种集群管理器:

  • Spark Standalone:Spark 自带的集群管理模式,简单易用,适合小规模集群;
  • YARN:Hadoop 生态的资源管理器,是生产环境中最主流的 Spark 集群管理模式,支持资源动态分配;
  • Kubernetes:容器化集群管理平台,适合云原生环境下的 Spark 部署。

应用层面:作业执行

每个 Spark 应用对应一个独立的执行环境,组件:

(1)Driver Program(驱动程序)

  • 作用:作为 Spark 应用的入口,负责编写业务逻辑(如创建 SparkContext、定义 RDD 转换和行动操作)、生成 DAG(有向无环图)、将 Job 拆分为 Stage 并调度 Task 到 Executor;
  • 部署:可以部署在客户端(Client 模式)或集群节点(Cluster 模式),生产环境常用 Cluster 模式。

(2)Executor(执行器)

  • 作用:运行在集群从节点上的进程,负责执行 Task 并存储中间结果(内存或磁盘);
  • 特性:每个应用对应一组独立的 Executor,Executor 进程一旦启动,会一直运行直到应用结束,避免重复创建开销;每个 Executor 包含多个 Task Slot(任务插槽),Slot 是 Spark 的最小资源单位,对应一个 CPU 核心。

(3)SparkContext(SC)

  • 作用:Spark 应用的上下文对象,负责与集群管理器通信、申请资源、创建 RDD、调度任务,是连接 Spark 应用与集群的桥梁;
  • 注意:在 Spark 2.0 + 中,推出了SparkSession,封装了SparkContextSQLContext等多个上下文,成为新一代编程入口。

(4)DAG Scheduler(DAG 调度器)

  • 作用:将 Driver 生成的 DAG 拆分为多个 Stage(以宽依赖 / Shuffle 为拆分边界),并确定 Stage 的执行顺序,将每个 Stage 封装为 TaskSet 提交给 Task Scheduler。

(5)Task Scheduler(任务调度器)

  • 作用:接收 DAG Scheduler 提交的 TaskSet,负责将 Task 分配到 Executor 的 Task Slot 中执行,并处理 Task 失败重试逻辑。

Spark的优势

  1. 速度快:基于内存计算,比 MapReduce 快 10-100 倍,即使是磁盘计算场景,也通过优化的 Shuffle 机制比 MapReduce 更快;
  2. 通用性强:支持多种计算场景,一套 API 即可实现批处理、流处理、SQL 查询、机器学习、图计算,无需切换不同工具;
  3. 易用性高:支持 Scala、Java、Python、R 等多种编程语言,提供丰富的高阶 API(如 map、reduce、filter 等),降低分布式编程门槛;
  4. 可扩展性好:支持横向扩展,集群节点可轻松扩展至数千个,支持多种集群管理模式,适配不同部署环境;
  5. 兼容性强:无缝集成 Hadoop 生态(可读取 HDFS、Hive、HBase 等数据源),支持第三方存储系统,迁移成本低。

Spark生态系统

Spark 不仅是一个计算引擎,还构建了完整的生态体系:

  1. Spark Core:核心模块,提供 RDD、任务调度、内存管理等基础功能,是其他组件的依赖基础;
  2. Spark SQL:结构化查询模块,支持 SQL 查询和 DataFrame/Dataset API,可对接 Hive、MySQL 等数据源,实现结构化数据处理;
  3. Spark Streaming:准实时流处理模块,基于微批处理模型(将流数据切分为小批次进行处理),支持处理 Kafka、Flume 等数据源的实时数据;
  4. Structured Streaming:Spark 2.0 + 推出的结构化流处理模块,基于 DataFrame/Dataset API,支持事件时间处理、状态管理,更接近真正的流处理;
  5. MLlib:机器学习库,提供常用的机器学习算法(分类、回归、聚类等)和工具(特征工程、模型评估),支持分布式机器学习训练;
  6. GraphX:图计算库,用于处理图结构数据(如社交网络、知识图谱),提供图算法(如 PageRank、最短路径)。

Spark典型应用场景

  1. 批量数据处理:处理大规模离线数据,如用户行为日志分析、数据仓库 ETL(抽取 - 转换 - 加载)、报表生成;
  2. 实时流处理:处理实时数据,如电商实时推荐、风控实时监控、日志实时分析;
  3. 交互式查询:通过 Spark SQL 对接 BI 工具(如 Tableau、Power BI),实现大规模数据的交互式分析和即席查询;
  4. 机器学习:基于 MLlib 实现大规模分布式机器学习模型训练,如用户画像构建、销量预测;
  5. 图计算:基于 GraphX 处理图结构数据,如社交网络关系分析、知识图谱推理。
相关推荐
wenzhangli72 小时前
深度解析Ooder架构:A2UI时代全栈设计的四大核心思考
大数据·人工智能
十五年专注C++开发2 小时前
librf: 一款基于 C++11/14/17 标准实现的轻量级无栈协程库
开发语言·c++·分布式·异步io
学术小白人2 小时前
JPCS出版| 往届检索可查 | 第四届机械工程与先进制造智能化技术研讨会(MEAMIT 2026)
大数据·人工智能·搜索引擎·能源·制造·ei会议·rdlink研发家
冬至喵喵2 小时前
FLINK故障重启策略
大数据·python·flink
元智启2 小时前
企业AI智能体:智能体经济崛起,重构产业价值坐标系——从单点赋能到生态重构的产业革命
大数据·人工智能·重构
好大哥呀2 小时前
Hadoop yarn
大数据·hadoop·分布式
Ydwlcloud2 小时前
AWS国际版新账号注册隐藏优惠全解析:2026年实测避坑指南
大数据·服务器·人工智能·云计算·aws
————A2 小时前
从 RAG 走不通开始:设备运维场景下的一次诊断系统重构思考
大数据·数据库·人工智能
Elastic 中国社区官方博客3 小时前
Elasticsearch:2025年的企业搜索 - 是否需要进行抓取?
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai·全文检索