社交媒体应用的功能迭代速度极快。Snapchat 月活跃用户数超过 9.4亿,每一项新功能在发布前都会经过严格的 A/B 测试。其母公司 Snap 每天早上在 3小时的窗口期内,使用 Apache Spark 分布式框架处理 超过10 PB 的数据,每月运行数千个实验,测量近 6,000个 指标(用户参与度、应用性能、变现情况)。
为了更高效地支撑这一规模,Snap 在谷歌云服务上采用了 NVIDIA 的开放数据处理库 cuDF,用于加速 Apache Spark 应用。
一、核心成果:更快、更省、更可持续
根据 Snap 内部数据(采集时间为1月1日至2月28日),从 CPU 迁移到 GPU 后:
| 指标 | 提升效果 |
|---|---|
| 处理速度 | 在相同机器数量下,运行速度提升 4倍 |
| 每日成本 | 在 Google Kubernetes Engine 上使用 NVIDIA GPU,节省 76% |
| GPU 需求 | 实际只需 2,100个 GPU 同时运行,低于最初预测的 5,500个 |
Snap 高级工程经理 Prudhvi Vatala 表示:
“将数据基础设施从 CPU 迁移到 GPU,使我们能够随着时间的推移,让实验高效覆盖更多功能、更多指标和更多用户。我们能够运行的实验越多,就能够为 Snapchat 用户提供越多的创新体验。”
他还指出:
“我们曾规划了一个旨在扩大实验规模的宏伟路线图,但根据现有的基础设施,这将导致计算成本急剧飙升。切换到使用 cuDF 的 GPU 加速管道,我们获得了一种拉平扩展成本曲线的方式,结果非常惊人。”
二、技术方案:cuDF + Google Cloud + Kubernetes
Snap 采用的方案包含以下组件:
NVIDIA cuDF:GPU DataFrame 库,用于加速数据处理
Apache Spark 加速器:让开发者无需更改代码即可在 NVIDIA GPU 上运行现有 Spark 应用
Google Kubernetes Engine (GKE):基础设施管理服务
NVIDIA L4 GPU:运行在谷歌云 G2 虚拟机上
cuDF 微服务套件:自动对 Spark 工作负载进行资格认证、测试、配置和优化
A/B 测试团队后端工程师 Joshua Sambasivam 表示:
“当我看到最初实验的结果时,我感到非常惊讶,我们节省的成本远高于预期。Spark 加速器非常适合我们的工作负载。”
三、未来计划:扩展至更多生产工作负载
Snap 团队目前已经迁移了两个最大的管道,并计划将 Spark 加速器集成到 A/B 测试团队之外的更广泛的生产工作负载中。
Vatala 总结道:
“我们没有意识到自己会坐拥这块金矿。到目前为止,我们已经迁移了两个最大的管道,但未来还有很多机会。”
四、对企业客户的启示:为什么值得关注?
如果您所在的企业每天需要处理大量数据(10 PB 级别)、运行大规模 A/B 测试或使用 Apache Spark 进行数据分析,Snap 的案例提供了清晰的参考:
无需改代码:现有 Spark 应用可直接在 GPU 上运行,降低迁移门槛
线性扩展成本:GPU 加速可以拉平扩展成本曲线,避免成本急剧飙升
实际验证:在 Google Cloud + Kubernetes + NVIDIA L4 GPU 的生产环境中验证
全栈优化:从硬件(L4 GPU)到软件(cuDF、Spark加速器)再到编排(GKE)的完整方案
WeChat
Profile