当前位置: 首页 > news >正文

Spark教程1:Spark基础介绍

文章目录

        • 一、Spark 是什么?
        • 二、Spark 的核心优势
        • 三、Spark 的核心概念
        • 四、Spark 的主要组件
        • 五、Spark 的部署模式
        • 六、Spark 与 Hadoop 的关系
        • 七、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
    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 拥有庞大的开源社区,全球众多企业和开发者参与贡献,文档和教程资源丰富。
http://www.lryc.cn/news/573707.html

相关文章:

  • C# Quartz.net 定时任务
  • Python 数据分析与可视化 Day 4 - Pandas 数据筛选与排序操作
  • Maven生命周期,测试
  • Python期末速成
  • Flink图之间流转解析:从逻辑构建到物理执行的深度剖析
  • 集群聊天服务器---muduo库的使用
  • 无锡哲讯科技:助力纺织业搭乘 SAP 数字化快车
  • 颠覆传统接口测试!用 Streamlit + SQLite + GPT 打造可视化自动化平台
  • Linux安全基石:Shell运行原理与权限管理系统解读
  • 企业级安全实践:SSL 加密与权限管理(二)
  • 设计模式精讲 Day 10:外观模式(Facade Pattern)
  • Java面试复习:基础、面向对象、多线程、JVM与Spring核心考点
  • 药房智慧化升级:最优成本条件下开启地市级医院智慧医疗新变革
  • c#多线程中的字典键值对象ConcurrentDictionary线程安全
  • 《HTTP权威指南》 第14章 安全HTTP
  • 【JS-4.4-键盘常用事件】深入理解DOM键盘事件:提升用户交互体验的关键
  • “MOOOA多目标鱼鹰算法在无人机多目标路径规划
  • leetcode:面试题 08.01. 三步问题
  • Linux 无线网络驱动开发 之 子系统源码框架(nl80211、cfg80211、mac80211)
  • 【weaviate】分布式数据写入之LSM树深度解析:读写放大的权衡
  • 计算机网络通信技术与协议(九)————交换机技术
  • flink如何支持kafka容灾自动切换
  • C++,Qt事件处理机制编程开发练习全解析,23000字解析!!
  • 二、Generative adversarial network (GAN)
  • 深入理解Spring MVC:构建灵活Web应用的基石
  • Elasticsearch Kibana (一)
  • React纯函数和hooks原理
  • 开发语言本身只是提供了一种解决问题的工具
  • Qt应用中处理Linux信号:实现安全退出的技术指南
  • 对射式红外传感器计次旋转编码器计次