传统的大数据集群往往采用本地中心化的计算和存储集群。比如在谷歌早期的【三驾马车】中,使用 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 用,我们这里有个方案...的更多相关文章

  1. Github 29K Star的开源对象存储方案——Minio入门宝典

    对象存储不是什么新技术了,但是从来都没有被替代掉.为什么?在这个大数据发展迅速地时代,数据已经不单单是简单的文本数据了,每天有大量的图片,视频数据产生,在短视频火爆的今天,这个数量还在增加.有数据表明 ...

  2. HDFS对象存储--Ozone架构设计

    前言 如今做云存储的公司非常多,举2个比較典型的AWS的S3和阿里云.他们都提供了一个叫做对象存储的服务,就是目标数据是从Object中进行读写的,然后能够通过key来获取相应的Object,就是所谓 ...

  3. 使用 HDFS 协议访问对象存储服务

    背景介绍 原生对象存储服务的索引是扁平化的组织形式,在传统文件语义下的 List 和 Rename 操作性能表现上存在短板.腾讯云对象存储服务 COS 通过元数据加速功能,为上层计算业务提供了等效于 ...

  4. 阿里云对象存储服务,OSS使用经验总结,图片存储,分页查询

    阿里云OSS-使用经验总结,存储,账号-权限,分页,缩略图,账号切换 最近项目中,需要使用云存储,最后选择了阿里云-对象存储服务OSS.总的来说,比较简单,但是仍然遇到了几个问题,需要总结下. 1.O ...

  5. [转载] 文件系统vs对象存储——选型和趋势

    原文: http://www.testlab.com.cn/Index/article/id/1082.html#rd?sukey=fc78a68049a14bb2699b479d5e730f6f45 ...

  6. ios存储 plist 偏好设置 自定义对象存储

    1,plist Plist注意:不能存储自定义对象 Plist:数组和字典,  如何判断一个对象能不能使用Plist,就看下有没有writeToFile 获取应用的文件夹(应用沙盒) NSString ...

  7. iOS使用阿里云OSS对象存储 (SDK 2.1.1)

    最近项目中用到了阿里云OSS对象存储,用来存储APP中图片.音频等一些数据.但坑爹的阿里云居然在11月20日将SDK版本更新到了2.1.1,然而网上给出的教程都是1.*版本的(针对iOS),两个版本所 ...

  8. OpenStack对象存储——Swift

    OpenStack Object Storage(Swift)是OpenStack开源云计算项目的子项目之一,被称为对象存储,提供了强大的扩展性.冗余和持久性.本文将从架构.原理 和实践等几方面讲述S ...

  9. 阿里云对象存储OSS访问控制

    阿里云对象存储OSS的Android SDK提供了STS鉴权模式和自签名模式来保障移动终端的安全性. OSS可以通过阿里云STS (Security Token Service) 进行临时授权访问.交 ...

随机推荐

  1. js 改变this指向的三种方法 bind call apply

    先了解下bind call apply 的注意点 bind 需要手动调用 第一个参数 this 要指向的对象,后面是 散列的参数 call 不需要手动调用 第一个参数 this 要指向的对象,后面是 ...

  2. Spring 框架学习

    转载自前辈:我没有三个新脏 Spring学习(1)--快速入门 认识 Spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (I ...

  3. 2020.11.1--pta阶梯练习赛补题

    7-5 古风排版 中国的古人写文字,是从右向左竖向排版的.本题就请你编写程序,把一段文字按古风排版. 输入格式: 输入在第一行给出一个正整数N(<),是每一列的字符数.第二行给出一个长度不超过1 ...

  4. Flink sql 之 TopN 与 StreamPhysicalRankRule (源码解析)

    基于flink1.14的源码做解析 公司内有很多业务方都在使用我们Flink sql平台做TopN的计算,今天同事突然问到我,Flink sql 是怎么实现topN的 ? 蒙圈了,这块源码没看过啊 , ...

  5. win 常用修复蓝屏,系统比对最后更新20210804

    您可以尝试以下方案: 在管理员命令提示符下键入以下命令:Dism /Online /Cleanup-Image /ScanHealth这条命令将扫描全部系统文件并和官方系统文件对比,扫描计算机中的不一 ...

  6. kivy画个半圆

    from kivy.uix.boxlayout import BoxLayout from kivy.app import App class BoxLayoutWidget(BoxLayout): ...

  7. 第四次Alpha Scrum Meeting

    本次会议为Alpha阶段第四次Scrum Meeting会议 会议概要 会议时间:2021年4月28日 会议地点:线上会议 会议时长:18min 会议内容简介:本次会议主要由每个人展示自己目前完成的工 ...

  8. [对对子队]会议记录5.24(Scrum Meeting10)

    今天已完成的工作 梁河览 ​ 工作内容:修改第一关的新手引导 ​ 相关issue:优化初步导出版本 ​ 相关签入:fix:改进第一关的新手引导 何瑞 ​ 工作内容:为加速按钮添加锚点 ​ 相关issu ...

  9. Python爬取COVID-19疫情监控实战

    一.项目概述 本项目基于Python.Flask.Echarts打造的一个疫情监控系统,涉及技术: Python网络爬虫 Python与Mysql数据库交互 使用Flask构建web项目 基于Echa ...

  10. Unity的Deferred Shading

    什么是Deferred Shading Unity自身除了支持前向渲染之外,还支持延迟渲染.Unity的rendering path可以通过Edit/Project Settings中的Graphic ...