在最近的Pi Day期间,AWS宣布了用于 Amazon S3 的 Mountpoint,这是一个开源文件客户端,用于在 Amazon S3 上提供高吞吐量访问。目前处于 alpha 阶段,本地挂载点提供高单实例传输率,主要用于数据湖应用程序。
Amazon S3 的挂载点将本地文件系统 API 调用转换为 S3 对象 API 调用,如 GET 和 LIST。客户端支持对文件的随机和顺序读取操作以及文件和目录的列表。alpha 版本不支持写入 (PUT),预计客户端将来仅支持对新对象的顺序写入。
AWS 学者、德克萨斯大学助理教授James Bornholt 、 AWS 高级产品经理Devabrat Kumar和 AWS 杰出工程师Andy Warfield承认,该客户端不是一个通用的网络文件系统,并且自带对文件操作和写入的一些限制:
Mountpoint 专为并行读取和生成大量 S3 数据但不需要写入现有对象中间的能力的大型分析应用程序而设计。Mountpoint 允许您将 S3 存储桶或前缀映射到实例的文件系统命名空间,将存储桶的内容当作本地文件一样遍历,并实现对对象的高吞吐量访问。
开源客户端不模拟需要许多 S3 API 调用或 S3 API 不支持的 POSIX 文件系统功能的目录重命名等操作。
S3 的挂载点并不是第一个将 S3 作为文件系统呈现的客户端,Goofys和s3fs是流行的开源选项,可以通过 FUSE 挂载存储桶。虽然一些开发人员在 Reddit 上质疑对新客户端的需求,并担心它将在数据湖空间之外使用,但 Bornholt、Kumar 和 Warfield 写道:
Mountpoint 并不是第一个用于访问 S3 的文件客户端——我们的客户已经使用过多个开源文件客户端。然而,我们从这些客户那里听到的一个共同主题是,他们希望这些客户提供与他们从 S3 的 REST API 和 AWS SDK 获得的相同的稳定性、性能和技术支持。
新客户端在大多数 AWS SDK 使用的公共运行时 (CRT)上内置 Rust ,依靠自动推理来验证文件系统语义。The Duckbill Group 首席云经济学家 Corey Quinn发推文说:
哦不,AWS做了什么?我花了 15 年的时间对人们大喊大叫不要将 S3 用作文件系统只是为了被 S3 团队自己取消!
云专家和 AWS 无服务器精英 Ben Kehoe警告说:
考虑使用文件概念的 S3 会误导您对 API 语义的理解,并且您最终会做出错误的假设,并且当您的系统总是出现轻微故障时您会感到难过,因为这些假设不成立。根据 Apache License 2.0 发布,Mountpoint 尚未准备好用于生产工作负载。GitHub 上提供了初始alpha 版本和公共路线图。