据说你想把对象存储当 HDFS 用,咱们这里有个方案...

2021年11月25日 阅读数:15
这篇文章主要向大家介绍据说你想把对象存储当 HDFS 用,咱们这里有个方案...,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

传统的大数据集群每每采用本地中心化的计算和存储集群。好比在谷歌早期的【三驾马车】中,使用 GFS 进行海量网页数据存储,用 BigTable 做为数据库并为上层提供各类数据发现的能力,同时用 MapReduce 进行大规模数据处理。数据库

但随着互联网业务的发展,本地中心化的架构开始受到如下两个方面的挑战:segmentfault

  • 数据增加愈来愈快,而且数据格式更加丰富多样,非结构化数据愈来愈多。传统的分布式存储引擎难以大规模存储和处理文本、音视频等非结构化数据。
  • 计算和存储强耦合在本地应用上,缺乏弹性。强耦合的模式增长了企业成本,由于须要为计算或者存储的峰值需求准备资源。

在大约2015年以后,因为对象存储具备极高的数据持久性,跨地域的容灾以及低成本等优点,AWS S3 等公有云对象存储服务逐渐替代了 HDFS,成为愈来愈多企业的海量分布式存储引擎。服务器

尽管对象存储能够提供低成本的海量分布式存储,支持结构化、半结构化、非结构化数据的存储,因为对象存储和文件系统在元数据组织方式上的差别,致使原生的对象存储在传统文件系统元数据操做如 List 和 Rename 等操做上的性能差距较大。而在大数据场景下,整个MapReduce 过程当中每每会产生大量的 List 和 Rename 操做,相比原生的 HDFS,在大数据分析效能会有明显的性能损失。架构

为了知足客户基于对象存储的大数据分析的性能要求,腾讯云对象存储基于云 HDFS 的产品能力,推出了元数据加速特性,赋予对象存储以高性能的文件系统能力。用户只须要在建立存储桶时开启元数据加速能力,便可使用文件系统语义访问对象存储,将对象存储的适用范围扩宽到大数据、高性能计算、机器学习,AI等场景。机器学习

元数据加速能力

对象存储的文件元数据信息(好比文件名,文件的分块信息,文件分块所处的服务器信息等)存储在索引库表中。按照当前主流公有云对象存储的设计,会按照字典序返回文件索引信息;加上索引信息存储在 SSD 盘上,拉取索引信息的性能会受限于 SSD 盘单进程限制,所以每一个存储桶的 List QPS 很难达到较高的数值。而原生对象存储中, Rename 操做实际上对应着一次文件 Copy 操做和一次 Delete 操做,MapReduce 过程当中会存在大量 Rename 操做的性能并不高。分布式

针对这些问题,一个直观的解决方案是将元数据管理单独剖离出来,为上层计算业务提供兼容HDFS 文件系统语义的访问能力,这就是对象存储的元数据加速能力。工具

下图展现了元数据加速能力的一个简要示意图。区别于普通的对象存储,启用了元数据加速能力后,元数据相关的操做会路由到元数据加速层进行处理。性能

有了元数据加速能力的加持,就能够直接将对象存储当作 HDFS 用,用文件系统语义来访问对象存储服务。一方面,这一能力极大地提高了 List 等大数据文件系统操做的性能;另外一方面,也提供了 Rename、Truncate等典型的文件系统操做指令,提供了大数据生态兼容支持。学习

如何使用

您能够在控制台上很是便捷地为存储桶配置元数据加速能力。以下图所示,您能够在对象存储建立存储桶时开启元数据加速能力。测试

开启元数据加速能力后,能够经过控制台、SDK 、 API 或者 COSN 工具等方式上传文件(PutObject)、建立文件夹(CreateObject)、重命名文件(RenameObject)、追加写文件(AppendObject)或者截断文件(TruncateObject)等操做。

性能表现

上文提到元数据加速能力可以极大提高文件 List 和 Rename 等文件系统操做的性能。这一章节咱们详细介绍具体的性能表现状况。

咱们使用 GooseFS 创建两个不一样的命名空间,分别对接开启了元数据加速能力和未开启元数据加速能力的存储桶,分别 ls 和 ls -R 不一样数量级的文件。本次测试主要验证元数据操做性能,所以文件大小统一设置为 0 B。每组测试会屡次测试取均值,主要评估指标为总延迟均值。

详细的测试数据以下:

元数据数量 指令类型 开启元数据加速能力 未开启元数据加速能力
5W ls 4.359s 10.354s
100W ls 7.065s 21.376s
50W ls -R 4.359s 10.354s
50W ls -R 7.065s 21.376s

能够看到,相比起普通的对象存储服务,元数据加速能力能够至少一倍的 List 请求性能。

而在 Rename 性能上,咱们采用了一样的方式,屡次重命名一个有 1000 个 100 KB 文件的目录, Rename 延迟测试数据以下:

测试次数 开启元数据加速能力 未开启元数据加速能力
1 1.016s 30.323s
2 1.018s 29.789s
3 1.011s 30.934s

能够看到,相比起普通的对象存储服务,元数据加速能力能够数十倍地下降 Rename 请求延迟。

写在最后

元数据加速能力拓宽了对象存储服务的使用场景,在底层采用了云 HDFS 卓越的元数据管理功能,支持用户经过文件系统语义访问对象存储服务,系统设计指标能够达到2.4Gb/s带宽、10万级 QPS 以及 ms 级延迟。存储桶在开启元数据加速功能后,能够普遍应用于大数据、高性能计算、机器学习、AI 等场景。
当前功能为公测能力,如需体验请加入对象存储服务群,联系咱们开启。