菜单
本页目录

Spark 概述

1. 什么是 Spark

Spark 是一个开源的大数据处理框架,专注于 内存计算,提供了更高效的数据处理能力。与传统基于磁盘的 Hadoop MapReduce 相比,Spark 使用内存作为数据处理的中介,极大提高了数据分析和处理的速度。它是一种 快速通用可扩展 的大数据分析计算框架。

  • 快速:Spark 的核心特性是内存计算,能将任务执行速度提升 10 倍以上。它支持批处理和流处理。
  • 通用:Spark 不仅限于批量数据处理,它支持 SQL 查询、流处理、机器学习、图计算等多种任务。
  • 可扩展:Spark 具有很好的扩展性,能够在大规模集群上处理海量数据。

2. Spark 和 Hadoop 的历史

  • Hadoop:由 Apache 基金会维护的开源框架,用于存储和处理大规模数据。Hadoop 的 MapReduce 计算模型主要基于磁盘存储,处理效率较低。
  • Spark:Spark 于 2009 年由加州大学伯克利分校的 AMP 实验室开发,旨在克服 Hadoop MapReduce 的低效问题。它提供了基于内存的计算模型,使得数据处理更加高效。Apache Spark 于 2013 年成为 Apache 的顶级项目,现在已经成为最流行的大数据处理引擎之一。

Hadoop 专注于 海量数据的存储分析计算,而 Spark 则进一步优化了 计算,专注于加速数据的处理速度。

3. Spark 内置模块

Spark 是一个功能非常强大的框架,除了核心的计算引擎之外,还包含了多个内置模块,分别支持不同类型的计算任务。

20240903220327.png

Spark 内置模块示意图

1. Spark Core

Spark Core 是 Spark 框架的基础部分,提供了 Spark 的基本功能,如任务调度、内存管理、容错机制、存储管理等。它支持弹性的分布式数据集(RDD),允许用户执行分布式计算操作。

2. Spark SQL

Spark SQL 是用于结构化数据处理的模块。它支持通过 SQL 或者 DataFrame API 进行查询,能够与传统的 SQL 查询系统集成,并可以与 Hive、Parquet 等数据源结合使用。

3. Spark Streaming

Spark Streaming 支持实时流数据处理。它可以从各种数据源(如 Kafka、Flume、HDFS 等)接收数据,并实时处理和分析。

4. MLlib

MLlib 是 Spark 提供的机器学习库,支持常见的机器学习算法,包括分类、回归、聚类、降维等。MLlib 的设计目标是高效且易于扩展,能够处理大规模数据集。

5. GraphX

GraphX 是 Spark 用于图处理的组件。它将图数据模型与并行计算引擎相结合,支持图形算法(如 PageRank 等)的高效分布式执行。

补充整理:

  1. Hadoop 与 Spark 的对比

    • Hadoop MapReduce:以磁盘为基础的计算模式,适合处理离线批量数据,处理速度较慢。
    • Spark:基于内存的计算模式,更加高效,尤其适合实时数据处理和复杂的分析任务。
  2. 分布式计算的演变

    • Hadoop 专注于海量数据的存储和处理,但存在 IO 瓶颈(主要是磁盘读写)。
    • Spark 通过在内存中进行数据操作,大大提高了数据处理的速度。它支持更多样化的计算任务,如实时流数据处理、机器学习等。
  3. 扩展性与应用场景

    • Spark 能够在小型单机环境中运行,也能扩展到大型集群中。适用于各种大数据场景,如 ETL(数据抽取、转换、加载)、实时数据分析、机器学习模型训练等。
    • Spark 与 Hadoop HDFS 集成良好,HDFS 负责数据存储,Spark 负责计算;此外,Spark 还能与 Kafka、Cassandra、HBase 等其他分布式系统集成。

Spark的特点

1. 速度快

  • Spark支持内存计算,并且通过DAG(由向无环图)执行引擎支持无环数据流,所以计算同样的任务在内存中比Hadoop的MR快100左右,在硬盘中快10倍左右。

Spark VS HadoopMR

NOTE
  1. Spark处理数据时,中间结果通常存储与内存中
  2. Spark提供了丰富的算子(API 即Spark自带的函数),可以使得复杂的任务在一个Spark程序中完成

2. 易于使用

  • Spark是由Scala语言编写的,但是支持Java、Python、R、SQL、Scala等多种语言,有良好的语言适应性,而且且提供大量的API方便编程

3. 通用性强

  • 拥有Spark SQL 、 Spark Streaming 、 MLlib 、 GraphX 等多种工具库

Spark通用性

4. 运行方式

  • Spark支持多种运行方式,包括在Hadoop,Mesos上,也支持在Standalone上独立运行,同时支持k8s(Kubernetes)上运行

Spark可运行的平台

  • 对于数据源而言,Spark主持从HDFS、HBase、Kafka、Cassandra等多种途径获取

Spark支持的数据源