NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

专访 Frances Perry:关注 Apache Beam

  • 2017-07-18
  • 本文字数:3604 字

    阅读完需:约 12 分钟

本文要点

  • Beam 是一个“胶水项目”,表达了一种将多个复杂开源项目连接在一起的理念。Beam 的编程模型允许以统一的编程范式实现批处理和流处理。
  • 抽象 API 实现了多个运行时之间的可移植性,包括 Spark Flink Apex Calcite
  • Beam 采用了可配置流水线,实现了批处理和流处理的统一。
  • Beam 聚焦于被数据工程和分析社区所广泛采用的编程语言,当前支持 Python 和 Java SDK。
  • Beam 意在概化各种数据处理系统,并对它们的进一步发展产生影响。

Apache Beam 是一种统一了批处理和流处理的编程模型,在今年年初成为了 Apache 软件基金会的顶级项目。Beam 最初是作为Google Cloud Platform 中 DataFlow 服务的一个组件。自去年年初以来,Beam 在被搜索频次上逐渐取得了稳步增长,其社区电子邮件的分发列表也在同步增长。对Beam 的搜索主要针对一些反复出现的问题,这些问题被频繁提及。

对于选用Beam 的理由,有一系列的帖子、技术演讲和会议讨论已经给出了解释。其中,Beam 的可移植性和良好的发展前途,使得Beam 比其它任何新的数据流水线项目都更胜任于普遍存在并不断增加的流数据,这也是Beam 项目被广泛采用的最重要动机之一。针对Beam 的编程模型以及为什么要选用Beam 构建新数据流水线等问题,InfoQ 对Beam 项目管理委员会(PMC,Project Management Committee)顾问和Google DataFlow 工程师 Frances Perry 进行了一次深度采访。

InfoQ:从理念上看,如果仅是根据 Beam 的语义和概念性术语,感觉 Beam 在考虑数据流水线问题时,应是采用了一种“数据分析优先”的方法。您能从 Beam 的核心理念和语言与之前产品的差异上,介绍一下对 Beam 的考虑过程与设计吗?

Frances Perry:我很喜欢“Beam”一词!Beam 在设计上就是要将用户的数据和程序与底层运行时的细节分离开来。这意味着用户在使用 Beam 时,可以聚焦于数据的属性(受限的,或是非受限的?还是潜在无序的?),以及想要在数据上执行的算法(求和、连接、过滤、直方图等)。用户无需指定底层运行时的相关信息,例如,应如何对数据进行分片以获得更好的性能,当前数据延迟情况如何等。这的确十分重要,因为上述事情并非一成不变的。数据、代码和环境会发生改变,这会使最为细致的手工调优也可能失败。

InfoQ:Beam 核心项目主要关注于对 Python API 的完全支持。即便是在 Beam 开源前,Python API 是否一直是项目的焦点?提供对 Python 的支持,对底层的 Java API 有着怎样的影响?

Frances Perry: Python 一直是 Beam 项目的关注点。我们一直谨记需要去满足开发人员的最新需求,尤其是对各种语言的喜好。在项目早期,我们得到的经验教训就是,如果你力图在多种语言上证实同一系列的概念,这就变成了一个十分微妙的平衡协调问题。你需要做抽象,以对齐跨语言的特性,否则在细微差异的追踪、概念的理解等问题上完全是一场噩梦。但是从另一方面看,需要让开发人员认为每个 SDK 是原生的。Python 开发人员想要类似于 Python 那样的 API,而非看上去像是由 Java 开发人员编写的。

InfoQ:Beam 在不断的成熟,添加了对更多处理后端的支持,您以及其他的项目主管是如何看待这一过程中所存在的长期挑战?

Frances Perry: Beam 是一个“胶水”项目,其核心抽象表达了这样一种理念,就是通过让多个复杂项目共同工作的方式,将各个项目连接在一起。这样的多点集成不仅是一种关键能力,而且表现了一种真实的挑战。我们自项目起始时,就将 Beam 设计为可扩展的。我们一开始就给出了多个 Runner(译者注:Runner 的中文可理解为“执行引擎”或“计算引擎”)这一理念,此后我们也认识到需要提供针对多种 SDK、多种 IO 连接器和多种文件系统的选项。但是正如大家都知道的,没有必要为概化一件事情而构建一个 API,正确的做法是给出多个工作实现。虽然多个 Runner 所做的事情非常相似,但是各个 Runner 实现上略有不同。因此,解决如何构建能在可移植性和表现力间取得平衡的正确抽象这一问题并非易事。这正是各个社区中的大众经验的最有价值之处。

InfoQ:Beam 所支持的后端在不断的增加,这对 Beam 核心抽象的可用性提出了挑战。例如,在 Beam 的核心语义中,各处理引擎间存在着重叠的特性集。那么该项目是否存在着扇出(Fan-out)风险?

Frances Perry:我们多次听说了这样的担心,即 Beam 将最终演化为各种后端引擎的最小公共特性集,进而变为一个索然无味的项目。但是,我们意在使 Beam 不仅担当所有引擎的功能交集(这个交集规模非常有限!),而且成为它们功能的合集(即使是这些功能中的“无用之物”)。不仅如此,Beam 力图立于数据处理的潮头,不仅将功能推送到运行时引擎中,而且从运行时引擎中拉取回模式。 Keyed State 就是一个很好的例子,虽然它是一个存在于各种引擎中的功能,并提供了有趣的和常见的用例,但是它先前是不能在 Beam 中表达的。因此,我们最近扩展了 Beam 模型,并根据 Beam 的设计原则,加入了该功能的一个实现版本。反过来说,我们希望 Beam 将同样会对各种引擎的发展路线图产生应用。例如,Flink 的 DataStreams 的语义就受到了 Beam 模型(née DataFlow)的影响。

InfoQ:现在 Beam 已经具有了第一个稳定版本。对于那些已采用了颇具规模的 Spark、FLink 或 Hadoop 流水线的企业,什么能促使它们从现有的系统迁移到使用 Beam?

Frances Perry:我认为相对于其它系统而言,有三个原因导致 Beam 颇为引人关注。

统一的批处理和流处理:虽然有部分系统也同时支持批处理和流处理,但是这些系统通常是通过独自的 API 分别实现的。在 Beam 中,批处理和流处理处理在机制上是相同的,只是在延迟、完整性和代价上存在着一些差异。在 Beam 中,不存在从批处理转到流处理的陡峭学习和重写曲线。因此,如果用户今天编写了一个批处理流水线,但是第二天就需要对延迟做更改,这在 Beam 中是非常易于调整的。我们可以从 Mobile Gaming 例子中看到这一过程。

提升了抽象等级的 API: Beam 的 API 聚焦于捕获用户数据和逻辑的属性,而非泄漏低层运行时的细节。这不仅是可移植性(参见下一特性)的关键所在,而且还赋予了运行时大量灵活的执行方式。大部分 Runner 已经做到了相当基本的 ParDo Fusion(也称为函数组合)之类的优化。对部分 runner,其它的优化依然正在实现中。例如,Beam 的 Source API 是特定构建的,以避免过度声明流水线中的数据切片。相反,他们赋予 Runner 以正确的钩子(Hook),动态地重平衡工作。这从根本上消除了低性能的数据切片问题,会在性能上产生很大的差异。总而言之,如果我们在 Runner 中构建了更多的智能,我们就能更好地从底层细节中抽身出来。当数据、代码和环境发生变化时,即便是最为细致的手工调优也会发生失败。

运行时之间的可移植性:由于在 Beam 中数据的形状和运行时的需求这两者基本上是分离的,同一流水线可以用多种方式运行。这意味着,当用户不得不从本地部署(on-premise)迁移到云端时,或是不得不从一个经验证运行良好的系统迁移到一个最新的环境上时,不必重写代码。用户可以很容易地从各种选项中做出选取,找出最适合当前工作需求的、综合考虑了环境及性能因素的系统。并可综合地考虑使用开源 Runner 在本地部署中处理敏感数据,并在云管理的服务上处理其它的数据。

InfoQ:您是否看到过这样的用例,就是为了使用 Beam,需要以另一种方式重新实现底层处理引擎?

Frances Perry:当然有。正如前面所提及的,这毫不令人惊奇,甚至是鼓舞人心。但同时,我们正努力去十分现实地解决如何处理这些不匹配的问题。我们已运用能力矩阵(Capability Matrix)去清晰地追踪每个 Runner 支持的 Beam 模型部分。一旦有可能,我们就会设计出以可选形式提供的额外功能,如果没有更为简单和正确的实现,添加这样的功能将会改进 Runner 的性能。

InfoQ:Beam 项目下一步将会如何发展?

Frances Perry:在我看来,有三个关键的领域:可移植的架构、准备好用于生产环境,以及项目集成。

我们将可移植性置入了 Java SDK,可以在多个 Runner 上运行同一流水线。但是我们还必须要做更多的工作,以使所有 Beam SDK 具有这一功能。我迫切期待着有朝一日 Python SDK 也同样可移植。

其次,已经有用户将 Beam 用于生产环境。Beam 的用户越多,我们就能更好地精雕细琢。要改进每个用户的体验,与社区交互是非常关键的。

最后一点,我们正在不断寻求新的方法去集成 Beam 与其它的开源项目。我们不仅添加了 Apache Apex 等的新 Runner,而且也创建了与 Apache Calcite 等项目的集成,使得 Beam 对新类型用户更加开放。

被访者简介

Frances Perry 是一位软件工程师,工作兴趣在于让大规模数据处理更为简化、直观和高效。在 Google 内部数据处理栈上工作多年后,她加入了 Cloud Dataflow 团队,致力于使技术对外部云用户可用。她曾领导了 Dataflow 的统一流处理 / 批处理编程模型的早期工作,现在是 Apache Beam 项目管理委员会的一名成员。

查看英文原文: Apache Beam Interview With Frances Perry

公众号推荐:

跳进 AI 的奇妙世界,一起探索未来工作的新风貌!想要深入了解 AI 如何成为产业创新的新引擎?好奇哪些城市正成为 AI 人才的新磁场?《中国生成式 AI 开发者洞察 2024》由 InfoQ 研究中心精心打造,为你深度解锁生成式 AI 领域的最新开发者动态。无论你是资深研发者,还是对生成式 AI 充满好奇的新手,这份报告都是你不可错过的知识宝典。欢迎大家扫码关注「AI前线」公众号,回复「开发者洞察」领取。

2017-07-18 18:011486
用户头像

发布了 227 篇内容, 共 71.4 次阅读, 收获喜欢 27 次。

关注

评论

发布
暂无评论
发现更多内容

关于中国芯片,这些话如鲠在喉

脑极体

React Draggable 实现拖拽 - 最详细中文教程 - 卡拉云

蒋川

React

大咖说|制造业发展趋势:“专精特新”与数字化转型

大咖说

阿里巴巴 阿里云 数字化 中制智库

Amazon Graviton2上数据压缩算法性能比较

亚马逊云科技 (Amazon Web Services)

数据 应用性能

大画 Spark :: 网络(5)-Spark中的server端和client端

dclar

大数据 hadoop spark Spark 源码 大数据开发

Tech Talk 活动预告 | 为什么说 Serverless 是应用开发的未来?

亚马逊云科技 (Amazon Web Services)

Serverless

selenium操作元素遇到的异常

红毛丹

selenium

安全代码审计-PHP

网络安全学海

网络安全 信息安全 渗透测试 漏洞 代码审计

如何在 Vue 中使用 Chart.js - 手把手教你搭可视化数据图表

蒋川

Vue PDF pdf阅读器

Web 键盘输入法应用开发指南 (6) —— 开发实战(一)

天择

JavaScript 键盘 实战 输入法 3月月更

小程序的第六年,我们还能怎么玩?

知晓云

小程序 微信 小程序生态 小程序运营

Hoo虎符研究院|区块链简报20220307期

区块链前沿News

Hoo 虎符交易所 虎符研究院

java高级用法之:无所不能的java,本地方法调用实况

程序那些事

Java Netty 程序那些事 3月月更

全网渗透率达80%!“耳朵经济”将成为当下市场的流行趋势

易观分析

耳朵经济 在线音频

社区人物志|缪翎:见证开源世界的女性力量

ApacheDoris

大数据 开源 数据分析 OLAP apache doris

springsecurity默认用户生成

急需上岸的小谢

Flutter 容器盒子布局模型

岛上码农

flutter ios 安卓 移动端开发 3月月更

CompusAss校园社团小程序解决方案

CC同学

12 款最棒 Vue 开源 UI 库测评 - 特别针对国内使用场景推荐

蒋川

Vue vue admin

服务器被入侵了?反手溯源出入侵者画像【网络安全】

H

黑客 网络安全

高精度轻量级目标检测产业应用,实现多类通信塔识别

百度大脑

appsmith 怎么用?评价如何

蒋川

appsmith

基于 XuperChain 的区块链项目从 0 到 N(二)

刘旭东

区块链 XuperChain

企业如何快速地制作出电子产品宣传册?

小炮

如何避免在面试中看走眼

Hockor

个人成长 面试经验

免费硬件、专属导师、豪华大礼|AI达人创造营第二期项目征集启动啦!

百度大脑

python 编辑器提示 do not use bare except

AlwaysBeta

Python vscode 编辑器 pycharm Python PEP

教你Mac下终端配置iterm2+oh-my-zsh+powerlevel10k

锋享前端

Mac iterm2

2022 年了,还不了解 PWA ? 教你 VuePress 博客如何快速兼容 PWA

冴羽

JavaScript Vue 前端 vuepress PWA

业内首家!百度智能云智慧金融业务通过ISO37301合规管理体系认证

百度大脑

PingCode 全新子产品 Insight 开放内测

PingCode

专访Frances Perry:关注Apache Beam_AI&大模型_Dylan Raithel_InfoQ精选文章