什么是Apache Spark

AI解读 3个月前 硕雀
38 0

Apache Spark —— 分布式计算框架概述


1. 什么是 Spark

Spark 是由美国加州大学伯克利分校 AMP 实验室在 2009 年首次提出、2014 年成为 Apache 顶级项目的开源大数据处理框架。它基于 内存计算,通过 弹性分布式数据集(RDD)‍ 实现高效的并行处理,能够比传统 Hadoop MapReduce 快 10‑100 倍、在同等资源下完成相同任务的时间仅为 Hadoop 的三分之一。Spark 旨在为 批处理、流处理、机器学习、图计算 提供统一的编程模型和运行时环境


2. 核心概念

概念 含义 关键特性
RDD(Resilient Distributed Dataset Spark 最底层的抽象,表示一个不可变、可分区的弹性数据集 支持 惰性转换、血统(Lineage)记录,实现容错恢复
DataFrame / Dataset 基于结构化模式的分布式表格数据抽象,提供 Spark SQL 的优化执行计划 支持 Catalyst 优化器、列式存储、跨语言 API
Transformation 与 Action Transformation(如 mapfilter)构建计算 DAG,Action(如 countcollect)触发实际执行 通过 有向无环图(DAG)调度 实现多步骤任务的优化
Shared Variables(Broadcast、Accumulator) 在集群中共享只读或累加数据 减少网络传输、实现全局计数等功能

3. 主要组件

  1. Spark Core – 提供基础的任务调度、内存管理、容错机制以及 RDD API。
  2. Spark SQL – 基于 Catalyst 优化器的结构化查询引擎,支持 SQL、DataFrame、Dataset 编程模型。
  3. Spark Streaming(已演进为 Structured Streaming) – 实时流式计算模块,能够从 Kafka、Flume 等源持续读取数据并进行微批处理。
  4. MLlib – 分布式机器学习库,提供常用算法(分类、回归、聚类等)以及特征工程工具。
  5. GraphX – 基于 Pregel 思想的图计算框架,支持图的并行分析与算法实现。

4. 执行模型

  • Driver 程序:用户代码入口,负责创建 SparkContext、构建 DAG、调度任务。
  • Cluster Manager:资源调度层,可选 Standalone、YARN、Mesos、Kubernetes 等多种模式。
  • Executor:在工作节点上实际执行任务的进程,负责读取分区数据、执行算子、写入结果。
  • Task:Executor 中的最小执行单元,对单个分区进行计算。

Spark 通过 血统图(Lineage)‍ 记录 RDD 的依赖关系,在节点失效时可自动重算丢失的分区,实现 容错


5. 编程语言与生态

  • Scala(原生实现)
  • Python(PySpark)‍ – 适合数据科学家使用的高级语言
  • Java – 兼容企业级系统
  • R – 面向统计分析用户

Spark 生态还包括 Delta Lake(事务性存储)、Koalas(Pandas‑like API)等扩展,进一步提升了在云端和本地的可用性。


6. 部署与运行环境

部署方式 说明
Standalone Spark 自带的简易集群管理器,适合快速搭建测试环境
YARN 与 Hadoop 生态深度集成,利用已有 HDFS、资源调度
Mesos 支持多租户资源共享,适用于大规模多业务平台
Kubernetes 容器化部署,便于弹性伸缩和云原生运维

7. 典型应用场景

  • 大规模批处理:日志分析、ETL、离线报表
  • 实时流处理:监控告警、实时推荐、金融风控
  • 机器学习:特征工程、模型训练、在线预测
  • 图计算:社交网络分析、路径查询、社区检测

8. 优势与局限

优势

  • 高性能:内存计算 + DAG 调度,显著降低 I/O 开销
  • 统一 API:一次编写代码即可在批、流、机器学习、图计算之间切换
  • 多语言支持:降低学习成本,适配不同技术栈
  • 丰富生态:SQL、机器学习、图计算等组件完整

局限

  • 对 内存资源 要求较高,集群规模受限于硬件成本
  • 在 极端大规模(上千节点)场景下,调度开销仍是瓶颈
  • 对 实时性 要求极高的毫秒级业务,仍需结合专用流处理系统(如 Flink)

9. 小结

Apache Spark 通过 内存计算、弹性分布式数据集、统一的多组件架构,为大数据批处理、实时流处理、机器学习和图计算提供了高效、易用且可扩展的解决方案。它已经成为当今企业级大数据平台的核心技术之一,并在云原生、容器化等新趋势下持续演进。

来源:www.aiug.cn
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!