听说你想把对象存储当 HDFS 用,我们这里有个方案...
传统的大数据集群往往采用本地中心化的计算和存储集群。比如在谷歌早期的【三驾马车】中,使用 GFS 进行海量网页数据存储,用 BigTable 作为数据库并为上层提供各种数据发现的能力,同时用 MapReduce 进行大规模数据处理。
但随着互联网业务的发展,本地中心化的架构开始受到以下两个方面的挑战:
数据增长越来越快,并且数据格式更加丰富多样,非结构化数据越来越多。传统的分布式存储引擎难以大规模存储和处理文本、音视频等非结构化数据。
计算和存储强耦合在本地应用上,缺少弹性。强耦合的模式增加了企业成本,因为需要为计算或者存储的峰值需求准备资源。
在大约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 等场景。
当前功能为公测能力,如需体验请加入对象存储服务群,联系我们开启。
听说你想把对象存储当 HDFS 用,我们这里有个方案...的更多相关文章
- Github 29K Star的开源对象存储方案——Minio入门宝典
对象存储不是什么新技术了,但是从来都没有被替代掉.为什么?在这个大数据发展迅速地时代,数据已经不单单是简单的文本数据了,每天有大量的图片,视频数据产生,在短视频火爆的今天,这个数量还在增加.有数据表明 ...
- HDFS对象存储--Ozone架构设计
前言 如今做云存储的公司非常多,举2个比較典型的AWS的S3和阿里云.他们都提供了一个叫做对象存储的服务,就是目标数据是从Object中进行读写的,然后能够通过key来获取相应的Object,就是所谓 ...
- 使用 HDFS 协议访问对象存储服务
背景介绍 原生对象存储服务的索引是扁平化的组织形式,在传统文件语义下的 List 和 Rename 操作性能表现上存在短板.腾讯云对象存储服务 COS 通过元数据加速功能,为上层计算业务提供了等效于 ...
- 阿里云对象存储服务,OSS使用经验总结,图片存储,分页查询
阿里云OSS-使用经验总结,存储,账号-权限,分页,缩略图,账号切换 最近项目中,需要使用云存储,最后选择了阿里云-对象存储服务OSS.总的来说,比较简单,但是仍然遇到了几个问题,需要总结下. 1.O ...
- [转载] 文件系统vs对象存储——选型和趋势
原文: http://www.testlab.com.cn/Index/article/id/1082.html#rd?sukey=fc78a68049a14bb2699b479d5e730f6f45 ...
- ios存储 plist 偏好设置 自定义对象存储
1,plist Plist注意:不能存储自定义对象 Plist:数组和字典, 如何判断一个对象能不能使用Plist,就看下有没有writeToFile 获取应用的文件夹(应用沙盒) NSString ...
- iOS使用阿里云OSS对象存储 (SDK 2.1.1)
最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所 ...
- OpenStack对象存储——Swift
OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性.冗余和持久性.本文将从架构.原理 和实践等几方面讲述S ...
- 阿里云对象存储OSS访问控制
阿里云对象存储OSS的Android SDK提供了STS鉴权模式和自签名模式来保障移动终端的安全性. OSS可以通过阿里云STS (Security Token Service) 进行临时授权访问.交 ...
随机推荐
- java设计模式_工厂模式
关于设计模式 设计模式(Design Pattern)是一套被反复使用.多数人知晓的.经过分类的.代码设计经验的总结,是一种设计思维,使用设计模式的目的:为了代码可重用性.让代码更容易被他人理解.保证 ...
- 2020.5.4-ICPC Pacific Northwest Regional Contest 2019
A. Radio Prize All boring tree-shaped lands are alike, while all exciting tree-shaped lands are exci ...
- Go语言核心36讲(Go语言进阶技术一)--学习笔记
07 | 数组和切片 我们这次主要讨论 Go 语言的数组(array)类型和切片(slice)类型. 它们的共同点是都属于集合类的类型,并且,它们的值也都可以用来存储某一种类型的值(或者说元素). 不 ...
- 【java】【作业】定义课程信息;继承和组合练习
问题: 定义课程信息类,包含课程编号.课程名称及学生成绩.编程实现对软件工程专业的某班级的所有课程成绩统计,包括平均成绩.最高成绩.最低成绩,并打印成绩等级分布律. 分析 初分析: 父类(课程信息类) ...
- 如何知道当前使用的python的安装路径
电脑里多处安装了python,那么如何得知当前使用python的安装路径呢? 方法一 运行python指令: import sys print(sys.executable) 方法二 对于终端和Win ...
- Sobol 序列并行化的实践经验
目录 Sobol 序列并行化的实践经验 随机数发生器并行化的常见策略 Sobol 序列的原理和跳转功能 Sobol 序列并行化实践 分块策略 蛙跳策略 蛙跳策略的计算量分析 减少异或计算的技巧 分块策 ...
- Beta发布声明
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 Beta-发布声明 我们是谁 删库跑路对不队 我们在做什么 题士 进度如何 进度总览 一.功能与特性 1.一 ...
- 2021.10.7考试总结[NOIP模拟71]
信心赛,但炸了.T3SB错直接炸飞,T4可以硬算的组合数非要分段打表求阶乘..T2也因为一个细节浪费了大量时间.. 会做难题很好,但首先还是要先把能拿的分都拿到. T1 签到题 结论:总可以做到对每个 ...
- 广域网(ppp协议、HDLC协议)
文章转自:https://blog.csdn.net/weixin_43914604/article/details/105028759 学习课程:<2019王道考研计算机网络> 学习目的 ...
- Makefile目标文件搜索(VPATH和vpath
转载:http://c.biancheng.net/view/7051.html 我们都知道一个工程文件中的源文件有很多,并且存放的位置可能不相同(工程中的文件会被放到不同的目录下),所以按照之前的方 ...