使用 Apache Arrow 构建 HTAP 数据仓库

Space and Time 的首席技术官兼联合创始人 Scott Dykstra 就成为 Apache Arrow 提交者采访了首席软件工程师 Brent Gardner。

Space and Time 的首席技术官兼联合创始人 Scott Dykstra 就成为 Apache Arrow 提交者采访了首席软件工程师 Brent Gardner。

布伦特是一位经验丰富的软件工程师,拥有从大数据到科学建模、流媒体和数据分析的丰富经验。Brent 自 2009 年以来一直参与构建列式数据库,自 2017 年以来致力于加密货币代码,并从 pre-1.0 开始使用 Rust。除了开发之外,布伦特在公共演讲、教学、领导以及各种编程语言和领域方面也很有才华。在加入 Space and Time 之前,他利用自己的指导和技术远见将多家初创公司从零发展为一家。自加入 Space and Time 以来,Brent 一直是 Apache Arrow、Apache DataFusion 和 Apache Ballista 的积极贡献者。

https://www.youtube.com/embed/T9a5tkiY9v4

斯科特:欢迎来到探索时空。我是 Space and Time 的首席技术官 Scott Dykstra,我和我的朋友 Brent Gardner 在这里,他是 Space and Time 的首席工程师。布伦特,你想自我介绍一下吗?

布伦特:嗨,我是布伦特。我一直在研究 Space and Time 的 OLAP 方面。我们一直在与 Apache Foundation 合作开发一些很酷的 Arrow 柱状存储,我很高兴今天能谈谈这个。

斯科特:太棒了。嗯,我们最兴奋的事情之一是您对 Apache Arrow 代码库的贡献,并成为 Apache Arrow 的贡献者和提交者。告诉我们那是什么意思。为 Apache Arrow 做贡献意味着什么?

布伦特:我真的很荣幸。我必须从那开始。这是一段不愉快的旅程。在我职业生涯的大部分时间里,我一直想为开源做出贡献,但机会并不多。因此,我非常感谢 Space and Time 赞助我全职参与 Arrow Project、Arrow and DataFusion 和 Ballista,以及这些领域即将开展的一些研究。

斯科特:是的,我们也是。让我们的一位首席工程师为开源社区做出贡献和回馈是令人兴奋的。我们坚信 Apache Arrow 是矢量化内存操作的未来,也是许多不同数据库技术以一种简洁的方式相互通信的接口。所以,我对这项工作感到非常兴奋。这是怎么开始的?告诉我有关 DataFusion 的一些背景知识,您是如何发现该项目并参与到 DataFusion 中的,什么是 DataFusion?

布伦特:让我们从什么是 DataFusion 开始?Arrow 项目是一种与语言无关的方式,可以在进程之间共享内存,特别是以柱状格式。因此,这对于需要互操作和通信的所有不同数据库都非常有吸引力。拥有标准的交换格式就像拥有 110 伏电压或 6 英尺宽的铁轨;一旦你能放下它,你就可以在它上面做各种各样的事情。所以它确实有一些很酷的矢量化操作。最近有一个 CMU 提到,除非你的数据库有矢量化操作,否则你将花费数百万美元重新创建它。因此 DataFusion 进入了候选名单。Arrow 有一些这样的矢量化操作,你可以让你的 CPU 缓存行保持满,你可以在现代处理器中充分利用这些宽位通道,但 Arrow 只具有执行列操作的能力。如果您想在此之上运行 SQL 或更高级别的任何东西,或者对数据框进行 Python 绑定以及数据科学家习惯做的所有事情,那么这就是 DataFusion 项目的用武之地。

最后,Apache Ballisa 在此之上堆叠以序列化执行计划并在所有类型的节点上以并行格式执行它们,并真正开始成为 Apache Spark 的竞争对手。

斯科特:是的,这是有道理的。所以 Arrow 是内存中的矢量化格式。DataFusion 在某种程度上本质上是一个数据库引擎,一个查询引擎。Ballista 是 DataFusion 集群中的分布式处理。您最初是如何接触到 DataFusion 的?

布伦特:认识作者不会有什么坏处。我和 Andy Grove 可以追溯到我们在一家公司工作时,该公司正在构建我们自己的系统,可以与 Apache Spark 相媲美。Spark 起飞了,Andy 和我都负责将我们的引擎移植到 Spark 上。Spark 有很多优点,但也有一些缺点。而且我认为 JVM 的局限性——我的意思是,这可能是六年前的事了——的局限性已经开始显现。我们会运行 20 小时长的作业,然后由于堆外 OOM OutOfMemoryError 而崩溃,然后我们会给操作系统更多的内存并再次运行它,然后 20 小时后它会由于 JVM 运行而崩溃内存不足。

这也是 Rust 作为一种编程语言开始进入现场的时候。所以我认为 Andy,就像 Andy 倾向于做的那样,将大量业余时间花在个人爱好项目上,创建他最了解的 SQL 解析器和执行引擎。可以说是利用了 Spark 的所有优点,一个有向无环操作图,将其切分并分发,但以柱状方式进行。因此,他在 Apache Arrow 之上构建了该执行引擎,结果证明它就像花生酱和果冻。他们俩合作得非常好。这就是我们走到今天的原因。至于我最终如何完成它,再次感谢空间和时间。我是个万事通。我一直在跳来跳去做一些嵌入式 Android 开发,一些 AI 对象检测,以及各种东西。但是当有机会为分布式数据库的前沿做出贡献时,我感到非常兴奋和荣幸。所以我在这里。

Scott:我们对 Arrow 的 9 个 PR、DataFusion 的 29 个 PR 和 Ballista 的 21 个 PR 感到兴奋。有了所有这些 PR 和所有这些参与,从 Arrow 到 DataFusion 再到 Ballista,你如何与全球不同的贡献者互动?我假设有数百人定期使用 Arrow,可能有数十人使用 DataFusion,而个位数使用 Ballista。那看起来像什么?

布伦特:是的,我想每天都很难说,但是是的,Arrow 有 600 名贡献者,DataFusion 有 300 或 400 名,我不知道,可能与 Ballista 的数量相似。所以有很多人在做这件事。他们不一定每天都做出贡献。我很幸运,因为 Space and Time 的兴趣与我能够全职贡献的这些项目完全一致。而且我认为随着我们在 Arrow 之上构建越来越多的 Space and Time,然后我们将看到更多的贡献者过来,获得贡献者地位。因为我知道我们已经有几个开发人员也在兼职。因此,就协作而言,Apache Software Foundation 是管理开源项目的一种开箱即用的好方法,随着时间的推移,治理规则为他们提供了很好的服务。这些规则之一是所有内容都必须存档且可存档。GitHub 的工作方式是将所有 GitHub 消息发送到他们的邮件列表并存档。所以几乎所有的交流实际上都是通过 GitHub 进行的。它是拉取请求,它是问题,它是关于代码的讨论。老实说,这就是我一天中大部分时间用来审查拉取请求、审查拉取请求、提交它们、提交问题等的方式。s pull requests,它是问题,它是关于代码的讨论。老实说,这就是我一天中大部分时间用来审查拉取请求、审查拉取请求、提交它们、提交问题等的方式。s pull requests,它是问题,它是关于代码的讨论。老实说,这就是我一天中大部分时间用来审查拉取请求、审查拉取请求、提交它们、提交问题等的方式。

斯科特:太棒了。与这个全球团队合作是什么感觉?这些贡献者中的大多数来自大型数据库公司吗?这些人是谁,他们来自哪里?

布伦特:这很难说,因为他们太多了,但我认为一些主要贡献者在像 Space and Time 这样的公司工作。正如我所说,如果您要构建一个现代数据库,那么您需要一个矢量化执行引擎。因此,令人惊讶的是,数据库问题还没有解决。它似乎是常青树之一。尽管这是一项已经存在 40 或 50 年的极其成熟的技术,但就大数据、分析和时间序列而言,他们仍然不断提出新的需求,而且到目前为止还没有灵丹妙药。所以有很多像 Space and Time 这样的公司在构建数据库,他们需要这些核心组件。这些就是我每天与之共事的人。

斯科特:明白了。惊人的。因此,让我们谈谈 Space and Time 如何能够、将要以及正在利用这项技术。Arrow 实际上是一种内存中的矢量化格式,DataFusion 是一个用于构建数据库的框架,而 Ballista 是一个用于分发 DataFusion 的分布式框架。因此,当我们构建 HTAP 时,这些或所有这些技术中的一些或所有这些技术如何在现代 HTAP 数据仓库中发挥作用?

布伦特:哇,这是一个有趣的问题。我认为从 OLAP 的角度来看,这是一个相当容易解决的问题。好吧,某种 Ballista 回答了这个问题。如果您只有一大堆 Parquet 文件,并且它们位于对象存储中,您需要查询它们并尽快加入它们,我肯定会说 Ballista 是一个竞争者;它不一定总是最快的,但在某些类型的查询中绝对是最快的。因此,事情的这一方面每天都在进行中,并且每天都在变得更好。就 OLTP 方面而言,研究方面更多一些。Arrow 的核心概念是不可变的,因此尝试让 DML 语句修改数据是尝试添加到 Arrow 生态系统中的一件有趣的事情。我认为这肯定激怒了一些人。有多种方法可以以 Arrow 格式累积数据,同时仍然遵守所选语言(尤其是 Rust)所期望的内存安全保证。只要你不去更改历史数据,你可能就很不错了。但这与多版本并发控制的概念配合得很好。所以这是一个开放的研究领域,解析和规划插入、更新和删除的能力在几周前刚刚出现。

Scott:这是您第一次成为 Apache 顶级项目的指定贡献者吗?

布伦特:是的!就像我说的,我不认为有多少公司如此致力于开源。我很欣赏 Space and Time 对此的立场,但据我了解,加密生态系统中没有人真正愿意信任闭源代码。所以我认为它最终对所有相关方都很有效。Space and Time 愿意将这些创新贡献给更广泛的社区。在以前的工作中,这并不是他们愿意做的事情。所以,如果不是一份全职工作,要成为一名贡献者是有点困难的。

斯科特:而且我认为我们将继续增加我们的贡献和我们对开源社区的支持。我们天生构建的 Web3 和去中心化生态系统是开源的。而且我认为,随着我们建立业务,我们建立我们的技术,随着我们完成路线图,我们将越来越多地开源。推出所有这些将令人兴奋。而且我认为,随着我们继续构建,我们将越来越多地拥抱 DataFusion 和 Arrow。令人兴奋的是,您已经处于这方面的先锋,因为随着我们专注于这种下一代 HTAP,它只会变得更加重要。最后一个问题来总结一下。布伦特,能有你来真是太高兴了。我很好奇:这个社区在 Slack 上活跃吗?你说它必须存档,所以每个人都在发电子邮件。通信模式是什么样的?从中国到欧洲再到美国,各地的人们都在做出贡献。通信标准是什么?

布伦特:我无意误导任何人。有一个 Slack,我相信也有一个 Discord,我肯定整天都在登录那个 Slack。这对于提出诸如“嘿,我想做 X,我该怎么做?”这样的问题很有用。我们会尽力帮助跳入其中并有问题要问的任何人。我认为需要归档的是关于代码的运行方式和架构如何工作的决定。因此,所有这些都是通过拉取请求和关于拉取请求的讨论来完成的,但绝对存在 Slack 和 Discord。您可以通过 /apache/arrow-rs 网站找到所有这些内容。

斯科特:下一步是什么?短期内,DataFusion 社区的下一步是什么?重点是什么?下一组 PR 是什么?

布伦特:哇。这是一个有趣的问题,因为总是有很多事情在发生,而且不同的各方有很多不同的利益。我从 Ballista 方面知道,在尝试支持流式传输(而不仅仅是批处理)方面有很多工作正在进行,以便能够很好地分配资源。正如我所说,在 DataFusion 中,正在做一些工作来支持写入和读取。查询规划器优化一直在进行。我可能不是回答这个问题的最佳人选,因为发生了太多事情,我专注于推动 Space and Time 数据库向前发展的事情。

斯科特:当然,我很高兴你是。好吧,有像你这样的才华横溢的工程师为这个快速发展的生态系统做出贡献,这是令人激动和激动的,这个生态系统是 Apache Arrow 和基于 Apache Arrow 的 DataFusion,以及 Ballista 分发 DataFusion。我们看到了这些技术的极端价值。我们知道这就是未来。我们很高兴能在此基础上进行建设,我们也很高兴 Space and Time 的一位才华横溢的工程师也做出了贡献。所以,布伦特,恭喜你。

布伦特:谢谢,斯科特。我真的很高兴我能做到这一点,今天和你谈话真是太棒了。

英文原文链接:https://www.spaceandtime.io/blog/building-with-apache-arrow

所有文章项目介绍

智能合约的问题

2023-3-1 4:03:00

所有文章项目介绍

Space and Time at ETHDenver 2023

2023-3-4 16:29:44

搜索