分层命名空间
功能概述:
分层命名空间(Namespace)是百度智能云推出的元数据管理功能。通过分层命名空间,可以很好的支持目录级别的 Mv 与 Rename 操作,同时优化常见读操作 List、Head,提升数据处理效率与性能,能很好的满足大数据领域的数据湖计算场景。
功能开通:
- 第一步:可提交工单说明需求,系统将为您开通使用权限。
- 第二步:获取权限后,通过 BOS 工具或登录控制台创建需开启分层命名空间的存储桶。
功能架构:
优势:
- 大数据场景下也可以直接享受对象存储带来的自动化数据管理,存储低成本,数据强安全优势
-
原生基于对象的分层 Namespace 带来了大数据计算场景下对于文件语义的高性能表现
- 支持高性能原子 Rename/Delete Dir/Object
- 远低于平层对象存储的 List/Head 请求时延
- 直接基于对象存储的大数据分析(All in Object),节约额外的数据复制与流转、存储以及第三方服务费用
- 无额外的运维,管理及学习成本,充分享受对象存储的生态及工具
应用场景:
大数据分析与计算
大数据分析和大数据计算。对象存储作为云端最佳存储方案,BOS 提供一整套高性能大数据计算解决方案。在大数据场景中,BOS 可以作为您本地自建或者云端 MapReduce 计算集群 、Hive、Spark 离线数仓集群的底层存储系统,原生分层命名空间能力,可以将大数据计算中的大规模批量操作如 Rename、List、Head 等操作的时延降低约 70%,突破传统对象存储支持大数据计算方案的延迟瓶颈。
使用方式:
目前分层命名空间功能支持华北-北京地域、华南-广州地域的新建存储桶(Bucket)开启分层命名空间功能,开启后不支持关闭该功能。控制台开启分层命名空间的具体操作,详见控制台操作指南-分层命名空间存储桶操作说明。
您可以通过以下方式在开启了分层命名空间的 Bucket 中创建目录、并进行目录的重命名或删除操作。
方式 | 说明 |
---|---|
各语言 SDK | 丰富的 Demo |
控制台 | 页面操作直观易用,方便操作 |
命令行工具(BOS CMD) | 简单易用 |
功能支持与限制
支持
- 支持文件、目录语义和操作
- 目录原子性、毫秒级 Rename
- 优化读性能
- 支持平层对象存储绝大部分功能
限制
开启分层命名空间的存储桶支持功能与平层命名空间存储桶基本相同,均支持对象级别操作基本均支持比如:上传、下载、复制等;存储桶级别的配置功能如生命周期、事件通知、日志管理等也可正常使用,目前相比起平层命名空间存储桶仅有少部分功能暂不支持,若您有需求可提交工单反馈,具体说明如下:
Bucket 相关功能
- 不支持回收站
Object 相关功能
- 不支持归档存储类型文件
- 不支持上传带内容的目录(即上传内容非空但文件名末尾是
/
的文件) - 不支持文件软链接功能
- 不支持对象标签
接口调整
由于分层命名空间特性导致部分 BOS API 会有部分兼容和语义上的调整,如下所示:
ListObjects
对于 平层命名空间存储桶,分层命名空间下的 ListObjects API 的请求参数有所调整,具体说明参见下表,平层命名空间 ListObjects 详情请查看ListObjects接口说明。
字段 | 类型 | 是否必需 | 描述 |
---|---|---|---|
delimiter | String | 否 | 分隔符; 分层 Namespace 下 ListObjects 必须指定,且只能为/ |
marker | String | 否 | Object 为字母序排列,从 Marker 之后的第一个开始返回,为对象(文件)的全路径;分层命名空间下,将会返回父目录下的子文件或者子目录按照字典序大于 Marker 的结果 |
maxKeys | Int | 否 | 返回 Object 列表长度最大为 1000,默认值是 1000,如果指定的值大于 1000,按 1000 操作 |
prefix | String | 否 | 必须为对象的父目录,限定 ListObjects 接口只能返回以 Prefix 为父目录下的对象;Prefix 可以不以/ 结尾,BOS 会默认为其自动添加目录分隔符 |
特别说明
ListObjects 会将父目录下的所有子目录与对象按照字典序排序后返回;
ListObjects 在分层空间存储桶的目录下不再支持列出某个前缀(目录)下的所有文件,只支持根据给出的父目录信息列出子目录和子文件。