数据中心/云端

在 Google Cloud Dataproc 上节省 Apache Spark 大数据处理成本

根据 IDC 的数据,每年生成的数据量呈指数级增长。 IDC 的全球 DataSphere 预测 到 2026 年,世界将产生 221 ZB 的数据 。这些数据包含了惊人的信息。但随着数据量的增长,处理成本也会随之增加。作为一名数据科学家或工程师,你肯定会感受到数据处理工作运行缓慢的痛苦。

Apache Spark 在 2010 年代以数千 TB 的规模解决了这个数据处理问题。然而,在 20 世纪 20 年代,需要处理的数据量已经超过了当前基于 CPU 的基础设施计算能力。

对于拥有数十万 TB 的组织来说,这种基于 CPU 的基础架构限制了它们,并增加了巨大的扩展成本。计算限制限制了他们利用数据扩展见解、获取可用于训练 AI / ML 管道的数据以及实验新模型类型的能力。

旧规则成立: 80% 的时间用于数据准备,而不是模型开发,这阻碍了数据科学的发展。

为了解决这些挑战, Apache3.x 的最新更新提供了新的优化功能,如资源感知调度和列式数据处理。使用针对 Apache Spark 的 RAPIDS 加速器,可以在 NVIDIA GPU 上自动调度作业,以加快数据处理速度。此解决方案要求零代码更改。

我们很高兴宣布与谷歌云 Dataproc 的新集成。在云上,运行数据处理作业的成本比同等的基于 CPU 的基础架构低 80% ,加速速度高达 5 倍。

Dataproc 在云中提供完全管理的 Apache Spark 服务。凭借平均 90 秒内创建任何 Spark 集群的能力、企业级安全性以及与其他 Google 云服务的紧密集成, Dataproc 为部署 Apache Spark 应用程序提供了强大的平台。

本文介绍了如何在 Dataproc 上的 Spark 工作负载上开始使用 GPU 加速。我们讨论了 CPU 到 GPU 迁移的不同挑战,并解释了如何加快数据处理管道。我们重点介绍了 Dataproc 的新 RAPIDS 加速器用户工具,这些工具有助于为您成功做好准备,例如提供关于哪些工作在 GPU 上表现最好的见解。

加快数据处理作业

通过将 RAPIDS cuDF 库与 Apache Spark 的横向扩展功能相结合,数据从业者可以 使用 GPU 快速且经济高效地处理数据 。用于 Apache GPU 的 RAPIDS 加速器是一个插件,它使您能够通过利用 Spark 来加速 Apache Spark 3 个作业。

无需您更改 API , RAPIDS Accelerator for Apache Spark 工具会尽可能自动将 GPU 支持的 SQL 操作替换为 GPU 加速版本,而在其他情况下则返回 Spark CPU 。因为不需要代码或主要的基础结构更改,所以您可以迭代设计工作负载,以优化性能和预算。

最后,新的 RAPIDS Accelerator user tools for Dataproc 提供了一组功能,在将 Spark 作业迁移到 GPU 时支持数据科学家。这包括差距分析和工作量建议。数据从业者可以更好地确定哪些 Spark 作业在迁移到 GPU 时会看到最佳的加速。

CPU 到 – GPU 迁移的难点

尽管 RAPIDS Accelerator for Apache Spark 提供了对 GPU 的支持迁移,但 Spark 用户通常不愿意进行迁移,因为在迁移过程中存在假定的痛点。在这篇文章中,我们将深入探讨这些常见问题,并展示用于 Dataproc 的新 RAPIDS Accelerator 用户工具的功能如何缓解这些问题。

挑战 1 :将 Spark 工作岗位转移到 GPU 的成本不易预测

许多数据从业者认为在 GPU 上运行应用程序会更昂贵,尽管花费的时间更少。实际上,这种情况很少发生。

Resolution: RAPIDS Accelerator for Apache Spark 工作负载确认工具分析基于 CPU 的 Spark Application 生成的 Spark 事件日志。它为您提供了前期成本估算,以帮助量化将 Spark 应用程序或查询迁移到 GPU 的预期加速和成本节约。

挑战 2 :尚不清楚哪些 Spark 工作适合 GPU 迁移

并非所有应用都适用于 GPU 加速。您不希望将 GPU 资源分配给 Spark 作业,该作业不会从由此产生的加速中受益。

Resolution: 工作负载确认工具还使您能够预先确定建议在 GPU 上运行哪些应用程序或作业,并为 Apache Spark 使用 RAPIDS 加速器。

挑战# 3 : 没有预先确定的方法来计算 GPU 资源需求

为任何工作负载选择和调整硬件大小,无论是 CPU 还是 GPU ,都可能具有挑战性。错误设置资源和配置可能会影响成本和性能。

Resolution: RAPIDS Accelerator for Apache Spark 引导工具支持为 GPU 群集应用 最佳配置设置 的功能。

挑战 4 : 可用于调谐和配置的参数太多

在 GPU 上运行作业时,您需要缩小 GPU 的最佳候选范围。这需要您提供优化和配置的最佳参数。

Resolution: 使用新的分析工具, CPU 作业运行中的 Spark 日志用于计算运行 Spark 应用程序的建议每个应用程序 Spark GPU 配置设置。

挑战 5 :计算基础设施的变化带来了高昂的成本

切换工作负载需要时间、金钱和人力。这成为了尝试新技术的障碍 ,即使它解决了关键的痛点,因为在业务关键型应用程序中进行投资的风险。

Resolution: 在云上,交换机被简化。数据科学家可以在不修改代码的情况下对其进行测试,而且成本最低。在使用 Dataproc 时,您每小时租用一次基础设施,这样就不需要为运送到数据中心的硬件支付预付款。您还可以跟踪成本和性能差异。

如果您选择切换回 CPU ,则可以毫不费力地恢复。

在 Google Cloud Dataproc 中使用 RAPIDS Accelerator for Apache Spark 迁移工作负载

既然我们已经讨论了 RAPIDS 加速器如何在降低成本的同时加快 Spark 工作,下面是如何在实践中使用它。

资格

资格鉴定有助于数据科学家确定和评估 RAPIDS Accelerator for Apache Spark 的成本节约和加速潜力。鉴定要求为 GPU 迁移选择活动 GPU Spark 集群。鉴定结果显示了推荐用于 RAPIDS Accelerator for Apache Spark 的应用程序列表,预计可节省费用并加快速度。

独自创立

Bootstrap 根据集群形状为 Apache RAPIDS 配置提供并更新 GPU Dataproc 集群,并优化 RAPIDS 加速器。这确保了在 GPU Dataproc 集群上执行的 Spark 作业可以使用所有资源并无错误地完成。

调谐

Bootstrap 还可确保作业在功能上通过,但调优会根据使用 Spark 事件日志运行的初始(引导)作业,优化 RAPIDS Accelerator for Apache Spark 配置。输出显示了 Apache Spark 配置设置的推荐每个应用 RAPIDS 加速器。

通过这些新功能,您可以解决 CPU 到 GPU 的迁移问题,并加快 Spark 代码的实现,而无需增加成本或复杂流程的挑战。

后果

图 1 显示了在 Dataproc 和 NVIDIA GPU 上运行的 Spark NDS 基准测试*的加速和成本比较。在该基准测试中,与仅在 CPU 上运行相比,我们看到了接近 5 倍的速度提高和 78% 的成本降低。

The left bar chart shows that an NDS Power run runtime on a CPU-only four-node cluster takes 184 mins compared to the same four-node cluster with 8xT4 NVIDIA GPUs, which takes 34 mins. The right bar chart shows that the Google Cloud Dataproc cost for an NDS Power run on CPU nodes is $22.51 and $5.65 with NVIDIA T4 GPUs.
图 1 。条形图比较了仅使用 CPU 和 GPU 时 Google Cloud 上运行的 NDS 功率与相关成本

*基准和基础架构细节:仅 CPU 的四节点集群: 4xn1-standard-32 ( 32vCPU , 120GB RAM )。 GPU 四节点群集: 4xn1- 标准 -32 ( 32vCPU , 120 GB RAM )和 8xT4 NVIDIA GPU 。 NDS 代表 NVIDIA 决策支持基准,该基准源自 TPC-DS 基准,用于内部测试。 NDS 的结果与 TPC-DS 不可比。

接下来的步骤

使用 Apache Spark 的 RAPIDS 加速器,您可以利用 GPU 计算能力来实现 Spark 3 工作负载。通过对哪些作业最适合加速和优化 GPU 配置以及无 API 更改提供清晰的见解,您可以更快地运行关键 Spark 工作负载。这有助于您在相同的时间内处理更多数据,同时节省计算成本!

使用 Dataproc ,您可以在完全支持的环境中完成所有这些工作,并连接到 Google 云生态系统的其他部分。

通过在 GitHub 中遵循 CPU ,快速开始将 Spark CPU 工作负载迁移到 GCP Dataproc documentation 。您也可以下载 latest version of RAPIDS Accelerator

 

Tags