海量非结构化数据存储中的小对象合并技术

丰富的线上&线下活动,深入探索云世界

做任务,得社区积分和周边

最真实的开发者用云体验

让每位学生受益于普惠算力

让创作激发创新

资深技术专家手把手带教

遇见技术追梦人

技术交流,直击现场

海量开发者使用工具、手册,免费下载

极速、全面、稳定、安全的开源镜像

开发手册、白皮书、案例集等实战精华

为开发者定制的Chrome浏览器插件

随着人工智能,IoT等技术的推广普及,智能监控,智能制造等新兴领域蓬勃发展,涌现出了越来越多的海量非结构化数据存储需求。举例来说,服务于公安机关的智能监控程序,不仅需要存储视频,而且还需要存储因使用人脸识别技术而产生的人脸截图等文件。这一类的小图像通常只有几个KiB到几十个KiB大小,但是数目巨大,动辄十亿甚至百亿规模。

这类业务,并不需要文件系统提供的复杂语义。相反,只需要存取(PUT/GET)的简单操作模式,使得这类业务非常适合使用对象存储。虽然对象存储相比文件存储更擅长处理数目巨大的非结构化数据,但对于十亿甚至百亿的规模,依然会对现有的系统(如软件定义存储中最常用的Ceph)造成严重的性能和可用性的冲击。本文将介绍如何通过引入adCache、PhxKV等自研组件,成功支持百亿级别的海量小对象存储。

基于Ceph方案处理海量小对象的问题

在上图的例子中,OP2在处理过程中,从OSD2发生离线故障,这时,由于从OSD2仍然被认为在线,导致OP2被挂起,直到monitor更新从OSD2的状态,OP2才可以被返回。当OSD2从离线状态重新上线时,会执行修复操作,同步自己和主OSD的状态。

为了修复复制组中离线的OSD,重新上线的OSD会比对自身和主OSD中的oplog,定位出离线期间发生修改的R-obj,并从主OSD中复制这些R-obj的副本。注意,RADOS中oplog的作用只为定位发生改变的R-obj,并不能通过replayoplog的方式进行数据恢复。所以,发生变化的R-obj都需要进行全量修复。即使bucketindexR-obj只是在从OSD2离线时插入了一条omap,修复bucketindexR-obj的过程中,依然需要复制整个bucketindexR-obj的omap列表,且修复过程也会阻塞业务I/O。

讲到此处,我们已经不难看出RGW处理海量小对象时,元数据处理带来的问题:1.OSD短暂离线,造成bucketindexR-obj无法访问时,会阻塞业务I/O。

使用PhxKV承载海量小对象

我们已经说明了RADOS的一致性协议和修复机制在海量小对象场景中带来的问题,接下来,我们将说明深信服企业级分布式存储EDS是如何通过自研的分布式KV——PhxKV来支撑海量小对象的元数据存储。我们首先介绍区分于RADOS一致性协议的RAFT协议,之后介绍我们如何以RAFT协议为基础,构建了PhxKV分布式KV系统。

RAFT一致性协议

RAFT协议有三个重要组成部分:Log,状态机,和一致性模块。一个RAFT组中有多个peer,其中一个为leader,其他为followers。

如上图所示,客户端将op发送至leader的一致性模块,之后leader请求所有的peer将该opappend至Log中,当大部分(例如,三个peer中的两个)append成功时,就可以认为op已经commit,这时,leader更新状态机,并返回请求。至于followers,leader会在后续的op中指示其将已经commit的oplog执行,更新状态机。

当leader发生故障,或者leader所在分片中的peer数少于大部分peer数导致leader

下台时,RAFT协议通过各peer间心跳的超时来触发选主流程,从而进行视图的变更。

RAFT协议的具体细节和故障处理方面比较复杂,我们就不在此赘述,有兴趣的读者可以移步去阅读论文InSearchofanUnderstandableConsensusAlgorithm。我们在此归纳RAFT协议的以下特点:

1.RAFT协议中,一个op成功的条件更容易被满足:当复制组中大部分节点返回成功时,一个op即被认为处理成功,这一特征,使得某些节点网络不稳定或者主机重启时,I/O能够不被阻塞;

4.承接第一点和第三点,peer修复的过程对上层透明,并不会阻塞业务I/O。

PhxKV架构

接下来,我们介绍如何基于RAFT协议构建PhxKV系统。

PhxKV的架构如上图所示,PhxKV提供和本地KV引擎类似的增删改查和批量操作的同步异步接口。PhxKV的key空间被一致性哈希映射到若干个region中,各region管理的key没有重合,每个region对应一个RAFT复制组,通过RAFT协议维护一致性。PhxKV采用RocksDB作为底层引擎,提供本地的KV接口。

PhxKV的主要组件和角色如下所述:

1.KVagent是PhxKV的服务端进程,管理存储在相同物理介质上的regions。出于对故障域的考虑,不同KVagent管理的物理空间处在不同的SSD上。相同region的不同副本存储在不同KVagent上,并通过RAFT协议进行同步。

2.Metadataserver管理元数据。通过KVagent定时的心跳上报收集KVagent和region的健康状况,及时通过心跳回复下达负载均衡和修复操作。出于容错考虑,metadataserver也有多个进程运行在不同主机上,并通过RAFT协议进行同步。

3.客户端执行I/O操作。客户端通过被动定时心跳和主动心跳从metadataserver拉取各Region的路由信息,之后,根据路由从对应的KVAgent中执行对应的增删改查操作。

PhxKV针对业务特征,还进行了一系列深度优化:

1.RocksDB为了提供高性能和高可靠性的写入操作,在写操作时,oplog先顺序写入WAL(write-aheadlog)进行持久化,数据部分则只是在内存中更新memtable,后续才以大块I/O的形式刷入底层SST文件。

事实上,RAFT协议中的Log可以作为状态机的WAL使用。我们通过RocksDB的disableWAL配置项关闭了状态机的WAL,这样,状态机的更新只需操作内存,减少了一半的落盘操作,大大降低了时延。不过作为代价,在掉电的情况下重启,状态机会发生数据丢失,我们首先需要利用RAFTLog来扮演WAL,将状态机恢复至重启前的状态。

2.PhxKV在进行修复和扩容时,需要将Region内的全部数据进行复制和迁移。逐条复制性能较差,我们使用RockDB提供的sst_file_writer和IngestExternalFiles功能,进行整Region的批量插入,降低了逐条插入的锁操作对性能的影响,并消除了一致性隐患。3.RocksDB的删除操作是异步操作,并不能快速回收空间。当某个KVagent容量告急,迁移出region时,可能很久之后才会见效,影响负载均衡效果。我们深度订制了RocksDB,通过改变数据组织形式,使得Region的删除操作可以同步快速回收空间。

PhxKV在EDS海量小对象中的角色

除去RADOS一致性和修复带来的问题,元数据规模过大,底层数据的碎片化也是RGW面对小对象合并时的棘手问题。EDS使用另一组件,分布式缓存(adCache)和PhxKV双剑合璧,一起打造了海量小对象的解决方案。AdCache将数据暂时缓存在SSD盘上,后续再批量回刷至RADOS,大幅降低了写请求的访问时延。

上图表示了小对象合并架构中的各组件关系。在Ceph的原始实现中,RGW将对象的数据和元数据都直接存储在RADOS中,其中元数据以键值的形式存储在R-obj的omap中。RGW使用librados和RADOS进行交互。

为了实现上述改造逻辑,我们劫持了RGW对数据部分和元数据部分的操作。其中,元数据部分被重定向至PhxKV中。此外,数据操作被重定向至adCache,adCache用异步合并回刷的原则,后续对存储的小对象被进一步聚合后,回刷至底层引擎RADOS中。同时,adCache会生成二级索引,使得可以定位到小对象在合并后存储的位置和偏移,在数据回刷至RADOS时,二级索引也会作为元数据被批量写入到PhxKV中。

结论

海量小对象场景,是对象存储的新机会,也为现有架构提出了新的挑战。深信服EDS基于现有的架构,取长补短,合理引用新组件解决关键核心问题,并能够让老组件RADOS继续发挥特长,为海量小对象的存储打开了新思路。

作者介绍:

Eddison,从事分布式KV数据库PhxKV的研发工作。香港中文大学博士,研究大数据存储系统的性能和可靠性,在USENIXFAST,USENIXATC等顶级会议发表多篇学术论文。从业以来,专注分布式一致性,KV引擎,纠删码等领域,2018年加入深信服科技。

THE END
1.数据分析常用的知识点概括举例子:从5个彩色球中,选出2个彩球,有多少种排列方法? 代入得出答案是20种 事件及其概率 事件 其实事件为样本空间的一个子集,通常,如果能确定一个试验的所有样本点并且能够知晓每个样本点的概率,那么我们就能求出事件的概率。 概率的基本性质 事件A的补:指的是所有不包含在https://mp.weixin.qq.com/s?__biz=MzA3NzIxNDQ3MQ==&mid=2650329307&idx=1&sn=a8acceeb61e80f30140e97cb94f5c059&chksm=86fc3b0e8e011cb7b5774fd8ddeac196609601fc74c38130b8619d2c15ef06adc9328cce132c&scene=27
2.结构化半结构化和非结构化数据都有哪些半结构化数据是指既不是完全结构化的,也不是完全非结构化的数据。这种数据类型包含标签或其他标记,以区分数据元素,但不遵循严格的数据模型,如关系数据库模型。 举例: JSON文档:用于Web应用的数据交换,包含键值对,但数据结构可以灵活变化。 XML文件:标记语言,用于描述数据的结构,常用于配置文件和数据交换。 https://www.jianshu.com/p/7018b1bef624
3.2022年中国知识图谱行业研究报告澎湃号·湃客澎湃新闻互联网的海量信息带有碎片化与非架构化特征。新兴互联网应用的蓬勃发展,让完整信息被分类分解为信息片段,信息被大量简化,从而导致信息本身不全面、内在逻辑不完整。同时,文本、图片、各类报表和音频、视频、HTML等非结构化数据广泛存在于互联网中。互联网企业需要在现有的存量业务中,收集碎片化信息,处理非结构化数据,挖掘https://www.thepaper.cn/newsDetail_forward_19458208
4.取其精华!设计师读书笔记连载系列之《简约至上》优设网5、非结构化数据 系统要求用户输入信息:2016-04-06,当你少输入一个数字或者输入错误时,就会提示你。向用户转移用在这里并不合适,用户非常反感强制性的做法。如果你能仅仅让用户输入:明天,本周五,七天后这些字符便能识别,用户一定更为愉悦 记得最开始使用siri的时,凌晨一点多,我想让Siri明上八点叫醒我,我们的对话https://www.uisdc.com/note-for-simple-and-usable
5.数据的结构分类:结构化数据,半结构化数据以及非结构化数据(image data) RNN:循环神经网络,对于一位序列化数据有着很好的表现(one-dimensional sequence data) 2.结构化数据和非结构化数据结构化数据:数据库中的数据非结构化数据:机器在结构化数据中表现更好 Why is deep learning taking off? DeepLearning学习1 基础知识 https://www.pianshen.com/article/22011187582/
6.以下那些数据属于非结构化数据的是?()声明: 本网站大部分资源来源于用户创建编辑,上传,机构合作,自有兼职答题团队,如有侵犯了你的权益,请发送邮箱到feedback@deepthink.net.cn 本网站将在三个工作日内移除相关内容,刷刷题对内容所造成的任何后果不承担法律上的任何义务或责任 https://www.shuashuati.com/ti/d13c328065ce4f07888ba39048aa7e72.html
7.非结构化数据采集ETL必备10种工具推荐我心飞翔StreamSets是一个大数据采集工具,数据源支持包括结构化和半/非结构化,目标源支持HDFS,HBase,Hive,Kudu,Cloudera Search, ElasticSearch等。它包括一个拖拽式的可视化数据流程设计界面,定时任务调度等功能。举例,它可以将数据源从Kafka连接到你的Hadoop集群,而不需要写一行代码。 https://www.iteye.com/blog/gaozzsoft-2539359
8.数据湖存储非结构化数据星环科技为您提供数据湖存储非结构化数据相关内容,帮助您快速了解数据湖存储非结构化数据。如果想了解更多数据湖存储非结构化数据资讯,请访问星环科技官网(www.transwarp.cn)查看更多丰富数据湖存储非结构化数据内容。https://www.transwarp.cn/keyword-detail/52484-1
9.IBMCloudObjectStorage在银行业非结构化数据存储嘲下的对象随着银行业IT技术的快速发展和业务的不断升级变革,业务应用系统产生的非结构化数据(包括文件、图片、音视频文件等)的规模也越来越大,银行业非结构化数据呈指数式爆发式增长。目前使用非结构化数据的主要系统包括内容管理平台、后督影像系统、身份验证、柜员办业务扫描件等需要用到影像图片,以及呼叫中心系统、电话客服的https://redhat.talkwithtrend.com/Article/242823
10.Hebbia获1.3亿美元B轮融资,用AI解封96%的非结构化私密数据Google仅索引了全球数据的4%,还有96%的非结构化私密数据没被索引和查询,AI驱动的企业知识管理搜索引擎Hebbia希望将这部分数据的价值释放出来,成为知识工作者的可靠帮手。 它的AI产品能够索引、阅读和理解非结构化私密数据,在复杂数据集上的表现比当前最先进的机器学习信息检索技术平均高出57%,搜索速度和准确度提升十https://36kr.com/p/2857737302100864
11.大数据五大基本特点大数据五大基本特点:数据量大、非结构化数据多样性、数据增长速度快、数据有价值性、数据真实。 大 数据五大基本特点 1、Volume:数据量大 数据量呈指数增长中储存/集中计算已经无法处理巨大的数据量。 2、Variety :非结构化数据多样性 非结构化数据多样性,例如文本/图片/视频/文档等。 https://www.36dianping.com/news/10509.html
12.1+X大数据财务分析职业技能等级标准3.4 结构化数据 structured data 一种数据表示形式,按此种形式,由数据元素汇集而成的每个记录的结构都 是一致的并且可以使用关系模型予以有效描述。 3[GB/T 35295-2017,定义02.02.13] 3.5 非结构化数据 unstructured data 不具有预定义模型或未以预定义方式组织的数据。 https://www.scsw.edu.cn/kjx/info/1014/1054.htm
13.《简约至上》三千字总结(简约至上)书评举例来说,有一大群使用微软的Excel软件长达5年的用户,其中有一些人可能已经知道了某些设置和选项的作用,有一些人会掌握一些高级技巧,而剩下的一大部分人则只会对数字一栏求和。为什么应该忽略专家型用户?因为他们追求主流用户不在乎的功能。福特的T型车并不是市场上的第一辆汽车,但却是第一辆为平民大众制造的汽车https://book.douban.com/review/13806006/
14.数据仓库包含哪些数据类型帆软数字化转型知识库数据仓库包含多种数据类型,包括结构化数据、半结构化数据、非结构化数据、元数据和主数据。 其中,结构化数据是指可以在关系数据库中存储和管理的数据,通常以表格形式呈现,每一行代表一条记录,每一列代表一个字段。例如,公司的财务报表、销售记录等。结构化数据通过SQL查询语言进行管理和检索,因此非常适合需要高效查询https://www.fanruan.com/blog/article/329848/
15.大数据的类型和特点非结构化数据是指缺乏预先确定的概念含义并且难以被传统数据库或数据模型理解或分析的信息。大多数大数据由非结构化数据组成,包括事实、日期和数字。视音频文件、移动活动、卫星照片等各类大数据 半结构化数据: 半结构化数据是指有一定结构但不具有完全结构化的数据,例如XML、JSON、HTML等格式的数据。半结构化数据不具有https://www.013kj.cn/info_view.php?VID=789
16.数据概述因此,如果数据具有某种结构形式但其结构对需要数据的处理任务没有帮助,则仍可将其视为非结构化数据。 举例来说,相较包含客户信息的关系数据库(结构化),难以对大型文本文档缓存(非结构化)进行索引编制和搜索。 在本课程中,可以将非结构化数据定义为不适合关系数据库的数据。 此外,某些数据可能会因使用不可预测的访https://docs.microsoft.com/zh-cn/learn/modules/cmu-cloud-storage/1-data-overview/