为什么 Apache Iceberg 将统治云中的数据

云使数据团队能够收集大量数据并以合理的成本进行存储,从而为利用数据湖、数据网格和其他现代架构的新分析用例打开了大门。但是对于非常大量的数据,通用云存储在如何访问、管理和使用这些数据方面也提出了挑战和限制。
云中典型的 blob 存储系统缺乏显示文件之间关系或它们与表的对应方式所需的信息,这使得查询引擎的工作变得更加困难。此外,文件本身并不能使更改表的模式或在其上“时间旅行”变得容易。每个查询引擎必须有自己的如何查询文件的视图。突然之间,看似易于实现的数据架构变得比预期的更难。
这就是将表格格式应用于数据变得非常有用的地方。表格式明确定义了一个表、它的元数据和构成该表的文件。客户端不是在读取数据时应用架构,而是在运行查询之前就已经知道架构。此外,表元数据可以以提供更细粒度分区的方式保存。因此,将表格格式应用于数据可以提供许多优势,例如:
选择要使用的表格格式是一个重要的决定,因为它可以启用或限制可用的功能。在过去的两年里,我们看到 Apache Iceberg 获得了大量支持,这是一种最初由 Netflix 开发的表格格式,于 2018 年作为 Apache 孵化器项目开源,并于 2020 年从孵化器项目中毕业。
Iceberg 的构建是为了解决 Apache Hive 在处理超大数据集时遇到的一些挑战,包括规模、可用性和性能方面的问题。正如 Netflix 工程师当时指出的那样,超大规模数据集的表格格式应该像 SQL 一样可靠且可预测地工作,“没有任何不愉快的意外”。
有多种选择,我们相信 Iceberg 优于其他可用的开放式表格格式。这里有五个原因。
过去会对表格格式今天的工作方式产生重大影响。一些表格格式是从旧技术发展而来的,而另一些表格格式则一刀切。 Iceberg 属于后者。它是从头开始构建的,以解决 Apache Hive 中的缺点,这意味着它避免了过去阻碍数据湖的一些不良特性。如何处理架构更改(例如重命名列)就是一个很好的例子。
展望未来,这也意味着 Iceberg 不需要合理化如何在不导致生产数据应用程序出现问题的情况下进一步脱离相关工具。随着时间的推移,其他表格格式可能会迎头赶上,但截至目前,Iceberg 专注于提供下一组新功能,而不是回顾过去解决旧问题。
通过将处理引擎与表格格式分离,Iceberg 提供了更大的灵活性和更多选择。工程师不必被迫使用一种处理引擎,而是可以选择最适合工作的工具。选择之所以重要,至少有两个关键原因。首先,公司用来处理数据的引擎会随着时间而改变。例如,许多企业从 Hadoop 迁移到 Spark 或 Trino。其次,大型组织使用多种不同的技术是很常见的,并且有选择权使他们能够交替使用多种工具。
Iceberg 还支持多种文件格式,包括 Apache Parquet、Apache Avro 和 Apache ORC。这在今天提供了灵活性,但也为将来可能出现的文件格式提供了更好的长期可插拔性。
Iceberg 项目由 Apache 软件基金会管理,这意味着它遵循几个重要的 Apache Ways,包括赢得权威和共识决策。对于自称为“开源”的每个项目来说,情况不一定如此。 Apache Iceberg 公开其项目管理,因此您知道谁在运行该项目。其他表格格式没有透露谁有决策权。表格格式是数据架构中的基本选择,因此选择真正开放和协作的项目可以显着降低意外锁定的风险。
有几个迹象表明,围绕 Apache Iceberg 的协作社区正在使用户受益,并为项目的长期成功奠定基础。对于用户而言,Slack 频道和 GitHub 存储库显示出很高的参与度,无论是围绕新想法还是对现有功能的支持。至关重要的是,参与来自整个行业,而不仅仅是一个团体或 Iceberg 的原作者。
高度协作也有利于技术本身。该项目正在征求越来越多的提案,这些提案的想法各不相同,可以解决许多不同的用例。此外,该项目正在催生新的项目和想法,例如 Project Nessie、Puffin Spec 和开放元数据 API。
与其他一些表格项目不同,Iceberg 从一开始就内置了以性能为导向的功能,这在几个方面对用户有益。首先,用户通常假设一个具有开放代码的项目包含性能特性,却发现它们不包含在未来或含糊地承诺。其次,如果你想移动工作负载,使用表格格式应该很容易,你不太可能在 Iceberg 实现中遇到实质性差异。第三,一旦你开始使用开源 Iceberg,你就不太可能发现你需要的功能隐藏在付费专区后面。什么是开放的和什么不是开放的之间的区别也不是时间点问题。
作为一个从一开始就开放的项目,Iceberg 的存在是为了解决一个实际问题,而不是一个业务用例。这是一个很小但很重要的区别:拥有为 Iceberg 提供支持的付费产品的供应商,例如 Snowflake、AWS、Apple、Cloudera、Google Cloud 等,可以在他们实施 Iceberg 规范的程度方面展开竞争,但 Iceberg 项目本身无意为特定公司推动业务。
在 Snowflake,我们很早就创建了自己的表格格式,从而启用了各种新功能。但随着企业转向云数据平台,他们的需求和时间表会有所不同。一些公司有限制数据存储位置的监管要求,或者有他们需要保护的现有投资。
支持像 Iceberg 这样的外部表格式使我们的客户能够利用 Snowflake 中的所有数据,即使其中一些数据需要驻留在不同的位置。这就是为什么我们在今年早些时候在 Snowflake 中添加了对 Iceberg 作为附加表选项的支持,并且最近推出了一种名为 Iceberg Tables 的新型 Snowflake 表。
Apache Iceberg 社区中有一些优秀的资源,可用于了解有关该项目的更多信息并参与开源工作。

关注公众号“大模型全栈程序员”回复“小程序”获取1000个小程序打包源码。更多免费资源在http://www.gitweixin.com/?p=2627