比较 Managed Service for Apache Spark 无服务器部署和集群部署

Managed Service for Apache Spark 现在包含之前的 "Dataproc on Compute Engine" (集群部署)和之前的 "Google Cloud Serverless for Apache Spark" (无服务器部署)产品选项。

虽然这两种选项都提供托管式、高度可伸缩、可用于生产用途且安全的 Spark 环境,该环境与 OSS 兼容,并完全支持各种数据格式,但它们在底层基础设施的管理和资源结算方式方面存在差异。请查看以下功能和使用场景,以帮助您选择 Spark 解决方案。

如需详细了解 Managed Service for Apache Spark 无服务器部署,请参阅 Managed Service for Apache Spark 无服务器部署概览

比较 Managed Service for Apache Spark 部署

下表列出了 Managed Service for Apache Spark 集群部署和无服务器部署之间的主要区别。

部署 无服务器 集群
处理框架 批量工作负载和交互式会话:Spark Spark。其他开源框架,例如 Hive、Flink、Trino 和 Kafka
无服务器
启动时间 50 秒 120 秒
基础架构控制
资源管理 无服务器 YARN
GPU 支持
交互式会话
自定义容器
虚拟机访问权限 (SSH)
Java 版本 Java 17、21 Java 17 及更早版本

确定最佳 Managed Service for Apache Spark 部署

本部分概述了 Managed Service for Apache Spark 的核心优势和主要使用场景,以帮助您为 Spark 工作负载选择最佳 Managed Service for Apache Spark 部署(集群或无服务器)。

概览

Managed Service for Apache Spark 部署在 控制程度、基础架构管理和结算模式方面有所不同。

  • 无服务器部署: Managed Service for Apache Spark 提供 Spark 作业即服务,在全托管式 Google Cloud 基础架构上运行 Spark。您只需为作业运行时长付费。
  • 集群部署: 提供 Spark 集群即服务,在您的 Compute Engine 基础架构上运行托管式 Spark。您只需为集群正常运行时间付费。

由于存在这些差异,每种 Managed Service for Apache Spark 部署都最适合以下使用场景:

部署 使用场景
无服务器 不同的专用作业环境
预定的批量工作负载
代码管理优先于基础架构管理
集群 长时间运行的共享环境
需要对基础架构进行精细控制的工作负载
迁移旧版 Hadoop 和 Spark 环境

主要区别

功能 无服务器部署 集群部署
管理模式 全托管式无服务器执行环境。 基于集群。您负责预配和管理集群。
控制和自定义 对基础架构的控制较少,专注于提交代码和指定 Spark 参数。 对集群配置、机器类型和软件的控制更强。能够使用抢占式虚拟机,并重复使用预留和 Compute Engine 资源容量。适用于依赖于特定虚拟机形态(例如 CPU 架构)的工作负载。
使用场景 临时查询、交互式分析、新的 Spark 流水线以及资源需求不可预测的工作负载。 长时间运行的共享集群、迁移具有自定义配置的现有 Hadoop 和 Spark 工作负载、需要深度自定义的工作负载。
操作开销 开销较低。 Google Cloud 负责管理基础架构、伸缩和预配,从而实现 NoOps 模型。Gemini Cloud Assist 可简化问题排查,而无服务器 自动调优 有助于提供最佳性能。 开销较高,需要进行集群管理、伸缩和维护。
效率模型 没有闲置计算开销:仅在作业运行时分配计算资源。没有启动和关闭费用。支持共享交互式会话,以提高效率。 通过在作业和团队之间共享集群来提高效率,采用共享多租户模型
位置控制 Managed Service for Apache Spark 支持区域级工作负载,无需额外费用,即可提供额外的可靠性和可获取性。 集群是可用区级的。在创建集群期间,系统可以自动选择可用区。
费用 仅按 Spark 作业执行时长(不包括启动和拆除)根据消耗的资源收费。按使用的数据计算单元 (DCU) 和其他基础架构费用收费。 按集群运行时间(包括启动和拆除)根据节点数收费。包括 Managed Service for Apache Spark 许可费和基础架构费用。
承诺使用折扣 (CUD) BigQuery 基于支出的 CUD 适用于 Managed Service for Apache Spark 作业。 Compute Engine CUD 适用于所有资源用量。
映像和运行时控制 用户可以固定到 Managed Service for Apache Spark 运行时次要版本;子次要版本由 Managed Service for Apache Spark 管理。 用户可以固定到 Managed Service for Apache Spark 映像次要版本和子次要版本。
资源管理 无服务器 YARN
GPU 支持
交互式会话
自定义容器
虚拟机访问权限 (SSH)
Java 版本 Java 1721 支持过往版本
启动时间 50 秒 120 秒

何时选择无服务器部署

Managed Service for Apache Spark 无服务器部署可将复杂的集群管理工作抽象化,让您能够专注于 Spark 代码。因此,它非常适合在以下数据处理场景中使用:

  • 临时查询和交互式分析: 对于使用 Spark 运行交互式查询和探索性分析的数据科学家和分析师,无服务器模型提供了一种快速入门的方式,无需专注于基础架构。
  • 基于 Spark 的应用和流水线: 在 Spark 上构建新的数据流水线或应用时,Managed Service for Apache Spark 可以消除集群管理的操作开销,从而显著加快开发速度。
  • 需求间歇性或不可预测的工作负载: 对于间歇性 Spark 作业或资源需求波动较大的作业,无服务器 自动扩缩 和按使用量付费的定价(费用适用于作业资源消耗)可以显著降低成本。
  • 专注于开发者工作效率: Managed Service for Apache Spark 无需预配和管理集群,从而加快了业务逻辑的创建速度,提供了更快的洞见,并提高了工作效率。
  • 简化操作并降低开销: Managed Service for Apache Spark 基础架构管理可减少操作负担和成本。

何时选择集群部署

您可以使用 Managed Service for Apache Spark 集群部署来运行 Apache Spark 和其他开源数据处理框架。 它提供高度的控制和灵活性,因此是以下场景中的首选:

  • 迁移现有 Hadoop 和 Spark 工作负载: 支持将本地 Hadoop 或 Spark 集群迁移到 Google Cloud。只需进行最少的代码更改即可复制现有配置,尤其是在使用旧版 Spark 时。
  • 深度自定义和控制: 允许您自定义集群机器类型、磁盘大小和网络配置。对于复杂、长时间运行的作业,此级别的控制对于性能调优和优化资源利用率至关重要。
  • 长时间运行的持久集群: 支持为多个团队和项目提供持续、长时间运行的 Spark 作业和持久集群。
  • 多样化的开源生态系统: 提供统一的环境,以便使用 Hadoop 生态系统工具(例如 Hive、Pig 或 Presto)运行数据处理流水线,并运行 Spark 工作负载。
  • 安全合规性: 能够控制基础架构,以满足特定的安全或合规性标准,例如保护个人身份信息 (PII) 或受保护健康信息 (PHI)。
  • 基础架构灵活性: 提供抢占式虚拟机,并能够重复使用预留和 Compute Engine 资源容量,以平衡资源使用并促进您的云基础架构策略。

总结

决定使用 Managed Service for Apache Spark 集群部署还是无服务器部署取决于您的工作负载要求、操作偏好和首选控制级别。

  • 选择 Managed Service for Apache Spark 无服务器部署 ,因为它易于使用,对于间歇性工作负载具有成本效益,并且能够消除基础架构管理的开销,从而加快新 Spark 应用的开发速度。
  • 如果您需要最大限度的控制、需要迁移 Hadoop 或 Spark 工作负载,或者需要持久、自定义的共享集群环境,请选择 Managed Service for Apache Spark 集群

在评估本部分列出的因素后,选择最有效且最具成本效益的 Managed Service for Apache Spark 部署来运行 Spark,以充分发挥数据的潜力。