AIStor 增加了对 S3 Express API 的支持

AIStor 增加了对 S3 Express API 的支持

2023 年底,亚马逊推出S3 Express 单区存储(S3 Express One Zone) ,重新定义了人们对公有云中高性能对象存储的期望。几乎所有主流 AI 构建者和数据湖实践者都在采用这个速度更快的 API。正如 AWS 一贯所做的那样,他们推动了行业的发展,而且现在比以往任何时候都更加明确:对象存储是现代 AI 架构和数据湖的基础。

MinIO AIStor现已支持亚马逊 S3 Express API,这是通用 S3 API 的精简版本。MinIO AIStor 是首个也是唯一一个采用 AWS S3 Express API 的 AI 数据存储平台,它使企业能够将所有分析数据和 AI 数据(而不仅仅是部分数据)以“快速模式”存储,且无需额外费用。

AIStor 始终以最少的硬件提供最佳的吞吐量,使网络能够充分满足 LLM 模型检查点和完整数据湖刷新等高容量读取需求。随着 S3 Express API 的加入,AIStor 能够在全球领先的对象存储软件的支持下,在本地、私有云、托管服务器和混合环境中运行对延迟最敏感的用例。

在接下来的部分中,我们将深入探讨 S3 Express API 与标准 API 的不同之处、这些差异对 AI 和数据湖工作负载的重要性,以及 AIStor 如何将这些优势带给您自己的基础设施,并通过基准测试来证明这一点。

为什么选择 S3 Express:值得考虑的权衡

AWS S3 Express 单区功能在解决标准 AWS S3 对象存储跨多区性能限制方面迈出了重要一步。通过消除全局元数据聚合和服务端校验和计算等开销,它重新定义了对象存储对延迟敏感型工作负载的处理能力。为了提升性能,Express 还做出了重要的 API 级别权衡:移除了版本控制、对象锁定和基于 MD5 的 ETag 验证,以降低延迟。此外,在 S3 Express API 中,LIST 操作不再按字典顺序排序,这打破了某些传统应用程序的固有假设。

在 AWS 中,这些性能提升带来的好处也伴随着一些权衡。首先,与标准 S3 存储相比,Express 的成本高出 5 倍,因此在很多情况下使用 Express 存储的成本过高。其次,它没有内置的复制或数据保护功能。这使得工作负载面临巨大的数据丢失风险。这两个因素使得 S3 Express 单区存储被刻意设计为临时存储:应用程序需要将源数据复制到 Express 存储桶中,处理数据,提取结果,然后删除数据,从而创建一个复杂且容易出错的工作流程。

这些缺点在 AIStor 的内部实施 S3 Express 中根本不存在。

战略契合:人工智能对象存储的先发优势

AIStor 独具特色地支持通用 S3 API 的广泛性,以及精简、性能优先的 S3 Express API 模型;所有这些都具有可在任何地方部署的灵活性。这种灵活性使企业能够构建与工作负载特征精确匹配的数据基础架构:标准 S3 用于不可变源数据,而 S3 Express 用于低延迟、高提取率的操作,例如模型训练、数据湖分析和流处理。

在实践中,这种双重策略对于数据湖架构而言可能意味着:承载原始源数据的青铜级将继续使用通用的 S3 API,因为此类工作负载需要版本控制和不变性。而银级、金级和白金级,由于大部分数据都用于转换和查询,因此可以利用精简的 S3 Express API。

AWS 仅提供 S3 Express 作为单区域、临时存储类型,且不具备内置保护功能,而 AIStor 则更进一步。企业可以访问 S3 Express 性能模型以及同步主动/被动复制功能,即使对于 Express 工作负载也能实现 RPO=0 保证。这使得企业可以安全地将 S3 Express 语义用于运营生产数据,而不仅仅是用于短期临时数据处理。

借助 AIStor,企业现在可以同时获得两全其美的效果:他们可以在自己的基础设施上利用 S3 Express API 及其性能优势,而无需牺牲数据保护或经济可行性。

unnamed10.png

将低延迟性能提升到新的水平

在通用 S3 API 中,协议中嵌入了多种延迟因素,包括 PUT 操作的 MD5 摘要计算、所有节点上 LIST 结果的全局排序、版本化存储桶的一致性保证以及复杂的分段提交行为。这些因素都会增加 CPU 负载、内存压力和协调延迟,虽然这些因素对于传统的对象存储用例来说可以接受,但对于 PB 级规模的 AI/分析流程而言,却构成了重大障碍。

借助 S3 Express API,AWS 和 AIStor 都通过重新思考存储协议和后端实现,消除了这些瓶颈。ETag 轻量且唯一,无需摘要计算。LIST 直接从存储节点流式传输,无需聚合。附加操作原生支持原子一致性,无需中间临时文件或复杂的对象拼接。分段上传只需连续提交分段,从而简化了应用程序逻辑和验证。

变化:精简的 API,真正的收益

对于 MinIO 来说,大规模 GET 性能已是难题。AIStor 长期以来一直为大文件 GET 提供近乎线速的读取吞吐性能,轻松满足 100Gbps、400Gbps 甚至新兴的 800Gbps 网络的需求。同样,AIStor 也早已满足了存储服务器硬件的小文件 GET IOPS 能力,支持诸如对大型表进行小范围读取的实时分析等应用。

如今,瓶颈已转移到 LIST 和 PUT 性能上。随着数据量的增长,元数据操作和对象提取中细微的低效问题所带来的影响将变得无比巨大。个性化 AI 和流式日志提取等应用对通用 S3 API 语义引入的延迟尤为敏感。

AIStor 的 S3 Express API 支持引入了关键的架构改进,旨在消除传统的 S3 开销:

LISTObjectsV2

  • 结果未排序
  • 路径分隔符仅为 /
  • 前缀匹配是分层的;必须明确指定目录

优势:在生产环境中,更快获取首字节数据。代码更简洁,行为更可预测。导出到非 S3 系统(例如备份或存档)时,消除兼容性问题。

放置对象

  • 消除了服务器端 MD5 校验和计算并降低了 AIStor CPU 利用率,Etag 现在只是一个唯一的标识符。
  • 目录和对象不能共享相同的名称(例如,foo/bar.txt 表示 foo 必须是目录,而不是对象)
  • 目录是真实存在的目录,与对象是相互独立的。这意味着,标准 S3 API 中迎合旧版 POSIX 应用程序的“目录 hack”(本质上是模拟 mkdir 的 hack)已被关闭。

优势:所有对象大小均可更快上传。更低 CPU 使用率,更高并发吞吐量。

PutObject/多部分

  • 各部分必须按连续顺序排列才能完成提交。
  • 消除所有服务器端 MD5 校验和计算,降低 AIStor CPU 利用率,Etag 现在只是一个唯一标识符。使用更新的 S3 对象校验和功能来验证对象是否已正确传输。

优势:应用程序行为更简单、更可靠。上传速度更快,吞吐量更高。

放置对象/追加

  • 每个对象最多可包含 10,000 个分块。如果一个对象是通过分段上传“x”个分块创建的,则可能的附加数量为 10,000-x。
  • 追加操作是原子提交(严格一致),提交到对象末尾,所有应用程序立即可见。每次追加都会被提交。
  • 与传统 POSIX 中先提交即成功且没有顺序保证不同,现在的追加操作既是原子性的,也是独占性的。所有传入的写入操作都由提供显式偏移量的应用程序排序,从而保证了顺序性。第一个以该偏移量请求写入的操作将会成功,后续的请求尝试将会失败。

优势:确保分布式环境中的一致性和正确性。降低应用程序复杂性。保证事件驱动和日志式工作负载的可预测、有序行为。

其他变化:

S3 Express API 中禁用了版本控制和不可变性,以便为原子性和独占性附加操作留出空间。Apache Iceberg 等开放表格式已经能够高效地管理数据版本控制。版本控制通常由应用层管理,因为它能够更好地了解数据上下文。这消除了存储层的冗余功能,并进一步提高了小对象的吞吐量。

分段上传行为已简化。现在必须按连续顺序提交分段,从而消除了分段顺序错误的可能性。这降低了复杂性,从而最大限度地减少了应用程序代码中与数据一致性相关的错误和问题。

由于允许应用程序管理加密密钥存在安全风险,S3 Express API 移除了使用客户提供密钥 (SSE-C) 的服务器端加密。目前仅支持 SSE-S3 和 SSE-KMS,以确保强加密和安全的集中式密钥管理。

目录行为也已得到修正。通用 S3 API 通过零字节对象模拟目录,并且允许重复的目录和对象名称,这会导致导出数据时出现混乱和不兼容的情况。S3 Express API 实现了真实目录,解决了此限制,并实现了与非 S3 兼容系统的无缝数据互操作性。

总的来说,这些改进消除了常见的延迟源,降低了系统复杂性,并增强了应用程序的可预测性。这些性能改进并非纸上谈兵:我们已经进行了基准测试,并证明了其效果。

性能基准测试结果

对于 AIStor 而言,S3 Express API 相对于 S3 API 的性能优势显著提升,LIST 操作的速度也显著加快,而 PUT 的速度也提高了约 20%:

unnamed11.png

Operation AIStor S3 API (400GbE) AIStor S3 Express API (400GbE) % Gains with AIStor
PUTs - 64MiB 54319.12 MiB/sec 65153.35 MiB/sec 20% faster
LIST - 100,000 objects per prefix (64 concurrent calls per client with * 8 clients) 345994.08 Objs/sec 417563.29 Objs/sec 21% faster
LIST - 100,000 objects per prefix (64 concurrent calls per client with * 8 clients) TTFB Avg: 646ms TTFB Avg: 118ms 447% faster
LIST - 100,000 objects per prefix (64 concurrent calls per client with * 8 clients) TTFB P90: 823ms TTFB P90: 203ms 305% faster
LIST - 100,000 objects per prefix (64 concurrent calls per client with * 8 clients) TTFB P99: 948ms TTFB P99: 277ms 242% faster

我们还比较了 AIStor 上的 S3 Express API 与 AWS S3 Express One Zone 上的 PUT、GET 和 LIST 性能,结果显示速度全面提升,并且大对象 GETS 和 LIST API 调用的速度显著提升。

output24.png

Operation AWS S3 Express One Zone (200 GbE) AIStor S3 Express API (400GbE) % Gains with AIStor
PUT(小对象 - 1MB) 23102.31 MiB/秒 * 26103.01 MiB/秒 速度提升 13%
PUT(大对象 - 128MB) 58387.57 MiB/秒 71817.83 MiB/秒 速度提升 23%
GET(小对象 - 1MB) 38173.45 MiB/秒 42401.24 MiB/秒 速度提升 11%
GET(大对象 - 128MB) 70336.16 MiB/秒 103479.35 MiB/秒 速度提升 47%
列表 137401.37 个对象/秒 * 417563.29 个对象/秒 速度提升 204%
由于 AWS 没有稳定的值可供报告,因此这里未捕获首次字节时间 (TTFB)。 TTFB 平均:118 毫秒 不适用
由于 AWS 没有稳定的值可供报告,因此这里未捕获首次字节时间 (TTFB)。 TTFB P90:203毫秒 不适用
由于 AWS 没有稳定的值可供报告,因此这里未捕获首次字节时间 (TTFB)。 TTFB P99:277毫秒 不适用

AWS S3 Express 单区性能需要部署具有 200GbE 链路的更高端 EC2 实例,例如 c6in.32xlarge。AWS S3 Express 单区在更高并发度下通过节流和 SlowDown 请求对 LIST 操作返回错误。显示的数字来自稳定运行且无错误的情况。

结果不言而喻,并无可辩驳地证明 AIStor 能够为现代 AI 和分析工作负载的整个生命周期(从摄取到训练再到推理)提供吞吐量和低延迟性能。

基准测试配置

对于 AIStor,基准测试设置使用了 QLC 硬盘,具体来说是西部数据 WUS5EC1C1ESP7Y1 型号,容量为 61.44 TiB,配备 PCIe 4.0 接口。这些硬盘被归类为读取密集型/优化型,并使用西部数据 BiCS5 3D TLC NAND。这些硬盘的性能指标包括:随机 4KB 读取高达 890,000 IOPS,随机 4KB 写入高达 29,000 IOPS。值得注意的是,性能在 15 TiB 时达到最高,然后逐渐下降:在 30 TiB 时性能下降一半,在 60 TiB 时性能下降 4 到 6 倍。

存储节点采用 AMD EPYC 9754 128 核处理器,并配备 512 GiB 内存。每个节点均配备 400 GiB/秒的接口,用于节点间和客户端流量,由 MT4129 ConnectX-7 网卡驱动。本次测试共涉及 8 个节点。

为了在 AWS 上进行测试,配置包括 8 个 c6in.32xlarge 实例,每个实例每小时花费约 7 美元。

入门

应检查应用程序的兼容性。S3 Express API 在现代数据堆栈中拥有广泛的生态系统支持,但在投入生产之前,请务必检查各个组件是否兼容。

依赖于 S3 功能(如对象锁定、MD5 ETag 验证或强排序的 LIST 结果)的工作负载必须进行修改或与配置为使用 S3 Express API 的 AIStor 部署隔离。

unnamed12.png

要充分利用 S3 Express API,请使用最新版本的 AIStor 客户端和 SDK。AWS SDK 也受支持。S3 Express API 专注于性能关键型操作:PUT、GET、LIST 和 Append。API 级别不支持高级对象生命周期管理功能、通知事件和对象版本控制。

复制设置依然简单。AIStor 支持 S3 Express 存储桶的同步主动/被动复制,确保在需要时实现零 RPO。异步复制也适用于全球分布式灾难恢复场景。

AIStor 文档将在发布时提供详细的配置示例、推荐的架构和迁移指南。

适合您的 API

这篇文章概述了 S3 Express API 与标准 S3 API 的区别、S3 Express API 对性能的影响以及 AIStor 如何在您自己的基础架构上以更快、更经济的方式提供全面的数据保护和复制,从而实现这些优势。

对于需要版本控制、锁定或跨工具兼容性的工作负载,请使用标准通用 S3 API。对于训练、分析和流式传输等快速提取、低延迟操作,请使用 S3 Express API。

上一篇 下一篇