“我们认为 Apache Beam 的运行器不可知性提供了灵活性,并为我们的流处理平台提供了未来保障,因为它可以与新开发的运行时环境兼容。Apache Beam 使 Intuit 的流处理民主化,并推动了许多批处理作业迁移到流应用程序。”
为 Intuit 提供流媒体和实时机器学习支持
背景
Intuit® 是一个全球技术平台,提供一系列金融和营销自动化解决方案,包括 TurboTax、QuickBooks、Mint、Credit Karma 和 Mailchimp,其使命是为全球的繁荣发展提供动力。超过 1 亿人信赖 Intuit 产品来处理他们的税务申报、小企业会计和个人财务管理。
Intuit 开发了一个内部自助式流处理平台,该平台利用 Apache Beam 加快了实时应用程序的上市时间。
Intuit 数据基础设施团队的工程经理 Nick Hwang 分享了 Apache Beam 如何用于构建 Intuit 的自助式流处理平台的故事,该平台为开发人员提供了一种简单、直观的开发、部署和管理流管道的方式。
自助式流处理
在寻找人工智能和数据驱动的解决方案来增强其金融管理产品组合时,Intuit 数据基础设施和产品团队看到了对自助式数据处理平台的巨大需求。他们的数据工程师和开发人员需要一条“铺好的道路”来开发实时应用程序,同时抽象出底层的运营和基础设施管理细节。
2019 年,Intuit 的数据基础设施团队开始设计他们的流处理平台,其使命是让开发人员专注于业务逻辑,而平台则代表他们处理所有运营和基础设施管理细节。
我们平台的承诺是,您不必一开始就担心部署。您只需更新代码工件,添加所需的转换,将管道指向您的源和接收器,我们负责剩下的工作。您单击一个按钮,平台将为您部署作业。
Apache Beam 被选为 Intuit 流处理平台的核心数据处理技术,因为它灵活,可以从各种 编程语言 和 执行引擎 中进行选择。Apache Beam 的可移植性和易于采用为最初平台版本的发布提供了必要的“启动”帮助,该版本使用 Apache Samza 作为执行引擎,以及 Apache Beam 流管道从 Kafka 读取数据并写入数据。
我们选择 Apache Beam 的主要原因是运行器不可知性。我们的平台是一项长期投资,我们希望为未来可能出现的一切做好准备。
2020 年 1 月,Intuit 的流处理平台第一个版本 发布。很快,Apache Beam 对执行引擎的抽象证明了它的优势,允许 Intuit 将其数据处理基础设施从 Apache Samza 无缝切换到 Apache Flink,而不会造成任何用户痛点或生产停机时间。
当我们决定从 Apache Samza 迁移到 Apache Flink 时,我们有几十个用例和管道在生产中运行,但没有一个用户需要更改他们的代码。Apache Beam 的优势在那种情况下真正展现出来。
Intuit 流处理平台团队受益于 Apache Beam 的可扩展性,它使他们能够轻松地用自定义 SDK 层包装 Apache Beam,以更好地与他们的特定 Kafka 安装互操作。他们将 SDK 与图形用户界面配对,以提供一种可视化方式来设计、管理、部署、监控和调试数据处理管道,以及 Argo Workflows 以便于在 Kubernetes 上部署。Intuit 流处理平台团队还开发了内部服务,以帮助按类别过滤和管理指标,以便在路由到 Wavefront 时对其进行改进,从而提高对管道运行状况的可观察性和监控。Apache Beam 的 内置 I/O 连接器 有助于为各种接收器和源提供本机支持。
流处理平台为开发人员提供了一个全栈环境,可以可视化地设计流管道;测试、配置和将它们提升到生产;并在生产中监控管道。开发人员使用 Beam Java SDK 在流处理平台的应用程序层(见下文图层)创建 Apache Beam 管道。Intuit 的图形用户界面(UX 层)使您可以可视化地配置接收器和源、计算资源缩放、管道生命周期管理、监控和指标。在控制层,基于 Spring 的 后端维护平台上运行的所有管道的元数据,并与 Intuit 生态系统交互,以进行数据治理、资产管理和数据血缘。UX 层与控制层通信,控制层调用 Argo Workflows 在托管在 Kubernetes 上的 Apache Flink 运行时层上部署 Apache Beam 管道。
凭借开箱即用解决方案的承诺,Intuit 的流处理平台旨在允许可重复使用的模板化实现来加速通用用例的开发,同时仍然提供自定义独立应用程序的能力。例如,Intuit 创建了自己的 DSL 接口,以提供针对点击流主题简单转换的自定义配置。
该平台使流处理的采用变得更加容易,为 Intuit 的数据工程师和开发人员提供了自助服务功能。
我们平台的整体理念是最大程度地降低进入门槛,以便快速启动和运行您的实时应用程序。例如,“我只想在一个 Kafka 主题上运行这个 SQL 查询并将其写入某个接收器,告诉我如何在一天内完成它,而不是两个月。”
为实时数据提供支持
Apache Beam 支持的统一 点击流 处理是 Intuit 用例中最具影响力的用例。Apache Beam 流管道从 Intuit 产品的大型产品组合中消费、聚合和处理来自 Kafka 的原始点击流事件,例如网站访问。点击流管道使用地理位置和其他新功能丰富数据,对数据进行会话化和标准化,以便写入 Kafka 并供下游应用程序使用,每秒处理超过 60,000 笔交易。Intuit 数据基础设施团队意识到 Apache Beam 复合转换的价值,例如 窗口、计时器 和 有状态处理,用于对数据新鲜度进行细粒度控制。Apache Beam 流处理允许 Intuit 每分钟而不是每 4 小时使用新功能丰富点击流数据,使实时数据的可用性提高了 240 倍,并将与内存和计算资源相关的成本降低了 5 倍。
Intuit 从业务角度来看的另一个核心 Apache Beam 用例是功能存储摄取平台,它支持新的 AI 和 ML 支持的客户体验。多个 Apache Beam 管道从 Kafka 中获取平台上其他 Apache Beam 管道生成的实时功能,并将它们写入 Intuit 功能存储,用于 ML 模型训练和推断。生成实时功能的管道还可以使用平台提供的一项功能,即在需要重新提取历史数据时“回填”功能,即使这些功能是有状态的。相同的流处理代码将首先从数据湖中读取 Intuit 的历史数据,重新处理数据以引导管道的状态,然后切换到使用已引导状态的流上下文。这一切都在将回填过程的复杂性从拥有管道的机器学习工程师或数据科学家面前抽象出来的情况下完成。
结果
自从 Intuit 流处理平台发布以来,Apache Beam 支持的流管道数量每年增长 2 倍,截至 2022 年 7 月,已达到 160 多个运行在 6 个不同的 Kubernetes 集群中的 710 个节点上的活跃生产管道。Apache Beam 管道处理约 173 亿个事件和 82 TB 的数据,在高峰季节每秒处理 80 万笔交易。
Apache Beam 及其对执行引擎的抽象使 Intuit 能够在不重写代码到新的执行环境运行器的情况下,无缝切换其主要运行器。它还通过为 Intuit 流处理平台提供未来保障,以在新的执行运行时不断发展时提供灵活性,增强了信心。Apache Beam 有助于降低进入门槛,在 Intuit 的开发团队中推广流处理,并确保为没有 Apache Flink 或其他流数据处理工具经验的工程师提供快速入职。Apache Beam 推动了从批处理作业到流应用程序的迁移,为 Intuit 客户带来了新的实时和 ML 支持的体验。
借助 Apache Beam,Intuit 将生产级流数据管道的开发和发布速度提高了 3 倍,从 3 个月缩短到 1 个月。预生产管道的设计时间缩短至仅 10 天。从批处理作业迁移到 Apache Beam 流管道导致内存和计算成本优化了 5 倍。Intuit 继续为新的用例开发 Apache Beam 流管道,还有 150 多个管道正在预生产中,并即将投入生产。
了解更多
这些信息对您有帮助吗?