什么是Apache Iceberg?
Apache Iceberg是一种高性能的开放表格式,诞生于云中,可扩展到 PB 级,独立于底层存储层和访问引擎层。
作为一种真正的开放的表格式,Apache Iceberg 非常适合 Cloudera 数据平台 (CDP) 的愿景。事实上,我们最近宣布与我们的云生态系统集成,为企业带来 Iceberg 的好处,因为他们正在走向公共云,并在他们采用更融合的架构(如Lakehouse )时。
让我们重点介绍其中的一些好处,以及为什么选择 CDP 和 Iceberg 可以在未来证明您的下一代数据架构。
图 1:Apache Iceberg 通过从分析层中抽象出存储层,同时引入时间旅行和分区演化等全新功能,适合下一代数据架构
1:多功能分析
Apache Iceberg 支持不同的流媒体和处理引擎之间的无缝集成,同时保持它们之间的数据完整性。多个引擎可以同时更改表,即使是部分写入,也不会出现正确性问题并且不需要昂贵的读锁。因此,减轻了使用不同连接器、奇异的且维护不善的 API 以及其他特定于用例的变通方法来处理数据集的需要。
Iceberg 被设计为开放的且与引擎无关,允许共享数据集。通过 Cloudera 的贡献,我们扩展了对 Hive 和 Impala 的支持,实现了从大规模数据工程 (DE) 工作负载和流处理 (DF) 到快速 BI 和查询(在 DW 内)的多功能分析数据架构的愿景和机器学习 (ML)。
多功能还意味着打破孤岛的集成端到端的数据管道,将分析拼凑成一个连贯的生命周期,可以在每个阶段提取业务价值。用户应该能够选择他们选择的工具并利用其工作负载特定的优化。例如,CML 中的 Jupyter notebook 可以使用 Spark 或 Python 框架直接访问 Iceberg 表以构建预测模型,同时通过 NiFi 流摄取新数据,SQL 分析师使用Data Visualization监控收入目标。而作为一个完全开源的项目,这意味着未来将支持更多的引擎和工具。
2:开放格式
作为一种表格格式,Iceberg 支持一些最常用的开源文件格式——即 Avro、Parquet 和 ORC。这些格式是众所周知且成熟的,不仅被开源社区使用,而且还嵌入到第三方工具中。
开放格式的价值在于灵活性和可移植性。用户可以移动他们的工作负载,而无需绑定到底层存储。然而,到目前为止,仍然缺少一块——表的模式和存储优化是紧密耦合的,也和引擎紧密耦合,因此充满了警告。
另一方面,Iceberg 是一种开放的表格格式,可与开放文件格式配合使用,以避免这种耦合。表信息(如模式、分区)作为元数据(manifest)文件的一部分单独存储,使应用程序更容易快速与表和他们选择的存储格式集成。而且由于查询不再依赖于表的物理布局,Iceberg 表可以随着数据量的变化而随着时间的推移演变分区方案(稍后会详细介绍)。
3:开放性能
开源对于避免供应商锁定至关重要,但许多供应商会吹捧开源工具,而不承认他们的内部版本和开源社区之间的差距。这意味着如果您尝试使用开源版本,您将看到巨大的差异——因此您无法避免供应商锁定。
Apache Iceberg 项目是一个充满活力的社区,它正在迅速扩展对各种处理引擎的支持,同时还添加了新功能。我们认为,这对于新的表格格式的持续成功至关重要,因此也是我们跨 Spark、Hive 和 Impala 为上游社区做出贡献的原因。只有通过社区的成功,我们才能让 Apache Iceberg 被采用并掌握在希望构建下一代数据架构的企业手中。
社区已经提供了很多改进和性能特性,例如向量化读取和 Z-Order,无论引擎或供应商如何访问表,这将使用户受益。在 CDP 中,这已经作为对 Z-Order 的 Impala MPP 开源引擎支持的一部分提供。
对于查询规划,Iceberg 依赖于元数据文件,如前所述,元数据文件包含数据所在的位置以及分区和模式在文件中的分布方式。尽管这允许模式演变,但如果表有太多更改,就会出现问题。这就是为什么社区创建了一个 API 来并行读取清单(元数据)文件并致力于其他类似的优化。
这种开放标准方法允许您在 Iceberg 上以 CDP 中的性能运行工作负载,而无需担心供应商锁定。
4:企业级
作为 Cloudera 企业平台的一部分,Iceberg 的原生集成受益于共享数据体验 (SDX) 的企业级功能,例如数据血缘、审计和安全性,无需重新设计或第三方工具集成,这增加了管理复杂性并需要额外的知识.
CDP 中的 Apache Iceberg 表集成在 SDX Metastore 中,用于表结构和访问验证,这意味着您可以进行审计并创建开箱即用的细粒度策略。
图 2:Cloudera 数据平台中的 Apache Iceberg
5:打开新用例的大门
Apache Hive 表通过将表访问集中到仓库、数据工程和机器学习中奠定了良好的基础。它在支持开放的文件格式(ORC、AVRO、Parquet 等)的同时做到了这一点,并通过 ACID 和事务支持帮助实现了新的用例。然而,由于元数据集中化并且主要是基于文件的抽象,它在某些领域(如规模)一直在挣扎。
Iceberg 在引入一系列新功能的同时克服了规模和性能挑战。以下是这些新功能如何帮助应对各种行业和用例的挑战的快速浏览。
变更数据捕获 (CDC)
尽管在 Hive ACID 等现有解决方案中CDC不是新的方案,该方案本身也是可用的,但处理具有原子性和一致性的增量的能力对于大多数提供 DW 和 BI 用例的数据处理管道来说至关重要。这就是为什么 Iceberg 从一开始就着手通过支持行级更新和删除来解决这个问题。在不深入细节的情况下,值得注意的是有多种方法可以实现这一点,例如写时复制与读时合并。但更重要的是,通过这些实现和 Iceberg 开放标准格式(版本 1 规范与版本 2)的持续发展,我们将看到对这个用例的更好和更高性能的处理。
金融监管
许多金融和高度监管的行业想要一种方法来回顾甚至将表恢复到特定的时刻。Apache Iceberg 快照和时间旅行的功能可以帮助分析人员和审计人员轻松地回顾时间并使用 SQL 的简单性分析数据。
ML Ops 的可重复性
通过允许检索先前的表状态,Iceberg 使 ML 工程师能够使用原始状态的数据重新训练模型,以及执行事后分析,将预测与历史数据相匹配。通过这些历史特征库,可以重新评估模型、识别缺陷并部署更新更好的模型。
简化数据管理
大多数数据从业者将大部分时间用于处理数据管理的复杂性。假设为您的项目确定了新的数据源,因此需要将新的属性引入到您现有的数据模型中。从历史上看,这可能会导致重新创建和重新加载表的开发周期很长,尤其是在引入新分区的情况下。然而,使用 Iceberg 表及其元数据清单文件,可以简化这些更新,而不会产生额外成本。
- 模式演变:表中的列可以就地更改(添加、删除、重命名、更新或重新排序),而不会影响数据可用性。所有更改都在元数据文件中进行跟踪,Iceberg 保证架构更改是独立的并且没有副作用(例如不正确的值)。
- 分区演变:Iceberg 表中的分区可以以与模式演变相同的方式进行更改。演变分区时,旧数据保持不变,新数据将按照新分区规范写入。Iceberg 使用隐藏分区通过拆分计划自动修剪包含来自旧分区规范和新分区规范的匹配数据的文件。
- 细粒度分区:传统上,在查询计划期间元存储和将分区加载到内存中是一个主要瓶颈,阻止用户使用小时等粒度分区方案,因为他们担心随着表大小的增长,他们会看到性能不佳。Iceberg 通过完全避免元存储和内存瓶颈克服了这些可扩展性挑战,允许用户通过使用最适合其应用程序需求的更细粒度的分区方案来解锁更快的查询。
这意味着数据从业者可以花更多时间交付业务价值和开发新的数据应用程序,而减少处理数据管理的时间——即,
以业务的速度发展您的数据,而不是相反。
*任何*仓库
我们已经在数据仓库领域看到了很多趋势,其中最新的一个是Lakehouse,它是对将数据仓库与数据湖相结合的融合架构的参考。企业中这种融合架构的一个关键促进因素是存储和处理引擎的解耦。然而,这必须与从流和实时分析到仓储和机器学习的多功能分析服务相结合。单一的分析工作负载或两者的结合是不够的。这就是为什么 CDP 中的 Iceberg 是无定型的——与引擎无关的、可云扩展的开放数据基础。
这允许企业构建“任何”仓库,而无需诉诸专有存储格式来获得最佳性能,也无需在一个引擎或服务中进行专有优化。
Iceberg 是一个分析表层,可快速、一致地提供数据,并具有所有功能,没有任何问题。
总结
让我们快速回顾一下为什么选择 CDP 和 Iceberg 可以在未来证明您的下一代数据架构的 5 个原因。
- 从流式传输、数据管理、sql 分析和机器学习中选择您所选择的引擎以及最适合您的用例的引擎。
- 灵活和开放的文件格式。
- 获得上游社区的所有好处,包括性能,而不必担心供应商锁定。
- 企业级安全性和数据治理——对沿袭和审计的集中数据授权。
- 打开新用例的大门
虽然不是一个详尽的列表,但它确实说明了为什么 Apache Iceberg 被视为云原生应用程序的下一代表格式。
准备好在 CDP 中尝试 Iceberg 了吗?联系您的 Cloudera 客户代表,或者如果您是 Cloudera 的新手,可以通过我们的60 天试用版来体验一下。
原文作者:Shaun Ahmadian
原文链接:https://blog.cloudera.com/5-reasons-to-use-apache-iceberg-on-cloudera-data-platform-cdp/