Spark教程1:Spark基础介绍

文章目录

        • [一、Spark 是什么?](#一、Spark 是什么?)
        • [二、Spark 的核心优势](#二、Spark 的核心优势)
        • [三、Spark 的核心概念](#三、Spark 的核心概念)
        • [四、Spark 的主要组件](#四、Spark 的主要组件)
        • [五、Spark 的部署模式](#五、Spark 的部署模式)
        • [六、Spark 与 Hadoop 的关系](#六、Spark 与 Hadoop 的关系)
        • [七、Spark 应用开发流程](#七、Spark 应用开发流程)
        • [八、Spark 的应用场景](#八、Spark 的应用场景)
        • [九、Spark 版本更新与社区](#九、Spark 版本更新与社区)
一、Spark 是什么?

Apache Spark 是一个开源的分布式大数据处理引擎,最初由加州大学伯克利分校 AMPLab 开发,2013 年捐赠给 Apache 软件基金会,如今已成为 Apache 顶级项目之一。它以速度快、易用性高、通用性强为核心特点,可用于大规模数据的处理、分析和机器学习等场景。

二、Spark 的核心优势
  • 速度快
    • 基于内存计算(Memory Computing),数据处理速度比 Hadoop MapReduce10 - 100 倍。
    • 优化的执行引擎(如 Tungsten 优化)和向量化执行,减少 CPU 开销。
  • 易用性强
    • 支持多种编程语言:Scala、Java、Python、R、SQL
    • 提供统一的 API(如 DataFrame/Dataset),简化复杂的数据处理逻辑。
  • 通用性高
    • 集成多种功能模块:SQL 处理(Spark SQL)、流计算(Spark Streaming)、机器学习(MLlib)、图计算(GraphX)
    • 可与 Hadoop 生态系统无缝集成(如 HDFS、Hive、HBase 等)。
  • 高容错性
    • 内置数据分区和副本机制,自动恢复节点故障。
    • 通过 Lineage(血统关系)记录数据处理流程,支持高效的容错恢复。
三、Spark 的核心概念
  1. RDD(Resilient Distributed Dataset)
    • 定义 :弹性分布式数据集,是 Spark 中最基本的数据抽象,代表一个不可变、可分区、可并行计算的数据集。
    • 特点
      • 支持两种操作:转换(Transformation,如 map、filter)和动作(Action,如 collect、count)。
      • 基于 Lineage 机制,当部分数据丢失时可通过血缘关系重新计算。
  2. DataFrame/Dataset
    • DataFrame :带有模式(Schema)的分布式数据集合,类似关系型数据库中的表,支持 SQL 风格的操作。
    • DatasetDataFrame 的进化版,在 DataFrame 的基础上增加了类型安全(Type Safety),支持对象操作。
  3. SparkSession
    • Spark 2.0 引入的统一入口,整合了 SparkContext、SQLContext 等组件,用于创建和管理 Spark 应用程序。
  4. 任务调度架构
    • Driver Program :负责协调 Spark 应用的执行,包含 main 函数和 SparkSession。
    • Cluster Manager :资源管理器(如 YARN、Mesos、Spark Standalone)。
    • Worker Node :实际执行任务的节点,包含 Executor
    • Executor :运行在 Worker 上的进程,负责执行具体的任务(Task),并存储数据到内存或磁盘。
    • DAG Scheduler :将作业(Job)分解为有依赖关系的阶段(Stage)。
    • Task Scheduler :将任务分配到 Executor 执行。
四、Spark 的主要组件
  1. Spark Core :提供基础的分布式计算功能,包含 RDD、任务调度、内存管理等核心模块。
  2. Spark SQL :支持结构化数据处理和 SQL 查询,可与 Hive 集成,处理 HiveQL 语句。
  3. Spark Streaming :支持实时流数据处理,将流数据分割为微小的批处理作业(如每秒处理一次),称为微批处理(Micro-Batch)。
  4. MLlib(Machine Learning Library):提供常用的机器学习算法和工具,如分类、回归、聚类、协同过滤等。
  5. GraphX:用于图计算和图分析的库,支持构建大规模图结构并执行图算法(如 PageRank、最短路径)。
五、Spark 的部署模式
  • Local 模式 :在单节点上运行,用于开发测试,所有组件运行在一个 JVM 中。
  • Standalone 模式Spark 自带的资源管理模式,无需依赖其他集群管理器,简单易用。
  • YARN 模式 :运行在 Hadoop YARN 上,利用 YARN 进行资源管理,是生产环境中常用的模式。
    • Client 模式Driver 运行在客户端,适用于交互性任务。
    • Cluster 模式Driver 运行在 YARN 集群中,适用于长时间运行的任务。
  • Mesos 模式 :运行在 Mesos 资源管理器上,支持与其他框架(如 Hadoop、Docker)共享资源。
六、Spark 与 Hadoop 的关系
  • Hadoop :以 HDFS(分布式文件系统)和 MapReduce(批处理计算框架)为核心,适合离线、大规模数据存储和处理。
  • Spark :不依赖 HDFS,可直接读取 HDFS、S3 等存储系统的数据,计算能力更强,适合实时计算、交互式分析和复杂算法。
  • 互补关系Spark 常与 Hadoop 结合使用,利用 HDFS 存储数据,Spark 进行计算,形成"存储与计算分离"的架构。
七、Spark 应用开发流程
  1. 创建 SparkSession

    python 复制代码
    from pyspark.sql import SparkSession
    spark = SparkSession.builder \
        .appName("MySparkApp") \
        .master("yarn") \
        .getOrCreate()
  2. 加载数据:读取文件、数据库或流数据。

  3. 处理数据 :使用 DataFrame/DatasetRDD 进行转换和计算。

  4. 执行动作:将结果收集到驱动程序或保存到外部系统。

  5. 关闭 SparkSessionspark.stop()

八、Spark 的应用场景
  • 大数据分析:处理 TB 级以上的数据分析任务,如用户行为分析、日志分析。
  • 实时流处理:处理实时数据流,如电商实时推荐、金融交易监控。
  • 机器学习:训练大规模机器学习模型,如推荐系统、欺诈检测。
  • 图计算:分析社交网络、知识图谱等复杂图结构。
  • ETL 任务:提取、转换和加载数据,构建数据仓库。
九、Spark 版本更新与社区
  • 最新版本 :截至 2025 年,Spark 最新版本为 3.5.x,持续优化性能、稳定性和新功能(如结构化流增强、AI 集成)。
  • 社区活跃:Apache Spark 拥有庞大的开源社区,全球众多企业和开发者参与贡献,文档和教程资源丰富。
相关推荐
述雾学java2 小时前
Spring Cloud 服务追踪实战:使用 Zipkin 构建分布式链路追踪
分布式·spring·spring cloud·zipkin
大只鹅2 小时前
分布式部署下如何做接口防抖---使用分布式锁
redis·分布式
weixin_438335402 小时前
分布式定时任务:xxl-job
分布式
大数据CLUB2 小时前
基于spark的航班价格分析预测及可视化
大数据·hadoop·分布式·数据分析·spark·数据可视化
sanggou2 小时前
GoFastDFS:轻量级高性能分布式文件存储解决方案(Linux安装部署)
分布式
格调UI成品2 小时前
预警系统安全体系构建:数据加密、权限分级与误报过滤方案
大数据·运维·网络·数据库·安全·预警
ℳ₯㎕ddzོꦿ࿐2 小时前
Spring Boot 集成 MinIO 实现分布式文件存储与管理
spring boot·分布式·后端
reddingtons5 小时前
Adobe Firefly AI驱动设计:实用技巧与创新思维路径
大数据·人工智能·adobe·illustrator·photoshop·premiere·indesign
G皮T6 小时前
【Elasticsearch】全文检索 & 组合检索
大数据·elasticsearch·搜索引擎·全文检索·match·query·组合检索
心平愈三千疾6 小时前
通俗理解JVM细节-面试篇
java·jvm·数据库·面试