雅虎利用灵活VM优化Apache Spark集群

Yahoo 运营着连接数亿用户的全球媒体与科技平台,其数据基础设施需要持续高速运行的分析工作负载。在强截止时间驱动的数据环境中,依赖固定虚拟机(VM)配置会导致系统脆弱:若某种特定机器形状在某个区域出现容量短缺,基于 Managed Service for Apache Spark(原名 Dataproc)的集群预配就会延迟,甚至阻塞关键数据管道。

Yahoo 的解法是使用灵活 VM(Flexible VMs)——即定义一个可接受 VM 形状的排名列表,让系统自动搜索区域内的可用区(需启用 Auto-Zone placement),无需人工干预即可动态吸收资源波动。这套方案建立在 Yahoo 将本地 Hadoop 和大数据资产迁移到 Google Cloud 的现代化历程之上,为高规模批处理和流式分析提供了动态资源弹性。

配置灵活集群需遵循几条规则:必须传入 region 或空 zone 字符串以启用自动区域搜索;如果使用自动扩缩,列表内所有 VM 形状必须保持相近的 vCPU 和内存大小(即使来自不同 VM 系列),因为最小的 CPU 与内存比决定了有效容器大小,从而避免性能降级;混合 VM 形状时可能需要显式覆盖 YARN 或 Spark 资源分配属性,以保持运行时行为一致。

灵活 VM 的两种主要作用:提高集群创建成功率(首选类型缺货时自动回退到排名靠后的选项)和改善区域资源利用率(Auto-Zone 搜索整个区域寻找容量)。官方提供了 gcloud CLI 和 Dataproc API 示例,开发团队可以将这些容量策略嵌入自动化流水线或 Airflow DAG,使用 instanceFlexibilityPolicy 字段设定首选形状和可靠回退。

实施效果:Yahoo 将区域容量短缺导致的集群预配失败率降低了 85%,数据基础设施能够自动处理容量约束,无需人工介入即可成功预配资源,从而保障了全球媒体平台的持续工作负载执行,避免了下游处理延迟。

战略价值:采用灵活计算栈将环境转变为动态资源池,使得工作负载无论供应波动如何都能可靠获得计算能力,同时便于硬件现代化——优先使用新 VM 代际,同时保留旧型号作为回退。建议的起步路径包括:审计现有工作负载、标准化资源政策、利用灵活承诺使用折扣(Flex CUDs)保持成本可预测性。

How Yahoo Optimizes Apache Spark with Flexible VMs

查看原文