主页 topics Apache Spark 什么是 Apache Spark?
深入了解 IBM Apache Spark 解决方案 订阅 AI 最新消息
包含云朵、饼图、图形的组合拼贴插图
什么是 Apache Spark?

Apache Spark 是一款速度极快的开源数据处理引擎,适用于机器学习和 AI 应用程序,由大数据领域最大的开源社区提供支持。

Apache Spark (Spark) 可轻松处理大规模数据集,是一种快速、通用的聚类系统,非常适合 PySpark。它旨在提供大数据所需的计算速度、可扩展性和可编程性,特别是流数据、图形数据、分析机器学习、大规模数据处理和人工智能 (AI) 应用程序。

Spark 的分析引擎处理数据的速度比一些替代方案快 10 到 100 倍,例如用于较小工作负载的 Hadoop(ibm.com 外部链接)。它通过在大型计算机集群之间分配处理工作流来扩展,并具有内置的并行性和容错能力。它甚至包括深受数据分析师和数据科学家欢迎的编程语言的 API,包括 Scala、Java、Python 和 R。

Spark 经常被拿来与 Apache Hadoop 比较,特别是与 Hadoop 的本地数据处理组件 Hadoop MapReduce 比较。Spark 和 MapReduce 之间的主要区别在于,Spark 处理数据并将其保存在内存中以供后续步骤使用,而无需写入磁盘或从磁盘读取数据,从而大大加快了处理速度。(关于 Spark 与 Hadoop 的比较和互补,您可以在本文其他部分找到更多信息)。

Spark 于 2009 年由加州大学伯克利分校的 AMPLab 开发。如今,它由 Apache 软件基金会维护,拥有最大的大数据开源社区,拥有超过 1000 名贡献者。它也是多种商业大数据产品的核心组件。

面向企业的生成式 AI 和 ML

了解生成式 AI 的主要优势,以及组织如何将生成式 AI 和机器学习融入到业务中。

电子书

注册以获取有关 AI 数据存储的电子书

Apache Spark 的工作原理

Apache Spark 具有分层的主/辅助体系结构。Spark Driver 是控制集群管理器的主节点,集群管理器负责管理从节点并向应用程序客户端交付数据结果。

根据应用程序代码,Spark Driver 生成 SparkContext,后者与集群管理器(Spark 的独立集群管理器或 Hadoop YARN、Kubernetes 或 Mesos 等其他集群管理器)配合使用,以跨节点分发和监控执行。它还创建弹性分布式数据集 (RDD),这是 Spark 具有卓越处理速度的关键。

弹性分布式数据集 (RDD)


弹性分布式数据集 (RDD) 是可容错的元素集合,可分布在集群中的多个节点上,并且可以并行处理。RDD 是 Apache Spark 中的基本结构。

Spark 通过以下两种方法加载数据:引用数据源,或使用 SparkContext 并行化方法将现有集合并行化,将数据缓存到 RDD 中进行处理。将数据加载到 RDD 后,Spark 会在内存中对 RDD 执行转换和操作,这是 Spark 速度的关键。Spark 还会将数据存储在内存中,除非系统内存不足或用户决定将数据写入磁盘进行持久保存。

RDD 中的每个数据集都划分为若干逻辑分区,这些分区可以在集群的不同节点上计算。用户可以执行两种类型的 RDD 操作转换和操作转换是用于创建新 RDD 的操作操作用于指示 Apache Spark 应用计算并将结果传递回驱动程序。

Spark 支持 RDD 上的各种操作和转换。这种分发由 Spark 完成,因此用户不必担心计算正确的分布。

有向无环图 (DAG)


与 MapReduce 中的两阶段执行流程相反,Spark 创建有向无环图 (DAG) 来调度任务和整个集群中工作节点的编排。当 Spark 在任务执行流程中操作并转换数据时,DAG 调度程序通过协调集群中的工作节点来提高效率。这种任务跟踪使容错成为可能,因为它将记录的操作重新应用于以前状态的数据。

数据框和数据集


除了 RDD,Spark 还能处理其他两种数据类型:DataFrame 和 DataSet。

DataFrame 是最常见的结构化应用程序编程接口 (API),表示包含行和列的数据表。尽管 RDD 一直是 Spark 的关键功能,但它现在处于维护模式。由于 Spark 的机器学习库 (MLlib) 广受欢迎,DataFrame 已成为 MLlib 的主要 API(一套可扩展的机器学习算法以及用于功能选择和构建 ML 管道的工具)。使用 MLlib API 时,请务必注意这一点,因为 DataFrame 提供跨不同语言(如 Scala、Java、Python 和 R)的一致性。

DataSet 是 DataFrame 的扩展,它提供类型安全、面向对象的编程接口。默认情况下,DataSet 是强类型 JVM 对象的集合,这与 DataFrame 不同。

Spark SQL 支持从 DataFrame 和 SQL 数据存储(例如 Apache Hive)中查询数据。Spark SQL 查询在以另一种语言运行时会返回 DataFrame 或 DataSet。

Spark Core


Spark Core 是所有并行数据处理的基础,负责处理调度、优化、RDD 和数据抽象。Spark Core 为 Spark 库、Spark SQL、Spark Streaming、MLlib 机器学习库和 GraphX 图形数据处理提供功能基础。Spark Core 和集群管理器在 Spark 集群中分发数据并将其抽象化。这种分发和抽象使得处理大数据变得非常快速且用户友好。

Spark API


Spark 包含各种应用程序编程接口 (API),旨在将 Spark 的强大功能带给最广泛的受众。Spark SQL 支持以关系方式与 RDD 数据进行交互。Spark 还为 Scala、Java、Python 和 R 提供有据可查的 API。Spark 中的每种语言 API 在处理数据的方式上都有其特定的细微差别。RDD、DataFrame 和 DataSet 在每种语言 API 中均可用。借助适用于各种语言的 API,Spark 使具有开发、数据科学、数据工程和统计背景的更多不同群体可以访问大数据处理。

Apache Spark 的优势

Spark 以多种方式加快开发和运营。Spark 将帮助团队:

  • 加速应用程序的开发:Apache Spark 的 Streaming 和 SQL 编程模型由 MLlib 和 GraphX 提供支持,可以更加轻松地构建应用程序,利用机器学习和图形分析。

  • 加快创新速度API 在处理半结构化数据和转换数据时提供易用性。

  • 利用开放技术进行优化OpenPOWER Foundation支持 GPU、CAPI Flash、RDMA、FPGA 加速和机器学习创新,以优化 Apache Spark 工作负载的性能。

  • 加速内存访问:Spark 可用于创建一个大内存空间,以进行数据处理,使更多高级用户能够通过使用 Python、R 和 Spark SQL 的接口访问数据。

Apache Spark 和机器学习

Spark 拥有各种库,可将功能扩展到机器学习、人工智能 (AI) 和流处理。

Apache Spark MLlib


Apache Spark 的其中一个关键功能是 Spark MLlib 中提供的机器学习功能,它为执行分类和回归、协同过滤、聚类、分布式线性代数、决策树、随机森林、梯度提升树、频繁模式挖掘、评估指标和统计提供开箱即用的解决方案。MLlib 的功能与各种数据类型相结合,使 Apache Spark 成为不可或缺的大数据工具。

Spark GraphX


除了具有 API 功能外,Spark GraphX 还专为解决图形问题而设计。GraphX 是一种图形抽象,它对用于图形和图形并行计算的 RDD 进行扩展。Spark GraphX 与存储互连信息或连接信息网络(如社交网络)的图形数据库集成。

Spark Streaming


Spark Streaming 是核心 Spark API 的扩展,支持对实时数据流进行可扩展的容错处理。当 Spark Streaming 处理数据时,它可以将数据传送到文件系统、数据库和实时仪表板,以便使用 Spark 的机器学习和图形处理算法进行实时流式分析。Spark Streaming 基于 Spark SQL 引擎构建,还支持增量批处理,从而更快地处理流数据。

相关链接

Hadoop

大数据分析

Spark 与 Apache Hadoop 和 MapReduce 对比

“Spark 与 Hadoop 对比”是网络上经常搜索的一个术语,但如上所述,Spark 更多的是对 Hadoop 的增强,更具体地说,是对 Hadoop 的本机数据处理组件 MapReduce 的增强。实际上,Spark 建立在 MapReduce 框架之上,如今,大多数 Hadoop 发行版都包含 Spark。

与 Spark 一样,借助 MapReduce,程序员能够编写应用程序,通过在大型计算机集群中并行处理数据集的一部分来更快地处理大型数据集。但是,MapReduce 在磁盘上处理数据,会增加读写时间,减慢处理速度,而 Spark 在内存中执行计算,速度要快得多。因此,Spark 处理数据的速度比 MapReduce 快 100 倍。

对于开发人员来说,Spark 内置的多种 API 比因难以编程而闻名的 MapReduce 更实用、更容易上手。与 MapReduce 不同,Spark 可以使用 Hadoop 的资源管理和作业调度框架 YARN 在 Hadoop 集群上运行流处理应用程序。如上所述,Spark 增加了 MLlib、GraphX 和 SparkSQL 的功能。而且,Spark 可以处理来自 Hadoop 应用程序之外的其他数据源的数据,包括 Apache Kafka

在其他方面,Spark 与 Hadoop 兼容且互补。它可以处理 Hadoop 数据,包括来自 HDFS(Hadoop 分布式文件系统)、HBase(在 HDFS 上运行的非关系型数据库)、Apache Cassandra(HDFS 的 NoSQL 替代方案)和 Hive(基于 Hadoop 的数据仓库)的数据。

相关解决方案
IBM Analytics Engine

Analytics Engine 是 Apache Spark 和 Apache Hadoop 的组合服务,用于创建分析应用程序。

深入了解 IBM Analytics Engine
IBM Watson Studio

在各种云环境中建立信任并扩展 AI。帮助数据科学家、开发人员和分析师构建、运行和管理 AI 模型并优化决策。

深入了解 IBM Watson Studio
Apache Spark on IBM Power

依靠针对极快和大规模数据处理而优化的开源集群计算框架。

深入了解 Apache Spark on IBM Power
IBM Spectrum Conductor

从容在本地和云端为多租户企业环境部署 IBM Spectrum Conductor 和其他服务。

深入了解 IBM Spectrum Conductor
资源 使用 Apache Spark 深入了解大数据分析

了解 Spark 如何帮助简化处理大量实时数据这一具有挑战性的计算密集型任务。

Hadoop 与 Spark:有什么区别?

了解 Hadoop 和 Spark 的相应架构,以及这些大数据框架在不同场景中的比较。

面向企业的生成式 AI 和 ML

了解生成式 AI 的主要优势,以及组织如何将生成式 AI 和机器学习融入到业务中。

查看开发人员完成一项或多项任务时可以遵循的详细步骤

每个教程都提供了实践说明,可帮助开发人员学习如何在其项目中使用这些技术。

将传统应用程序迁移到 Apache Spark

了解如何使用 Apache Spark 实现核心系统转型。获得敏捷性、性能并访问更广泛的生态系统。

采取后续步骤

借助 IBM watsonx.data 随时随地扩展所有数据的 AI 工作量,IBM watsonx.data 是基于开放式湖仓一体架构构建的适用数据存储。

深入了解 watsonx.data 预约实时演示