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 17、21 |
支持过往版本 |
| 启动时间 | 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,以充分发挥数据的潜力。