Azure Data Lake Storage 分层命名空间

允许 Azure Data Lake Storage 以对象存储规模和价格提供文件系统性能的一个关键机制是添加一个分层命名空间。 此功能将帐户中的对象和文件的集合组织到目录和嵌套子目录的层次结构中,类似于计算机上的文件系统。 启用分层命名空间后,存储帐户即可提供对象存储的可扩展性和成本效益,以及分析引擎和框架所熟悉的文件系统语义。

分层命名空间的优点

通过 Blob 数据实现分层命名空间的文件系统具有以下优势:

  • 原子目录操作: 通过采用在对象名称中嵌入斜杠 (/) 来表示路径段的惯用做法,使对象存储接近目录层次结构。 虽然此约定适用于组织对象,但它对移动、重命名或删除目录等操作没有帮助。 在没有真实目录的情况下,应用程序可能必须处理数百万个单独的 blob 才能完成目录级任务。 与之相反,分层命名空间通过更新单个项(父目录)处理这些任务。

    这种优化对于许多大数据分析框架尤其重要。 Hive 和 Spark 等工具通常会将输出写入临时位置,然后在作业结束时重命名位置。 如果没有分层命名空间,此重命名操作通常需要比分析过程本身更长的时间。 作业延迟降低就等同于分析工作负荷的总拥有成本 (TCO) 降低。

  • 熟悉的界面样式: 开发人员和用户都了解文件系统。 迁移到云端后,您无需学习新的存储模式,因为 Data Lake Storage 提供了与各种大小的计算机所使用的相同文件系统接口。

对象存储历史上不支持分层命名空间的原因之一是分层命名空间会限制缩放。 但是,Data Lake Storage分层命名空间会线性缩放,并且不会降低数据容量或性能。

决定是否启用分层命名空间

在帐户上启用分层命名空间后,无法将其还原回平面命名空间。 因此,请考虑根据对象存储工作负载的性质启用分层命名空间是否有意义。 要评估启用分层命名空间对工作负载、应用程序、成本、服务集成、工具、功能和文档的影响,请参阅使用 Azure Data Lake Storage 功能升级 Azure Blob 存储

某些工作负载可能无法通过启用分层命名空间获得任何益处。 示例包括备份、图像存储和其他应用程序,其中对象组织与对象本身分开存储(例如,存储在单独的数据库中)。

此外,尽管对 Blob 存储功能和Azure服务生态系统的支持仍在增长,但具有分层命名空间的帐户尚不支持某些功能和Azure服务。 请参阅已知问题

一般情况下,为存储工作负荷启用分层命名空间,该命名空间专为处理目录的文件系统而设计。 此建议包括主要用于分析处理的所有工作负荷。 需要高度组织的数据集也受益于启用分层命名空间。

启用分层命名空间的原因由 TCO 分析确定。 一般来说,由于存储加速,工作负荷延迟的改进需要计算资源的时间更少。 由于分层命名空间支持原子目录操作,许多工作负载的延迟可能会降低。 在许多工作负荷中,计算资源占总成本的 85 个以上%,因此即使工作负荷延迟的适度减少也相当于节省大量 TCO。 即使启用分层命名空间会增加存储成本,但由于降低了计算成本,TCO 仍然会降低。

若要分析具有平面分层命名空间与分层命名空间的帐户之间数据存储价格、事务价格和存储容量预留定价的差异,请参阅 Azure Data Lake Storage 定价

后续步骤