• 主题
  • 什么是 Apache Spark?

什么是 Apache Spark?

Apache Spark 是一个用于进行大规模数据处理的统一分析引擎,内置了 SQL、流式传输、机器学习和图处理模块。Spark 可以在云中针对不同的数据源在 Apache Hadoop、Apache Mesos、Kubernetes 上运行,也可以独立运行。

一个常见问题是,何时使用 Apache Spark,何时使用 Apache Hadoop?两者都是目前市场上最杰出的分布式系统,也是功能类似的 Apache 顶级项目,经常一起使用。Hadoop 采用 MapReduce 范式,主要用于大量磁盘操作。Spark 是一种更灵活、通常费用更高的内存中处理架构。了解每一种产品的特性有助于您决定何时使用何种产品。

了解如何使用 Dataproc 在 Google Cloud 上以更简单、更经济实惠的集成方式运行 Apache Spark 集群。

Apache Spark 概览

Spark 生态系统包含五个关键组件:

1. Spark Core 是一个通用的分布式数据处理引擎。在其上有 SQL、流式处理、机器学习和图计算的库,所有这些库都可以在应用中一起使用。Spark Core 是整个项目的基础,提供分布式任务调度、安排和基本的 I/O 功能。

2. Spark SQL 是用于处理结构化数据的 Spark 模块,它支持访问各种数据源的通用方法。它支持您使用 SQL 或熟悉的 DataFrame API 在 Spark 程序中查询结构化数据。Spark SQL 支持 HiveQL 语法,并允许访问现有的 Apache Hive 仓库。服务器模式通过 Java 数据库连接或开放数据库连接提供标准连接。

3. Spark Streaming 支持轻松构建可扩缩、具有容错性的流式解决方案。它将集成了 Spark 语言的 API 引入流处理中,因此您可以像编写批量作业一样编写流式作业。Spark Streaming 支持 Java、Scala 和 Python,并且具有开箱即用、有状态的“正好一次”语义。

4. MLlib 是 Spark 可扩容的机器学习库,它所提供的工具可以简化实际的机器学习并为其扩容。MLlib 包含许多常见的学习算法,例如分类、回归、推荐和聚类。它还包含工作流和其他实用程序,包括特征转换、机器学习流水线构造、模型评估、分布式线性代数和统计信息。

5. GraphX 是用于图和图并行计算的 Spark API。它非常灵活,可以无缝处理图和集合 - 统一提取、转换、加载;进行探索性分析;在一个系统中迭代图计算。除了灵活性较高的 API 外,GraphX 还提供了多种图算法。它在性能上比肩最快的图系统,同时保留了 Spark 的灵活性、容错性和易用性。

Apache Spark 有哪些优势?

速度

您可以使用比 Hadoop MapReduce 快 100 倍的速度运行工作负载。Spark 采用最先进的有向无环图调度器、查询优化器和物理执行引擎,实现了批处理和流处理数据的高性能。

易用性

Spark 提供了 80 多个高级运算符,可轻松构建并行应用。您可以通过 Scala、Python、R 和 SQL Shell 以交互方式使用 Spark 来快速编写应用。

通用性

Spark 支持很多库,包括 SQL 和 DataFrame、用于机器学习的 MLlib、GraphX 和 Spark Streaming。您可以在同一应用中顺畅地组合使用这些库。

开源框架创新性

与致力于开发专有解决方案的内部团队相比,Spark得到了全球性社区的支持,各地的专业人员团结在一起,以更快、更高效的方式引入新概念和功能。开源社区的集体力量能够提供更多想法、以更快的速度进行开发,以及在出现问题时及时进行问题排查,进而缩短产品上市时间。

为何要选择 Spark 而非仅支持 SQL 的引擎?

Apache Spark 是一个快速通用集群计算引擎,可以部署在 Hadoop 集群中或以独立模式部署。借助 Spark,程序员可以使用 Java、Scala、Python、R 和 SQL 快速编写应用,这使得具有统计学经验的开发者、数据科学家和高级商业人士都可以使用它。使用 Spark SQL,用户可以连接到任何数据源,并将其呈现为可供 SQL 客户端使用的表。此外,交互式机器学习算法可以在 Spark 中轻松实现。

使用像 Apache ImpalaApache HiveApache Drill 这样仅支持 SQL 的引擎,用户只能使用 SQL 或类似 SQL 的语言来查询存储在多个数据库中的数据。这意味着与 Spark 相比,这些框架要小一些。

公司如何使用 Spark?

许多公司都在使用 Spark 帮助其简化具有挑战性的计算密集型任务,即处理和分析大量实时或归档数据,包括结构化和非结构化数据。Spark 还能让用户无缝整合相关的复杂功能,如机器学习和图算法。

数据工程师

数据工程师使用 Spark 进行编码及构建数据处理作业 - 可以选择使用扩展的语言集进行编程。

数据科学家

数据科学家可以将 Spark 与 GPU 结合使用,获取更丰富的分析和机器学习经验。使用熟悉的语言更快速地处理大量数据的能力有助于加速创新。

Dataproc 是一项快速、易用、全代管式云服务,能够以更简单、更经济实惠的集成方式运行 Apache Spark 和 Apache Hadoop 集群。它与其他 Google Cloud 服务完全集成,满足关键的安全、治理和支持需求,能够为您提供一个完整而强大的数据处理、分析和机器学习平台。

Google Cloud 的大数据分析工具(例如 BigQueryAI Platform NotebooksDataflow)可让您构建环境启发式应用和新的分析解决方案,并将数据转化为富有实用价值的分析洞见。