Apache Iceberg 简介

导航至

什么是 Apache Iceberg?

Apache Iceberg 是一种用于大规模分析的开源表格式。它通过提供高性能、更高效的方式来管理大规模数据,从而改进了传统表存储解决方案的局限性。Iceberg 允许对数据进行细粒度控制,从而实现模式演变、时间旅行和事务支持等功能,这些功能对于现代数据架构至关重要。

Netflix 最初启动 Iceberg 项目是为了解决处理其海量数据仓库的挑战,并提高现有表格式的性能和可扩展性。随后,它被开源,并已被包括 Airbnb、Adobe、LinkedIn 等在内的众多公司采用。

Apache Iceberg 的优势

优化的查询性能

Apache Iceberg 使用多种不同的技术来提高性能。以下是一些主要方法的概述

  • 文件分区 - 数据可以按多个字段(包括复杂的嵌套数据结构)进行分区。这可以帮助减少查询需要扫描的数据量。
  • 谓词下推 - 通过支持谓词下推,Iceberg 允许在存储级别过滤数据,而无需查询引擎将数据加载到内存中,从而减少数据传输和处理时间。
  • 增量扫描 - Iceberg 支持增量扫描,仅读取自上次查询以来已更改的文件部分。这有助于提高重复或频繁查询的性能,从而减少需要重新处理的数据。
  • 压缩 - Iceberg 自动压缩和调整文件大小,以减少碎片和不必要的访问。

元数据管理

Iceberg 提供集中式元数据管理,通过维护大型数据集的一致视图来简化数据治理和管理。这种方法确保元数据始终是最新的且可访问的,从而降低了大规模管理数据的复杂性和开销。

大数据生态系统集成

Apache Iceberg 可以与流行的数据处理框架(如 Apache Spark、Apache Flink 和 Presto)无缝协作。这种兼容性使开发人员可以将 Iceberg 集成到他们现有的数据管道中,而无需进行重大更改,从而更容易采用和实施。

模式演变支持

Apache Iceberg 的关键功能之一是其对高效模式演变的支持。它允许对表的模式进行添加、删除和更新,而不会中断现有数据,从而确保即使在底层模式更改时,数据仍然可访问和可查询。

ACID 事务支持

Iceberg 为大数据带来了 ACID 保证,从而为大型数据集实现了事务支持。此功能确保了跨多个操作的数据完整性和一致性,这对于需要严格数据准确性和可靠性的应用程序至关重要。其重要性在大型组织中尤为突出,在这些组织中,可能有许多系统同时查询或更新数据。

Apache Iceberg 用例

数据湖

Apache Iceberg 非常适合数据湖,提供了一种结构化且高效的方式来管理海量原始数据。其功能支持可扩展的数据存储、优化的查询性能和无缝的模式演变,使其适合企业利用其数据湖来获得分析见解。

数据湖仓

Iceberg 还可以通过融合数据仓库和数据湖的最佳功能来创建数据湖仓。它为数据湖仓架构中预期的 ACID 事务和性能优化提供了支持。

数据治理

凭借其集中式元数据管理和事务支持,Apache Iceberg 在数据治理中发挥着至关重要的作用。它确保了跨所有数据操作的数据完整性、合规性和安全性,使其成为希望实施有效数据治理策略的组织的宝贵工具。

Apache Iceberg 的关键概念和功能

Apache Iceberg 引入了几个关键概念和功能,旨在显着增强管理和访问数据以进行分析的方式。以下是其中一些功能的深入了解

表元数据

Iceberg 通过维护元数据文件树来跟踪表,这些文件树保存有关表和分区的信息。Iceberg 维护一个目录,该目录指向这些文件并充当与底层数据层分离的元数据层。表元数据使 Iceberg 具有快照、时间旅行和原子事务支持等功能。

分区

Iceberg 的分区系统是一种动态且高度可配置的功能,它通过根据特定的列值将数据组织成更易于管理的块来提高查询性能。与传统的静态分区不同,Iceberg 支持按多个列进行分区,并允许自定义分区策略,例如分桶或范围分区。这种灵活性使用户可以根据其特定的查询模式定制分区方案,从而显着减少查询期间扫描的数据量。

可以按日期对时间序列分析的数据进行分区,确保针对特定时间段的查询更有效率。Iceberg 的分区系统不断演变,而无需重写数据集,从而随着查询模式的变化,更易于维护和调整。

时间旅行

Iceberg 中的时间旅行使用户能够查询特定时间点存在的数据,从而为合规性、审计和历史数据分析提供显着优势。此功能通过 Iceberg 的快照管理实现,该管理维护了不同时间点表状态的历史记录。用户可以轻松地恢复或查询这些快照,从而分析历史数据、审计随时间的变化或从意外的数据修改或删除中恢复。

时间旅行促进了广泛的用例,从跟踪数据随时间演变以进行趋势分析到在事件发生后进行取证调查。通过提供一种访问历史数据状态的直接方式,Iceberg 使组织能够满足合规性要求、进行深入的数据分析并确保数据完整性和可靠性。

使用 Apache Iceberg 的公司

Adobe

Adobe Experience Platform 团队使用 Iceberg 作为其数据湖架构的一部分,这使客户能够构建实时个性化体验。Adobe 的平台使用 lambda 架构为客户、合作伙伴和内部用户处理 PB 级数据。Adobe 在其内部解决方案(试图解决类似问题)无法满足需求后迁移到 Iceberg。

Netflix

Netflix 在内部创建 Iceberg 以解决 Apache Hive 的问题。这些问题包括查询正确性问题、无法提供稳定的原子事务、难以更改数据格式以及写入性能差。Netflix 意识到许多其他公司也存在类似问题,并在 2018 年将 Iceberg 捐赠给了 Apache 基金会。它在 2020 年晋升为顶级项目。

Airbnb

Airbnb 采用 Apache Iceberg 作为其从旧数据仓库迁移的一部分。原始数据仓库使用 Hive 作为元数据存储,随着数据分区数量的增加,Hive 成为性能瓶颈。这需要聚合数据并缩短保留期,从而限制了数据分析的见解。Airbnb 通过从 Hive 迁移到 Iceberg 解决了这些问题。