Type something to search...
S3 Tables 初探:AWS 如何简化云端数据分析

S3 Tables 初探:AWS 如何简化云端数据分析

2024 年 re:Invent 大会上最让人眼前一亮的重磅消息之一,就是 Amazon S3 Tables 的亮相。这玩意儿专为简化 S3 上的数据分析而生,用 Apache Iceberg 来管结构化数据,完完全全是个托管服务。这消息一出,有人甚至开始猜,S3 是不是要变身成一个全托管的数据湖仓,把 Snowflake 和 Databricks 挤出局?不过,实际情况没那么夸张,得多琢磨琢磨。


S3 Tables 概述

Amazon S3 Tables 推出了一种新型 S3 存储桶,支持以 Apache Parquet 格式存储结构化数据,并通过 Apache Iceberg 格式管理表格。这一功能旨在提升分析工作负载的性能,因为在传统的 S3 Standard 存储上执行查询时,常因交易限制或意外的成本增加而遭遇性能瓶颈。

回顾其背景,对于依赖 S3 Standard 存储的分析场景,用户通常需手动利用 Apache Hive 配置表格格式。然而,Hive 在功能和优化方面存在不足,难以满足理想需求。因此,越来越多的 S3 Standard 用户转而采用 Apache Iceberg,后者针对 Hive 的短板进行了优化,提供了包括提升查询性能、时间旅行、模式演进、ACID 事务支持及降低成本等优势。

尽管如此,在 S3 Standard 上使用 Iceberg 仍需用户自行配置和管理表格,这意味着额外的工程投入和相关成本。而 S3 Tables 则为用户承担了这部分工作,因此被一些人视为“托管式 Iceberg 服务”。

S3 Tables 带来了以下主要优势:

  • 持续的表格维护:优化查询性能与成本,包括数据压缩、快照管理和未引用文件清理。
  • 与 AWS 分析服务的便捷集成:支持 Amazon Data FirehoseAthenaRedshiftEMRQuickSight 等服务,同时兼容外部查询引擎(如 Apache Spark),提供多种客户端读写支持。
  • Iceberg 的核心特性:如行级事务、可查询快照和模式演进。
  • S3 的固有优势:包括安全性、耐久性、可用性、S3 API 支持等。
  • 增强的安全性:通过基于身份或资源的策略设置表级权限。
  • 更高的性能:相比通用 S3 桶中自管理的表格,提供更高的每秒事务处理量(TPS)和查询吞吐量。

了解更多:AWS 官方 S3 Tables 介绍


S3 Tables 成本分析

总体而言,S3 Tables 的定价尚属合理。其费用包括存储费用(按监控对象计费)、请求费用以及可选的数据压缩维护费用。

为提供更全面的视角,我们将对比 S3 Tables 与 S3 Standard 的定价。以下价格以美国东部弗吉尼亚地区(US East N Virginia)为基准。

存储费用采用分级计费模式,存储量越大,单价越低。以跨所有层级的 TB 存储量计算,S3 Tables 的存储费用较 S3 Standard 高出约 15%。监控费用则与 S3 Intelligent-Tiering 的监控费用标准一致。

S3 存储定价维度S3 TablesS3 Standard
监控,所有存储 / 月每 1000 个对象 $0.025
前 50 TB / 月$0.0265/GB$0.023/GB
后续 450 TB / 月$0.0253/GB$0.022/GB
超过 500 TB / 月$0.0242/GB$0.021/GB

API 请求费用同样适用,但与常规 S3 存储桶的费率相同。

S3 请求定价维度S3 TablesS3 Standard
PUT、POST、LIST 请求$0.005$0.005
GET 及其他请求$0.0004$0.0004

此外,数据压缩费用按以下标准收取,这也是部分用户开始担忧成本的地方。然而,正如一些观点指出,虽然 AWS 未公开其压缩算法,但可合理推测 AWS 不会对同一对象重复压缩。

S3 维护定价维度S3 TablesS3 Standard
压缩 - 对象每处理 1000 个对象 $0.004
压缩 - 数据处理每处理 GB $0.05

了解更多:AWS S3 定价详情*


S3 Tables 定价场景示例

假设一个 S3 Table 存储了 10 TB 数据,每个对象的平均大小为 1 GB。当月共有 100 万次 PUT 请求和 1000 万次 GET 请求。以下为大致费用估算:

  • 10 TB 数据 = 10,000 GB 数据

  • 10 TB 数据 ÷ 1 GB 平均对象大小 = 10,000 个对象

  • 存储费用:10,000 GB 数据 × $0.0265/GB = $265.00

  • 监控费用:10,000 个对象 × ($0.025 / 1000 个对象) = $0.25

  • API 请求费用

    • 100 万次 PUT 请求 × ($0.005 / 1000 请求) + 100 万次 GET 请求 × ($0.004 / 1000 请求) = $9.00

假定对象每月仅压缩一次,估算每月有 10% 的对象需要压缩:

  • 压缩费用 - 对象:(10,000 个对象 × 10%) × ($0.004 / 1000 个对象) = $0.004
  • 压缩费用 - 数据处理:(10,000 GB × 10%) × $0.05/GB = $50.00

总费用:$265.00(存储) + $0.25(监控) + $9.00(API) + $0.004(压缩对象) + $50.00(压缩数据处理) = $324.25

相比之下,若使用 S3 Standard,相同场景下的费用为 $239.00,S3 Tables 在此例中高出约 36%。是否值得为免去自行维护表格而支付这一成本,取决于您的具体需求。下一节将详细探讨 S3 Tables 的适用与非适用场景。

了解更多:AWS S3 定价详情


S3 Tables 适用场景

AWS 推荐将 S3 Tables 应用于优化表格数据的分析工作负载,例如每日采购交易流式传感器数据广告曝光量实时流处理变更数据捕获(CDC)以及日志分析

对于使用 S3 Standard 存储并依赖其他数据格式(如 Apache Hive)进行查询的场景,若遇到查询速度缓慢或成本过高的问题,S3 Tables 可能提供比自行管理和维护更简便的解决方案。然而,若您已在 S3 Standard 上使用 Apache Iceberg,且拥有足够高效的压缩机制,则转换至 S3 Tables 的工程投入和额外成本可能并不划算。

需注意的一个缺点是,该实现方式可能导致一定程度的供应商锁定。与传统湖仓架构的完全开放性相比,S3 Tables 并非开放存储,且需依赖 AWS 专用 API 和第三方连接器进行外部集成。

此外,截至目前,S3 Tables 尚未在所有区域可用,与 AWS Glue 的集成仍处于预览阶段,这可能会限制其使用范围。

综合上述因素,S3 Tables 或将对 SnowflakeDatabricks 构成一定挑战,但远未达到取代它们的程度。


结论

随着 AWS 持续扩展区域可用性,并逐步完善与 AWS Glue 等服务的集成(目前已脱离预览阶段),S3 Tables 有望成为其他数据湖解决方案的强劲竞争者。目前,它在传统对象存储与专用分析数据库之间提供了一个深思熟虑的折中方案,使企业能够更便捷地利用 Apache Iceberg 的优势,而无需承担繁重的运营负担。


联系我们

有任何云成本管理的需求或问题?欢迎通过以下方式联系我们!

公众号

Mofcloud 微信公众号二维码

企业微信客服

Mofcloud 企业微信客服二维码

业务咨询

contact@mofcloud.com

技术社区

mofcloud/issuer

地址

北京市海淀区自主创新大厦 5层

标签 :

推荐阅读