QCon 旧金山 2024 - Netflix 的增量数据处理

Jun He 在 QCon SF 2024 的演讲总结

Jun He 在 QCon SF 2024 上发表了题为《使用 Netflix Maestro 和 Apache Iceberg 进行高效增量处理》的演讲,展示了 Netflix 如何利用该系统减少处理时间和成本,同时提高数据的新鲜度。

背景与挑战

Jun He 是 Netflix 大数据编排团队的软件工程师,他首先讨论了 Netflix 如何利用数据来支持多种决策和功能,例如为用户推荐电影或决定是否终止某部剧集的制作。这些洞察来源于多个数据管道和机器学习工作流。然而,处理如此大规模的数据带来了三个主要挑战:数据准确性、数据新鲜度和成本效率。

延迟到达数据事件的问题

Netflix 从用户设备(如笔记本电脑和手机)异步获取事件数据,这些事件可能在发生很久之后才被接收或处理。在事件被处理之前,数据是不准确且“过时”的。如果系统设计为修复数据需要重新处理大量事件,这将导致成本效率低下。

增量处理的解决方案

增量处理可以解决上述挑战,但它需要满足两个条件:捕获增量状态变化和跟踪变化是否已被处理。Netflix 的解决方案是增量处理支持系统(IPS),该系统由两个主要组件构建:Apache Iceberg 和 Maestro。

Apache Iceberg

Iceberg 是一种“用于大规模分析表的高性能格式”。Netflix 使用 Iceberg 简化了许多数据管理任务,特别是支持无需读取数据即可捕获变化。Netflix 使用 Iceberg 管理“超过一百万个表”,并有“数十万个工作流”在这些数据上运行。

Maestro

Maestro 是 Netflix 开发的“通用工作流编排器”。Netflix 选择自研 Maestro 而不是采用其他编排器(如 Airflow),部分原因是其大规模需求。Maestro 还与其他 Netflix 工具(如 Metaflow)集成良好。

IPS 的实现与效果

IPS 的典型变更捕获接口是一个表,其模式与“主”表匹配,但仅包含更改的数据;这将在 SQL 查询中使用,通过与变更捕获表执行 JOIN 操作以仅处理更改的数据。然而,并非所有现有工作流都能使用此接口,因此团队开发了两个额外的原语:IpCapture 和 IpCommit。这两个原语可以分别添加到现有工作流的开头和结尾,无需其他修改。He 举例说明了如何以最小修改采用 IPS,并指出某些工作流的处理成本降低到原始成本的 10%。

常见的 IPS 使用模式

在推出 IPS 后,Netflix 团队发现了三种常见的使用模式:将增量处理的数据追加到目标表中;使用更改数据作为“行级过滤器”以减少转换;在业务逻辑中使用更改数据的范围参数。在问答环节中,有观众询问不同使用模式的成本效率。He 指出,前两种模式通常比第三种模式在成本上更具改进效果。

总结

Netflix 通过 Apache Iceberg 和 Maestro 构建的增量处理支持系统(IPS)有效解决了数据准确性、新鲜度和成本效率的挑战,显著降低了处理成本并提高了数据处理的效率。

阅读 20
0 条评论