使用 AWS Lambda、AWS Glue 和 AWS CloudWatch 监控 Apache


使用AWS Lambda、AWS Glue和AWS CloudWatch监控Apache Iceberg元数据层

关键要点

在这篇文章中,我们将探讨如何利用Apache Iceberg的元数据层优化数据湖的效率。你将了解一个开源解决方案,它能从Iceberg元数据层收集重要指标,并基于这些指标提供改进Iceberg表的建议。此外,我们还将介绍如何使用Amazon CloudWatch的异常检测功能来识别数据摄取问题。

在大数据时代,数据湖成为存储海量原始数据的基石。尽管数据湖有其优势,但传统的数据湖架构常常面临监控和维护的挑战。Apache Iceberg通过提供性能和扩展性更高的数据管理方式,解决了这些问题。

深入了解Iceberg元数据层

在深入解决方案之前,我们先了解Apache Iceberg的元数据层是如何运作的。Iceberg的元数据层为集成的大数据引擎如Spark或Trino提供开放规范,指导其如何执行读写操作及解决并发问题。它存储关于表的详细信息,包括模式、分区和文件组织,以版本化的JSON和Avro文件形式进行存档。这确保每一次变更都被跟踪和可逆,从而加强数据治理和审计能力。

使用 AWS Lambda、AWS Glue 和 AWS CloudWatch 监控 Apache

历史与版本控制 Iceberg的版本控制特性会将表元数据中的每次变化记录为不可变快照,便利数据的完整性、历史视图和回滚操作。

文件组织和快照管理 元数据会仔细管理数据文件,详细列出文件的路径、格式和分区,支持多种文件格式如Parquet、Avro和ORC。这种组织有助于通过谓词下推有效检索数据,减少不必要的数据扫描。快照管理允许并发数据操作而不互相干扰,确保事务间数据的一致性。

Apache Iceberg还提供了一些专门的元数据表快照、文件和分区为数据管理过程提供更深的洞察和控制。使用这些表,数据团队可以精确控制数据快照、文件管理和分区策略,提高数据系统的可靠性和性能。

在开始之前

下一节将描述一个使用Apache Iceberg元数据层和AWS服务的开源解决方案,以增强对Iceberg表的监控。

需要提到的是,Iceberg MetricsReporter是Apache Iceberg中发出指标的原生方式,支持提交提交和扫描的指标报告。为了将指标提交到CloudWatch或其他监控工具,用户需要创建并配置自定义的MetricsReporter实现。

接下来的解决方案独立部署,不需要对现有数据管道进行任何配置更改,可以立即开始监控部署所在AWS账户和地区的所有表。

解决方案概述

该解决方案特别设计用于在Amazon S3上运行Apache Iceberg的客户,并使用AWS Glue作为数据目录。

核心特性

该解决方案使用AWS Lambda部署包,从Apache Iceberg表收集指标。随后,这些指标将提交到CloudWatch,用户可以创建指标可视化以帮助识别趋势和异常。

该解决方案轻量设计,专注于直接从Iceberg元数据层收集指标,而不是扫描实际数据层。这大大减少了所需的计算能力,提高了效率并降低了成本。解决方案的关键特性包括: 时间序列指标收集 该解决方案持续监控Iceberg表,以识别数据摄取率、分区倾斜等方面的趋势和异常。 事件驱动架构 该解决方案使用Amazon EventBridge在AWS Glue数据目录表发生变化时启动Lambda函数,确保每次在Iceberg表上提交事务时进行实时指标收集。 高效的数据检索 通过利用AWS Glue交互式会话和pyiceberg库,直接访问Iceberg的元数据表,实现最小计算资源的使用。

跟踪的指标

截至博客发布日期,该解决方案收集了25个以上的指标。这些指标被分类为多个组:

指标类型描述快照指标包括数据文件的总数及变化、删除文件、添加或移除的记录、大小变化等。分区和文件指标包括聚合的每个分区的平均值、最大值、最小值记录数和文件大小,有助于理解数据分布并优化存储。

要查看完整的指标列表,请访问GitHub仓库。

使用CloudWatch控制面板可视化数据

该解决方案还提供了一个示例CloudWatch控制面板,用于可视化收集的指标。指标可视化对于实时监控和检测操作问题至关重要。提供的助手脚本简化了控制面板的设置和部署。

你可以访问GitHub仓库以了解更多如何在AWS账户中部署该解决方案的信息。

Apache Iceberg表的关键指标

本节讨论Iceberg元数据中的特定指标,以及它们在监控数据质量和系统性能方面的重要性。指标分为三个部分:洞察、挑战和行动。这提供了实际应用的明确路径。

1 snapshotaddeddatafiles snapshotaddedrecords

指标洞察:表示在最近一次事务中添加到表的数据文件和记录的数量。摄取率测量新数据添加到数据湖的速度,帮助识别数据管道中的瓶颈或低效,指导容量规划和扩展决策。挑战:如果摄取率突然下降,可能表明数据摄取管道发生故障、源系统停机、配置错误或流量高峰。行动:团队需要建立实时监控和警报系统,以及时检测摄取率的下降,便于快速调查和解决。

2 filesavgrecordcount filesavgfilesize

指标洞察:这些指标提供有关表格的分布和存储效率的洞察。小文件大小可能意味着过度分散。挑战:过小的文件大小可能导致存储效率低下,这会增加读取操作和I/O成本。行动:定期实施数据压缩流程有助于合并小文件,优化存储并提高内容交付速度。数据目录还提供Apache Iceberg表的自动压缩功能。要了解更多关于压缩Apache Iceberg表的信息,请参见启用压缩。

3 partitionsskewrecordcount partitionsskewfilecount

指标洞察:这些指标显示数据在可用表分区中的分布不对称情况。接近零的偏斜值表明数据分布平衡,而正或负的偏斜值可能暗示存在问题。挑战:分区之间的数据分布不均可能导致效率低下和缓慢的查询响应。行动:定期分析数据分布指标,以便调整分区配置。Apache Iceberg支持动态转换分区,根据查询模式或数据量改变,优化表分区,而不影响现有数据。

4 snapshotdeletedrecords snapshottotaldeletefiles snapshotaddedpositiondeletes

指标洞察:Apache Iceberg中的删除指标提供了表中删除数据的量和性质的重要信息。这些指标帮助追踪数据被删除或更新的频率,对于管理数据生命周期和遵循数据保留政策至关重要。挑战:这些指标的高值可能表明过多的删除或更新,这会导致碎片化,并降低查询性能。行动:为了解决这些问题,定期执行压缩以确保删除的行不会在新文件中持续存在。定期审查和调整数据保留政策,并考虑过期旧快照以保持必要的数据文件数量。您可以使用Amazon Athena Optimize在特定分区上运行压缩操作。

有效的监控对于做出有关Apache Iceberg表的必要维护行动的明智决策至关重要。确定这些行动的正确时机,是确保数据湖高效运作的关键。

使用Amazon CloudWatch进行异常检测和警报

本节假设您已完成解决方案设置并将Apache Iceberg表的操作指标收集到Amazon CloudWatch中。

现在您可以开始设置一些警报并检测异常。我们将指导您如何设置CloudWatch中的异常检测,并配置警报以监控snapshotaddedrecords指标,这表明写入Apache Iceberg表的数据摄取率。

设置异常检测

CloudWatch异常检测应用机器学习算法不断分析系统指标,以确定正常基线并识别超出既定模式的项目。按照以下步骤进行配置:

选择指标:在AWS管理控制台中,转到CloudWatch的指标选项卡,搜索并选择snapshotaddedrecords。创建异常检测模型:选择绘制指标选项卡,点击脉冲图标以启用异常检测。设置灵敏度:ANOMALYDETECTIONBAND (m1 5)的第二个参数用于调整异常检测的灵敏度。目标是平衡检测真实问题与减少误报。

配置警报

在异常检测模型设置后,配置警报以便将潜在问题通知运营团队:

创建警报:在同一个绘制指标选项卡下,选择铃铛图标进入操作。警报设置:设置警报以便当snapshotaddedrecords指标超出异常检测带连续两次时通知运营团队。这有助于降低误报的风险。警报操作:配置CloudWatch发送警报电子邮件给运营团队。除了发送电子邮件外,CloudWatch警报操作还可以自动启动补救流程,例如扩展操作或启动数据压缩。

最佳实践

定期审查和调整模型:随着数据模式的发展,定期审查和调整异常检测模型和警报设置,以保持其有效性。全面覆盖:确保监控数据管道的所有关键方面,而不仅仅是少数指标。文档与沟通:保持清晰的文档,说明每个指标和警报的含义,并确保运营团队理解监控设置和响应程序。在合适的渠道如电子邮件、公司消息或电话上设置警报机制,以确保运营团队及时获取信息并快速解决问题。创建操作手册和自动化补救任务:建立详细的操作手册,描述针对警报识别的常见情况的逐步响应。此外,尽可能自动化补救任务,以加快响应时间并减轻团队的手动负担。这确保对所有事件的响应都能保持一致有效。

CloudWatch的异常检测和警报功能帮助组织主动管理其数据湖,确保数据完整性,减少停机时间,并保持高数据质量,进而提高运营效率,并支持稳健的数据治理。

结论

在这篇文章中,我们探讨了Apache Iceberg对数据湖管理的变革性影响。Apache Iceberg通过ACID事务、模式演变和快照隔离等特性,解决了大数据所面临的挑战,提升了数据可靠性、查询性能和可扩展性。

我们深入剖析了Iceberg的元数据层及相关的快照、文件和分区元数据表,这些都使得获取表的当前状态的关键信息更为容易。这些元数据表促进了性能相关数据的提取,使团队能够监控和优化数据湖的效率。

最后,我们展示了一个利用Lambda、AWS Glue和CloudWatch监控Apache Iceberg表的实际解决方案。该解决方案结合了Iceberg的元数据层和CloudWatch监控功能,提供了一个主动的运营框架,检测趋势和异常,以确保数据湖管理的稳健性。

版权归作者所有

Michael Greenshtein 是AWS的高级分析专家。他是一位拥有超过8年云计算和数据管理经验的数据专业人士,热衷于开源技术和Apache Iceberg。

飞驰加速器app下载