使用分层命名空间功能前,建议您仔细阅读本文档,避免影响功能的正常使用。
前提条件
当前支持分层命名空间功能的地域,请参见支持地域。
使用分层元数据
分层桶按照全新的分层架构来组织元数据,因此有目录实体。在支持原扁平桶的访问接口的同时,有一些访问行为上面有优化,同时如果您使用不推荐的方式访问 TOS,可能会影响性能及使用体验。建议您注意以下事项,使用推荐的方式访问分层桶。
推荐方式
- 使用分层列举(携带
delimiter,且只能使用目录分隔符 /),性能极佳。 - 如果您有在文件写的过程中对业务隐藏的需求,您可以使用创建临时文件、追加写文件内容、写完成后Rename文件到正式名字。
- 在需要单文件并发加速上传时,使用对象分片上传功能。
不建议行为
- 不建议使用扁平方式列举(即不携带
delimiter)。 - 目录不能被覆盖,创建已经存在的目录会显示成功,但是目录不会新建。
- 分层桶遵循最终一致原则,在上传对象过程中,执行 Rename 各级父目录,会导致上传完成后,原文件路径(对象 Key)不可访问,需要 Rename 后的父目录重新拼接对象 Key。在分片对象未完成期间,发生父目录 Rename,也是如此。
- 不建议使用第三方的兼容S3协议工具对接到分层桶使用。
分层桶严格按照“分层”方式管理元数据,有目录实体和文件实体之分;而扁平桶以“扁平”方式管理元数据,只有对象一种实体。这两种管理方式会带来一些差异:单纯使用对象Key模拟目录层级和实际有目录层级系统的差异,如:删除目录、列举子目录和文件等,在两种桶内的行为表现不一样。因此不建议使用第三方的兼容S3协议工具对接到分层桶使用,例如:Hadoop S3A组件会发送删除目录的请求,服务端会报冲突导致业务对接失败;使用S3协议来挂载桶作为本地文件系统的工具会出现目录和文件混淆导致业务失败。当您需要使用第三方的S3兼容的工具时,建议先咨询技术支持。
约束限制
分类 | 约束 |
|---|
创建数量 | 每个账号最多可以创建 100 个分层桶和扁平桶。 |
存储桶名 | 存储桶名约束限制,请参见存储桶(Bucket)。 |
目录名称 | 目录与子目录或者文件之间以 / 作为分固定分隔符,列举时只能以此作为 Delimiter。 |
对象名称 | 最大支持 1024 字符长度的对象全路径,最多支持 512 层目录。 |
EMR Proton 版本 | EMR Proton 2.0 及以上版本支持分层桶。如果您的 Proton 版本低于 2.0,您可以提交工单 ,联系火山引擎技术支持人员,更新 Proton 版本。
Proton 版本更新记录,请参见 Proton 发行版本。 |