现代数据湖 - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

现代数据湖

现代数据湖中的高级用例

就成本、可扩展性和灵活性而言,数据湖是存储数据的最佳选择之一。您可以使用数据湖以低成本保留大量结构化和非结构化数据,并将这些数据用于不同类型的分析工作负载,从商业智能报告到大数据处理、实时分析、机器学习和生成式人工智能 (AI),以帮助指导更好的决策。

尽管有这些好处,但最初设计的数据湖并不是具有类似数据库的功能。数据湖不支持原子性、一致性、隔离性和耐久性 (ACID) 处理语义,您可能需要这些语义才能使用多种不同的技术在成百上千的用户中大规模有效地优化和管理数据。数据湖不为以下功能提供原生支持:

  • 随着业务中数据的变化,执行高效的记录级别更新和删除

  • 在表增长到数百万个文件和数十万个分区时管理查询性能

  • 确保多个并发写入器和读取器的数据一致性

  • 防止写入操作在操作中途失败时数据损坏

  • 在没有(部分)重写数据集的情况下,随着时间的推移不断演变表架构

这些挑战在处理变更数据捕获 (CDC) 等用例中变得特别普遍,或者与隐私、数据删除和流数据摄取相关的用例,这可能会导致表格不理想。

使用传统 Hive 格式表的数据湖仅支持对整个文件的写入操作。这使得更新和删除难以实现、耗时且成本高昂。此外,还需要在符合 ACID 的系统中提供并发控制和保证,以确保数据的完整性和一致性。

为了帮助克服这些挑战,Apache Iceberg提供了其他类似数据库的功能,以简化数据湖的优化和管理开销,同时仍支持在经济实惠的系统(例如亚马逊简单存储服务 (Amazon S3) Service)上进行存储

Apache Iceberg 简介

Apache Iceberg 是一种开源表格式,它在数据湖表中提供以前只能在数据库或数据仓库中使用的功能。它专为扩展和性能而设计,非常适合管理超过数百 GB 的表。冰山桌的一些主要特点是:

  • 删除、更新和合并。Iceberg 支持用于数据仓库的标准 SQL 命令,用于数据湖表。

  • 快速扫描计划和高级筛选。Iceberg 存储诸如分区和列级统计数据之类的元数据,引擎可以使用这些元数据来加快规划和运行查询的速度。

  • 完整的架构演变。Iceberg 支持添加、删除、更新或重命名列,而不会产生副作用。

  • 分区的演变。随着数据量或查询模式的变化,您可以更新表的分区布局。Iceberg 支持更改对表进行分区的列,也支持在复合分区中添加列或从复合分区中删除列。

  • 隐藏分区。此功能可防止自动读取不必要的分区。这样用户就不必了解表的分区细节或在查询中添加额外的过滤器。

  • 版本回滚。用户可以通过恢复到交易前状态来快速纠正问题。

  • 时空旅行。用户可以查询表的特定先前版本。

  • 可序列化的隔离。表更改是原子性的,因此读者永远不会看到部分或未提交的更改。

  • 并发作家。Iceberg 使用乐观并发来允许多笔交易成功。如果发生冲突,其中一位作者必须重试交易。

  • 打开文件格式。Iceberg 支持多种开源文件格式,包括 Apache Par quet、ApacheAvro 和 Apache ORC。

总而言之,使用 Iceberg 格式的数据湖受益于事务一致性、速度、规模和架构演变。有关这些功能和其他 Iceberg 功能的更多信息,请参阅 Apache Iceb erg 文档。

AWS 支持 Apache Iceberg

Apache Iceberg 由流行的开源数据处理框架以及亚马逊 EMR、亚马逊 Athena、Amazon Redshift AWS 服务 等提供支持。AWS Glue 下图描绘了基于 Iceberg 的数据湖的简化参考架构。

交易数据湖架构

以下内容 AWS 服务 提供原生 Iceberg 集成。还有一些 AWS 服务 可以与Iceberg进行间接交互或通过打包Iceberg库进行交互。

  • Amazon S3 凭借其持久性、可用性、可扩展性、安全性、合规性和审计功能,是构建数据湖的最佳场所。Iceberg 的设计和构建旨在与亚马逊 S3 无缝交互,并为 Iceberg 文档中列出的许多 Amazon S3 功能提供支持。

  • Amazon EMR 是一种大数据解决方案,使用 Apache Spark、Flink、Trino 和 Hive 等开源框架,用于千兆字节规模的数据处理、交互式分析和机器学习。亚马逊 EMR 可以在自定义的亚马逊弹性计算云 (Amazon EC2) 集群、亚马逊弹性 Kubernetes Service(亚马逊 EKS)或亚马逊 EMR Serverless 上运行。 AWS Outposts

  • Amazon Athena 是一项基于开源框架的无服务器交互式分析服务。它支持开放表和文件格式,并提供了一种简化、灵活的方式来分析存放的 PB 级数据。Athena 为 Iceberg 的读取、时空旅行、写入和 DDL 查询提供原生支持,并将其用 AWS Glue Data Catalog 于 Iceberg 元数据库。

  • Amazon Redshift 是一个 PB 级的云数据仓库,支持基于集群和无服务器的部署选项。Amazon Redshift Spectrum 可以查询注册并存储 AWS Glue Data Catalog 在亚马逊 S3 上的外部表。Redshift Spectrum 还支持 Iceberg 存储格式。

  • AWS Glue是一项无服务器数据集成服务,可以更轻松地发现、准备、移动和集成来自多个来源的数据,用于分析、机器学习 (ML) 和应用程序开发。 AWS Glue 3.0 及更高版本支持数据湖的 Iceberg 框架。您可以使用 AWS Glue 对 Amazon S3 中的 Iceberg 表执行读取和写入操作,也可以使用来处理 Iceberg 表。 AWS Glue Data Catalog还支持其他操作,例如插入、更新、Spark 查询和 Spark 写入。

  • AWS Glue Data Catalog提供支持 Iceberg 表的与 Hive 元存储兼容的数据目录服务。

  • AWS Glue 爬网程序提供了在中注册 Iceberg 表的自动化功能。 AWS Glue Data Catalog

  • 亚马逊 SageMaker支持使用 Iceberg 格式在亚马逊 SageMaker 功能商店中存储功能集。

  • AWS Lake Formation提供粗略而精细的访问控制权限来访问数据,包括 Athena 或 Amazon Redshift 使用的 Iceberg 表。要详细了解对 Iceberg 表的权限支持,请参阅 Lake Formation 文档

AWS 提供多种支持 Iceberg 的服务,但涵盖所有这些服务超出了本指南的范围。以下各节涵盖亚马逊 EMR 和 Amazon Athena SQL 上的 Spark(批量和 AWS Glue结构化直播)。以下部分简要介绍了 Athena SQL 中对 Iceberg 的支持。