掌桥专利:专业的专利平台
掌桥专利
首页

一种元数据的存储方法、系统及相关装置

文献发布时间:2023-06-19 10:48:02


一种元数据的存储方法、系统及相关装置

技术领域

本申请涉及数据存储领域,特别涉及一种元数据的存储方法、系统及相关装置。

背景技术

当集群中文件数较多时,对NameNode(管理文件系统的命名空间,用于维护着文件系统树及整棵树内所有的文件和目录)造成较大压力,导致NameNode服务异常的问题。NameNode将完整的元数据存放在内存中,能够为元数据的访问提供快速的响应速度,但是当集群文件数较多时,将对NameNode的内存造成较大的压力。每个文件的元数据在内存中约占用1KB的空间,当集群中有一亿个文件时,用于存放元数据的堆空间将达到100GB,而Heap(堆内存)的大小通常设置在64GB以下,因为Heap较大时GC将成为一个大问题。

为了解决这个问题,Hadoop开源社区提出了RBF解决方案,这种方案基于路由技术将数据存储到多套Hadoop集群中,集群之间存在数据均衡问题,而且增加了部署难度。

发明内容

本申请的目的是提供一种元数据的存储方法、存储系统、计算机可读存储介质和电子设备,能够降低元数据存储压力,从而提高热点元数据的访问速度。

为解决上述技术问题,本申请提供一种元数据的存储方法,具体技术方案如下:

当检测到元数据写入时,判断收集器容量是否达到高位容量值;所述收集器位于内存中;

若否,通过主存储器将所述元数据存入所述收集器;

若是,利用辅助存储器将所述收集器中过期元数据转移至所述磁盘后,通过主存储器将所述元数据存入所述收集器;所述过期元数据为超过预设时长未被访问的元数据。

可选的,利用所述辅助存储器将所述收集器中过期元数据转移至所述磁盘前,还包括:

根据所述收集器容量的低位容量值确认所述过期元数据。

可选的,根据所述收集器容量的低位容量值确认所述过期元数据包括:

确认所述收集器中各所述元数据的最近被访问时间;

将最近被访问时间超过所述预设时长的元数据作为所述过期元数据,并配置所述过期元数据的访问状态为不可访问。

可选的,利用辅助存储器将所述收集器中过期元数据转移至所述磁盘包括:

将所述过期元数据迁移至预设集合,再利用所述辅助存储器将所述预设集合中的过期元数据转移至所述磁盘,并在所述收集器中对应清除所述过期元数据。

可选的,还包括:

将第一操作集存于所述主存储器,将第二操作集存于所述辅助存储器;所述第一操作集用于提供基于内存的元数据存储操作,所述第二操作集用于提供基于磁盘的元数据存储操作。

可选的,当检测到元数据查询操作时,还包括:

判断所述主存储器是否加载出所述元数据查询操作对应的目标元数据;

若是,直接返回所述目标元数据;

若否,通过所述辅助存储器加载所述目标元数据。

可选的,还包括:

监测所述收集器的容量状态,若所述收集器达到高位容量值,启动驱逐程序执行利用所述辅助存储器将所述收集器中过期元数据转移至所述磁盘的步骤。

本申请还提供一种元数据的存储系统,包括:

判断模块,用于当检测到元数据写入时,判断收集器容量是否达到高位容量值;

第一存储模块,用于所述判断模块判断结果为否时,通过主存储器将元数据直接存入所述收集器;所述收集器位于内存中;

第二存储模块,用于所述判断模块判断结果为是时,利用辅助存储器将所述收集器中过期元数据转移至所述磁盘后,通过主存储器将所述元数据存入所述收集器;所述过期元数据为超过预设时长未被访问的元数据。

本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如上所述的方法的步骤。

本申请还提供一种电子设备,包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时实现如上所述的方法的步骤。

本申请提供一种元数据的存储方法,包括:当检测到元数据写入时,判断收集器容量是否达到高位容量值;所述收集器位于内存中;若否,通过主存储器将所述元数据存入所述收集器;若是,利用辅助存储器将所述收集器中过期元数据转移至所述磁盘后,通过主存储器将所述元数据存入所述收集器;所述过期元数据为超过预设时长未被访问的元数据。

本申请通过监控收集器的容量值,当元数据写入时,若容量值未达到高位容量值时直接存入收集器,而一旦达到高位容量值,先移除收集器中的过期元数据,再存入元数据。确保收集器中的数据量始终小于高位容量值,降低过量元数据对于收集器的存储压力,同时将过期元数据移除至磁盘,保证收集器中的元数据均为热度较高的元数据,有助于实现热点元数据的快速访问。对元数据操作没有性能损耗,保证存储集群的稳定性。

本申请还提供一种元数据的存储系统、计算机可读存储介质和电子设备,具有上述有益效果,此处不再赘述。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本申请实施例所提供的元数据的存储方法的流程图;

图2为本申请实施例所提供的元数据的存储系统结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图1,图1为本申请实施例所提供的元数据的存储方法的流程图,该方法包括:

S101:当检测到元数据写入时,判断收集器容量是否达到高位容量值;若否,进入S102;若是,进入S103;

本步骤旨在对收集器进行容量监测。该收集器位于内存,例如可以为文件系统的堆内存中,其用于存储集群文件系统的元数据。很显然,当集群文件数较多时,将对文件系统的内存造成较大的压力。每个文件的元数据在内存中约占用1KB的空间,当集群中有一亿个文件时,用于存放元数据的空间将需要100GB,这显然不符合当前服务器集群硬件配置需求。因此,本步骤对收集器容量进行容量检测,重点在于对收集器容量与高位容量值的比对。在此对于高位容量值的具体数值不作限定,容易理解的是,不同硬件配置的服务器集群其对应的高位容量值可以存在差异,即高位容量值应根据集群中实际内存大小作相应设定。例如可以设为实际内存大小的80%。

S102:通过主存储器将所述元数据存入所述收集器;

S103:利用辅助存储器将所述收集器中过期元数据转移至所述磁盘后,通过主存储器将所述元数据存入所述收集器。

当收集器容量未达到高位容量值时,新写入的元数据可以直接写入收集器。而一旦收集器容量达到高位容量值时,不论此时收集器容量为已经达到高位容量值,还是在写入新的元数据后将达到高位容量值,均可以视为收集器容量达到高位容量值。此时先利用辅助存储器将过期元数据转移至磁盘。容易理解的是,在转移过期元数据之前,可以先根据收集器容量的低位容量值确认过期元数据。将当前元数据数量与低位容量值的差值作为需要转移的过期元数据数量,即

EvicTotalNum=CurrentCapacity-LowWaterMark;

EvicTotalNum为需要转移的过期元数据数量,CurrentCapacity为收集器当前元数据数量,LowWaterMark为低位容量值。

具体的,可以确认收集器中各元数据的最近被访问时间,将最近被访问时间超过预设时长的元数据作为过期元数据,再根据上式确认需要转移的过期元数据数量,并配置过期元数据的访问状态为不可访问。在此对于预设时长不作具体限定,可以由本领域技术人员自由设定,预设时长的设定与元数据的热度相关。即可以将超过预设时长未被访问的元数据视为热度较低的数据,将在预设时长内存在访问的元数据视为热度较高的数据。相应的,执行步骤S103时,可以将过期元数据迁移至预设集合,再利用辅助存储器将预设集合中的过期元数据转移至磁盘,并在收集器中对应清除过期元数据。预设集合仅仅为过度存储单位,用于临时存储过期元数据,在此对于预设集合不作限定,例如可以采用MetaCandidates集合作为预设集合。

无论是主存储器还是辅助存储器,均属于存储器,只不过其在本实施例中所起到的作用存在差异。主存储器用于将元数据存入收集器,辅助存储器用于将收集器中过期元数据存储至磁盘,相当于主存储器对接内存,辅助存储器对应磁盘。具体的,可以将第一操作集存于主存储器,将第二操作集存于辅助存储器。第一操作集用于提供基于内存的元数据存储操作,第二操作集用于提供基于磁盘的元数据存储操作。在此对于元数据存储操作不作具体限定,可以包括元数据保存操作等等。

下文为保存元数据对应的操作集应用过程对应的程序示例:

本申请实施例通过监控收集器的容量值,当元数据写入时,若容量值未达到高位容量值时直接存入收集器,而一旦达到高位容量值,先移除收集器中的过期元数据,再存入元数据。确保收集器中的数据量始终小于高位容量值,降低过量元数据对于收集器的存储压力,同时将过期元数据移除至磁盘,保证收集器中的元数据均为热度较高的元数据,有助于实现热点元数据的快速访问。对元数据操作没有性能损耗,保证存储集群的稳定性。

基于上述实施例,作为优选的实施例,若采用MetaCandidates集合作为预设集合,其从收集器中移除过期元数器对应的操作程序示例可以如下文所示:

此后再将MetaCandidates集合中的元数据通过辅助存储器存放到磁盘中,并从收集器中清除,其对应的实施程序示例如下:

(MetaCandidates.hasNext()){

metastore.move(meta);

}

即确保转移到磁盘中的元数据不再于收集器中显示。

基于上述实施例,作为优选的实施例,在基于上述实施例的元数据存储方案中,对应的下文为元数据查询过程的相关步骤,具体可以包括:

S201:判断主存储器是否加载出元数据查询操作对应的目标元数据;若是,进入S202;若否,进入S203;

S202:直接返回目标元数据;

S203:通过辅助存储器加载目标元数据。

当接收到元数据查询请求时,先从主存储器中查询相应的目标元数据,若主存储器无法加载出相应的目标元数据,意味着该目标元数据存于磁盘中,此时可以通过辅助存储器从磁盘中加载目标元数据。

容易理解的是,上文所述的第一操作集和第二操作集中还可以包括元数据查询相关指令,用于执行本实施例的元数据查询过程。

本实施例为基于上述实施例的元数据查询过程,若被查询的目标元数据存于收集器中,则主存储器可以直接根据元数据查询操作加载出目标元数据,否则将通过辅助存储器从磁盘中加载。很显然从内存中加载目标元数据的速度远远快于从磁盘中加载,即实现了当目标元数据为热度较高的元数据时的快速加载。其核心在于将过期元数据存于磁盘,未过期元数据存于收集器,即内存,从而减少元数据查询过程中对于内存的依赖。

基于上述实施例,作为优选的实施例,并不一定在元数据写入时执行收集器中过期元数据的迁移。由于元数据通过为存储集群中文件的元数据,当涉及服务器之间文件迁移或同步时,多台服务器集群之间可能存在相应的元数据合并过程。为了降低过多元数据对于存储集群的影响,即元数据过多不利于文件检索,可以实时监测收集器的容量状态,若收集器达到高位容量值,启动驱逐程序执行利用辅助存储器将收集器中过期元数据转移至磁盘的步骤。

该驱逐程序可以以脚本、指令集等形式存于存储器中,并执行将收集器中的过期元数据转移至磁盘的元数据迁移操作。

下文提供一种本实施例具体应用过程中的相应程序,仅作为一种优选的示例:

上述程序中,Collertion指收集器,HighWaterMark指高位容量值。

本实施例旨在对收集器进行监测,驱逐程序能够确保热点元数据被保存在内存中的收集器中,而长时间未被访问的过期元数据存储在磁盘中,有助于实现热点元数据的快速查询。

下面对本申请实施例提供的一种元数据的存储系统进行介绍,下文描述的存储系统与上文描述的一种元数据的存储方法可相互对应参照。

参见图2,图2为本申请实施例所提供的元数据的存储系统结构示意图,本申请还提供一种元数据的存储系统,包括:

判断模块100,用于当检测到元数据写入时,判断收集器容量是否达到高位容量值;

第一存储模块200,用于所述判断模块100判断结果为否时,通过主存储器将元数据直接存入所述收集器;

第二存储模块300,用于所述判断模块100判断结果为是时,利用辅助存储器将所述收集器中过期元数据转移至所述磁盘后,通过主存储器将所述元数据存入所述收集器;所述过期元数据为超过预设时长未被访问的元数据。

基于上述实施例,作为优选的实施例,还包括:

过期元数据确认模块,用于根据收集器容量的低位容量值确认过期元数据。

基于上述实施例,作为优选的实施例,所述过期元数据确认模块包括:

时间确认单元,用于确认收集器中各元数据的最近被访问时间;

过去确认单元,用于将最近被访问时间超过预设时长的元数据作为过期元数据,并配置过期元数据的访问状态为不可访问。

基于上述实施例,作为优选的实施例,第二存储模块300包括:

迁移单元,用于将过期元数据迁移至预设集合,再利用辅助存储器将预设集合中的过期元数据转移至磁盘,并在收集器中对应清除过期元数据。

基于上述实施例,作为优选的实施例,还包括:

操作集存储模块,用于将第一操作集存于主存储器,将第二操作集存于辅助存储器;第一操作集用于提供基于内存的元数据存储操作,第二操作集用于提供基于磁盘的元数据存储操作。

基于上述实施例,作为优选的实施例,还包括:

查询模块,用于判断主存储器是否加载出元数据查询操作对应的目标元数据;若是,直接返回目标元数据;若否,通过辅助存储器加载目标元数据。

基于上述实施例,作为优选的实施例,还包括:

监测模块,用于监测收集器的容量状态,若收集器达到高位容量值,启动驱逐程序执行利用辅助存储器将收集器中过期元数据转移至磁盘的步骤。

本申请还提供了一种计算机可读存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例提供的系统而言,由于其与实施例提供的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

相关技术
  • 一种元数据的存储方法、系统及相关装置
  • 分布式对象存储方法、装置、系统和元数据服务器
技术分类

06120112685871