CN109831540A - 分布式存储方法、装置、电子设备及存储介质 - Google Patents
分布式存储方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN109831540A CN109831540A CN201910297355.4A CN201910297355A CN109831540A CN 109831540 A CN109831540 A CN 109831540A CN 201910297355 A CN201910297355 A CN 201910297355A CN 109831540 A CN109831540 A CN 109831540A
- Authority
- CN
- China
- Prior art keywords
- information
- data
- write
- editlog
- distributed
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Abstract
本公开提供一种分布式存储方法、装置、电子设备及存储介质,涉及数据处理技术领域。本公开提供的分布式存储方法、装置、电子设备及存储介质,在接收客户端发送的数据写入请求信息后,根据数据写入请求信息,给请求写入的数据分配存储位置,并根据存储位置生成元数据以及写入反馈信息,在生成写入反馈信息和元数据后,将写入反馈信息发送至客户端,以使客户端根据写入反馈信息中所包括的存储位置信息,将请求写入的数据写入与存储位置信息对应的数据节点中,将元数据与虚拟地址进行关联并存储于分布式内存数据库中,从而改善了HDFS集群存储容量受到管理节点自身内存限制的问题。
Description
技术领域
本公开涉及数据处理技术领域,具体而言,涉及一种分布式存储方法、装置、电子设备及存储介质。
背景技术
目前开源的Apache Hadoop HDFS集群分为管理节点(NameNode)和数据节点(DataNode)两大部件。DataNode负责数据的真实物理存储,每个DataNode的中的数据文件通过分为1个或多个文件块进行存储,而NameNode则负责存储和管理这些文件块的元数据,客户端在写入文件或读取文件时都必须通过NameNode获取文件块的元数据信息并路由到对应的DataNode。
目前,NameNode将文件块的元数据信息存放在NameNode所在服务器的物理内存中,每个文件块的元数据信息占有一定的内存,当存储数据越来越多时,DataNode生成的文件块就越多,进而,元数据将占用的NameNode内存空间则会越大。当NameNode内存被占用完后则整个集群无法再对新增数据进行存储。
发明内容
基于上述研究,本公开提供一种分布式存储方法、装置、电子设备及存储介质。
本公开提供的一种分布式存储方法,应用于HDFS集群中的管理节点,所述方法包括:
接收客户端发送的数据写入请求信息,所述数据写入请求信息包括请求写入的数据的虚拟地址。
根据所述数据写入请求信息,给所述请求写入的数据分配存储位置。
根据所述存储位置生成元数据以及写入反馈信息,所述元数据和所述写入反馈信息包括存储位置信息。
将所述元数据与所述虚拟地址进行关联并存储于分布式内存数据库中。
将所述写入反馈信息发送至所述客户端,以使所述客户端根据所述写入反馈信息中所包括的存储位置信息,将所述请求写入的数据写入与所述存储位置信息对应的数据节点中。
进一步的,所述方法还包括:
接收所述客户端发送的数据读取请求信息,所述数据读取请求信息包括请求读取的数据的虚拟地址。
根据所述数据读取请求信息,在所述分布式内存数据库查找与所述数据读取请求信息所包括的虚拟地址对应的目标元数据。
根据所述目标元数据生成读取反馈信息,并将读取反馈信息发送至所述客户端,以使所述客户端根据读取反馈信息,查找与所述目标元数据中所包括的存储位置信息对应的数据节点,读取数据。
进一步的,在接收客户端发送的数据写入请求信息或数据读取请求信息之前,所述方法还包括:
读取存储于所述分布式内存数据库的第一EditLog信息以及存储于本地的第二EditLog信息。
判断所述第一EditLog信息与所述第二EditLog信息是否一致。
若所述第一EditLog信息与所述第二EditLog信息不一致,根据所述第二EditLog信息,生成更新元数据,并根据所述更新元数据,对存储于所述分布式内存数据库中的元数据进行更新。
若所述第一EditLog信息与所述第二EditLog信息一致,执行接收所述客户端发送的数据写入请求信息或数据读取请求信息的动作。
进一步的,在读取存储于所述分布式内存数据库的第一EditLog信息之前,所述方法还包括:
向所述分布式内存数据库发送连接请求。
判断与所述分布式内存数据库是否成功连接。
若与所述分布式内存数据库成功连接,读取存储于所述分布式内存数据库的第一EditLog信息。
若与所述分布式内存数据库连接失败,则进行连接失败提示。
本公开提供一种分布式存储装置,应用于HDFS集群中的管理节点,所述分布式存储装置包括接收模块、分配模块、生成模块以及处理模块。
所述接收模块用于接收客户端发送的数据写入请求信息,所述数据写入请求信息包括请求写入的数据的虚拟地址。
所述分配模块用于根据所述数据写入请求信息,给所述请求写入的数据分配存储位置。
所述生成模块用于根据所述存储位置生成元数据以及写入反馈信息;其中,所述元数据和所述写入反馈信息包括存储位置信息。
所述处理模块用于将所述元数据与所述虚拟地址进行关联并存储于分布式内存数据库中。
所述处理模块还用于将所述写入反馈信息发送至所述客户端,以使所述客户端根据所述写入反馈信息中所包括的存储位置信息,将所述请求写入的数据写入与所述存储位置信息对应的数据节点中。
进一步的,所述分布式存储装置还包括查找模块。
所述接收模块还用于接收所述客户端发送的数据读取请求信息,所述数据读取请求信息包括请求读取的数据的虚拟地址。
所述查找模块用于根据所述数据读取请求信息,在所述分布式内存数据库查找与所述数据读取请求信息所包括的虚拟地址对应的目标元数据。
所述处理模块用于根据所述目标元数据生成读取反馈信息,并将读取反馈信息发送至所述客户端,以使所述客户端根据读取反馈信息,查找与所述目标元数据中所包括的存储位置信息对应的数据节点,读取数据。
进一步的,所述分布式存储装置还包括执行模块。
所述执行模块用于在接收客户端发送的数据写入请求或数据读取请求信息之前,读取存储于所述分布式内存数据库的第一EditLog信息以及存储于本地的第二EditLog信息,并判断所述第一EditLog信息与所述第二EditLog信息是否一致。
其中,若所述第一EditLog信息与所述第二EditLog信息不一致,根据所述第二EditLog信息,生成更新元数据,并根据所述更新元数据,对存储于所述分布式内存数据库中的元数据进行更新。
若所述第一EditLog信息与所述第二EditLog信息一致,所述接收模块用于接收所述客户端发送的数据写入请求信息或数据读取请求信息。
进一步的,所述执行模块还用于在读取存储于所述分布式内存数据库的第一EditLog信息之前,向所述分布式内存数据库发送连接请求,并判断与所述分布式内存数据库是否成功连接;其中,若与所述分布式内存数据库成功连接,读取存储于所述分布式内存数据库的第一EditLog信息,若与所述分布式内存数据库连接失败,则进行连接失败提示。
本公开提供一种电子设备,所述电子设备包括存储器、处理器及上述所述的分布式存储装置,所述分布式存储装置位于所述存储器并包括一个或多个由所述处理器执行的软件功能模块。
本公开提供一种存储介质,其上存储有计算机程序,所述计算机程序在执行时实现上述所述的分布式存储方法中的步骤。
本公开提供的分布式存储方法、装置、电子设备及存储介质,在接收客户端发送的数据写入请求信息后,根据数据写入请求信息,给请求写入的数据分配存储位置,并根据存储位置生成元数据以及写入反馈信息,在生成写入反馈信息和元数据后,将写入反馈信息发送至客户端,以使客户端根据写入反馈信息中所包括的存储位置信息,将请求写入的数据写入与存储位置信息对应的数据节点中,将元数据与虚拟地址进行关联并存储于分布式内存数据库中,改善了HDFS集群存储容量受到管理节点自身内存限制的问题。
为使本公开的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本公开的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本公开的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本公开所提供的分布式存储方法的一种流程示意图。
图2为本公开所提供的分布式存储方法的另一种流程示意图。
图3为本公开所提供的分布式存储方法的又一种流程示意图。
图4为本公开所提供的分布式存储方法的又一种流程示意图。
图5为本公开所提供的分布式存储装置的一种方框示意图。
图6为本公开所提供的电子设备的一种方框示意图。
图标:100-电子设备;10-分布式存储装置;11-接收模块;12-分配模块;13-生成模块;14-处理模块;15-查找模块;16-执行模块;20-存储器;30-处理器。
具体实施方式
下面将结合本公开中附图,对本公开中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本公开的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本公开的实施例的详细描述并非旨在限制要求保护的本公开的范围,而是仅仅表示本公开的选定实施例。基于本公开的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
HDFS是一个主从结构,一个HDFS集群是由一个管理节点(NameNode)和一些数据节点(DataNode)组成,DataNode负责数据的真实物理存储,DataNode可以有一台或者多台服务组成存储集群,NameNode主要管理文件命名空间和调节客户端访问文件的主服务器,负责管理数据的元数据。
每个DataNode的中的数据文件通过分为1个或多个文件块进行存储,NameNode则负责存储和管理这些文件块的元数据,客户端在写入文件或读取文件时都必须通过NameNode获取文件块的元数据信息并路由到对应的DataNode。
目前,NameNode将文件的元数据信息存放在NameNode所在服务器的物理内存中,每个文件块的元数据信息在内存中大约占150Byte,当存储数据越来越多时,DataNode生成的文件块就越多,进而,元数据将占用的NameNode内存空间则会越大。而NameNode只能单机部署,一个HDFS集群同时只有一个NameNode在工作,当存储的文件块的元数据信息占用空间超过NameNode物理内存的极限后,则会导致整个HDFS集群无法再存储新的数据,使得整个HDFS集群所存储的数据量受到NameNode所在服务器的内存大小限制。
基于上述研究,本公开提供一种分布式存储方法,以改善上述问题。
请结合参阅图1,图1为本公开所提供的分布式存储方法的流程示意图。本公开提供的分布式存储方法,应用于HDFS集群中的管理节点(NameNode),下面对图1所示的分布式存储方法的具体流程进行详细阐述。
步骤S10:接收客户端发送的数据写入请求信息。
其中,所述数据写入请求信息包括请求写入的数据的虚拟地址以及请求写入的数据的大小。
步骤S11:根据所述数据写入请求信息,给所述请求写入的数据分配存储位置。
其中,NameNode在接收到客户端发送的数据写入请求信息后,根据数据写入请求信息中所包括的请求写入的数据的大小,结合当前数据节点(DataNode)的存储情况,给请求写入的数据在数据节点中分配具体的存储位置。
步骤S12:根据所述存储位置生成元数据以及写入反馈信息。
步骤S13:将所述元数据与所述虚拟地址进行关联并存储于分布式内存数据库中。
步骤S14:将所述写入反馈信息发送至所述客户端,以使所述客户端根据所述写入反馈信息中所包括的存储位置信息,将所述请求写入的数据写入与所述存储位置信息对应的数据节点中。
其中,NameNode在给请求写入的数据在数据节点中分配具体的存储位置后,会根据具体的存储位置生成元数据以及写入反馈信息,元数据和写入反馈信息包括存储位置信息,即请求写入的数据写入数据节点的位置信息。
NameNode在根据具体的存储位置生成写入反馈信息后,将写入反馈信息发送至客户端,以使客户端根据写入反馈信息中所包括的存储位置信息,将请求写入的数据写入与存储位置信息对应的数据节点中。例如,当前HDFS集群存在数据节点A、数据节点B以及数据节点C,NameNode在接收到客户端发送的数据写入请求信息后,根据数据写入请求信息中所包括的请求写入的数据的大小,结合当前数据节点A、B、C的存储情况,给请求写入的数据在数据节点A、B、C中分配具体的存储位置为数据节点A中,并根据分配的具体存储位置,生成写入反馈信息,并将写入反馈信息发送到客户端,写入反馈信息中包括请求写入的数据的具体存储位置,即数据节点A,客户端在接收到写入反馈信息后,根据写入反馈信息,获得数据写入的具体位置,即数据节点A,进而,客户端将数据写入到数据节点A中,进行存储。
NameNode在根据具体的存储位置生成元数据后,将元数据与数据写入请求信息中的虚拟地址进行关联并存储于分布式内存数据库(Apache Ignite)中,修改了元数据的存储方式,由原来存储于NameNode本地改为存储于分布式内存数据库,进而解决了HDFS集群存储容量受到NameNode自身内存限制的问题。
进一步的,请结合参阅图2,所述方法还包括步骤S20至步骤S22。
步骤S20:接收所述客户端发送的数据读取请求信息。
步骤S21:根据所述数据读取请求信息,在所述分布式内存数据库查找与所述数据读取请求信息所包括的虚拟地址对应的目标元数据。
步骤S22:根据所述目标元数据生成读取反馈信息,并将读取反馈信息发送至所述客户端,以使所述客户端根据读取反馈信息,查找与所述目标元数据中所包括的存储位置信息对应的数据节点,读取数据。
其中,所述数据读取请求信息中包括请求读取的数据的虚拟地址,NameNode在接收到客户端发送的数据读取请求信息后,根据数据读取请求信息中的虚拟地址,在分布式内存数据库中查找与该虚拟地址关联对应的目标元数据。在找到目标元数据后,获取目标元数据中所包括的请求读取的数据的存储位置信息,并根据该存储位置信息生成读取反馈信息,在生成读取反馈信息后,将该读取反馈信息发送至客户端,该读取反馈信息中包括了请求读取的数据的存储位置信息。客户端在接收到读取反馈信息后,根据读取反馈信息,获得请求读取的数据的存储位置信息,并根据该存储位置信息,查找与该存储位置信息对应的数据节点,在查找到与该存储位置信息对应的数据节点后,读取数据。例如,读取反馈信息中包括存储位置信息为数据节点A,客户端在接收到读取反馈信息后,则向数据节点A请求读取数据。
进一步的,请结合参阅图3,在接收客户端发送的数据写入请求信息或数据读取请求信息之前,所述方法还包括步骤S30至步骤S33。
步骤S30:读取存储于所述分布式内存数据库的第一EditLog信息以及存储于本地的第二EditLog信息。
步骤S31:判断所述第一EditLog信息与所述第二EditLog信息是否一致。
Editlog主要是在NameNode已经启动情况下对元数据进行的各种更新操作进行记录。存储于分布式内存数据库中的元数据相对于NameNode生成的元数据有一定的滞后性,为了保证元数据的一致性,在接收客户端发送的数据写入请求信息或数据读取请求信息之前,NameNode需读取存储于所述分布式内存数据库的第一EditLog信息以及存储于本地的第二EditLog信息,并判断第一EditLog信息与第二EditLog信息是否一致。
其中,若第一EditLog信息与第二EditLog信息不一致,执行步骤S32;若第一EditLog信息与第二EditLog信息一致,执行步骤S33。
步骤S32:根据所述第二EditLog信息,生成更新元数据,并根据所述更新元数据,对存储于所述分布式内存数据库中的元数据进行更新。
其中,如果第一EditLog信息与第二EditLog信息不一致,NameNode根据本地的第二EditLog信息,重新生成更新元数据,并根据更新元数据,对存储于分布式内存数据库中的元数据进行更新,即将重新生成的更新元数据对分布式内存数据库中的元数据进行覆盖。
步骤S33:执行接收所述客户端发送的数据写入请求信息或数据读取请求信息的动作。
其中,如果第一EditLog信息与第二EditLog信息一致,NameNode则执行接收客户端发送的数据写入请求信息或数据读取请求信息的动作。
进一步的,请结合参阅图4,在读取存储于所述分布式内存数据库的第一EditLog信息之前,所述方法还包括步骤S40至步骤S43。
步骤S40:向所述分布式内存数据库发送连接请求。
步骤S41:判断与所述分布式内存数据库是否成功连接。
其中,NameNode在启动后,首先会向需要连接的分布式内存数据库发送连接请求,并在分布式内存数据库接收连接请求后,判断与分布式内存数据库是否成功连接,若与所述分布式内存数据库成功连接,执行步骤S42;若与所述分布式内存数据库连接失败,执行步骤S43。
步骤S42:读取存储于所述分布式内存数据库的第一EditLog信息。
步骤S43:进行连接失败提示。
其中,若与分布式内存数据库成功连接,NameNode则读取存储于分布式内存数据库的第一EditLog信息,若与分布式内存数据库连接失败,则进行连接失败提示,打印连接失败日志,退出NameNode。
本公开提供的分布式存储方法,通过修改元数据的存储方式和读取方式,由原来存储于NameNode本地改为存储于分布式内存数据库,由原来NameNode在本地读取的方式改为从分布式内存数据库中读取,进而解决了HDFS集群存储容量受到NameNode自身内存限制的问题。
进一步的,在上述基础上,请结合参阅图5,本公开提供一种分布式存储装置10,应用于HDFS集群中的管理节点,所述分布式存储装置10包括接收模块11、分配模块12、生成模块13以及处理模块14。
所述接收模块11用于接收客户端发送的数据写入请求信息,所述数据写入请求信息包括请求写入的数据的虚拟地址。
所述分配模块12用于根据所述数据写入请求信息,给所述请求写入的数据分配存储位置。
所述生成模块13用于根据所述存储位置生成元数据以及写入反馈信息;其中,所述元数据和所述写入反馈信息包括存储位置信息。
所述处理模块14用于将所述元数据与所述虚拟地址进行关联并存储于分布式内存数据库中。
所述处理模块14还用于将所述写入反馈信息发送至所述客户端,以使所述客户端根据所述写入反馈信息中所包括的存储位置信息,将所述请求写入的数据写入与所述存储位置信息对应的数据节点中。
进一步的,所述分布式存储装置10还包括查找模块15。
所述接收模块11还用于接收所述客户端发送的数据读取请求信息,所述数据读取请求信息包括请求读取的数据的虚拟地址。
所述查找模块15用于根据所述数据读取请求信息,在所述分布式内存数据库查找与所述数据读取请求信息所包括的虚拟地址对应的目标元数据。
所述处理模块14用于根据所述目标元数据生成读取反馈信息,并将读取反馈信息发送至所述客户端,以使所述客户端根据读取反馈信息,查找与所述目标元数据中所包括的存储位置信息对应的数据节点,读取数据。
进一步的,所述分布式存储装置10还包括执行模块16。
所述执行模块16用于在接收客户端发送的数据写入请求或数据读取请求信息之前,读取存储于所述分布式内存数据库的第一EditLog信息以及存储于本地的第二EditLog信息,并判断所述第一EditLog信息与所述第二EditLog信息是否一致。
其中,若所述第一EditLog信息与所述第二EditLog信息不一致,根据所述第二EditLog信息,生成更新元数据,并根据所述更新元数据,对存储于所述分布式内存数据库中的元数据进行更新。
若所述第一EditLog信息与所述第二EditLog信息一致,所述接收模块11用于接收所述客户端发送的数据写入请求信息或数据读取请求信息。
进一步的,所述执行模块16还用于在读取存储于所述分布式内存数据库的第一EditLog信息之前,向所述分布式内存数据库发送连接请求,并判断与所述分布式内存数据库是否成功连接;其中,若与所述分布式内存数据库成功连接,读取存储于所述分布式内存数据库的第一EditLog信息,若与所述分布式内存数据库连接失败,则进行连接失败提示。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的分布式存储装置10的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
在上述基础上,请结合参阅图6,本公开提供一种电子设备100,所述电子设备100包括存储器20、处理器30及上述中的分布式存储装置10,所述分布式存储装置10位于所述存储器20并包括一个或多个由所述处理器30执行的软件功能模块。
本公开提供的一种电子设备100,由于包括上述分布式存储装置10,因此,该电子设备100具有与上述分布式存储装置10相同的技术特征,在此不再一一赘述,请参考对上述分布式存储装置10的解释说明。
本公开提供一种存储介质,其上存储有计算机程序,所述计算机程序在执行时实现上述的分布式存储方法中的步骤。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的存储介质的具体工作过程,可以参考前述方法中的对应过程,在此不再过多赘述。
综上,本公开提供的分布式存储方法、装置、电子设备及存储介质,在接收客户端发送的数据写入请求信息后,根据数据写入请求信息,给请求写入的数据分配存储位置,并根据存储位置生成元数据以及写入反馈信息,在生成写入反馈信息和元数据后,将写入反馈信息发送至客户端,以使客户端根据写入反馈信息中所包括的存储位置信息,将请求写入的数据写入与存储位置信息对应的数据节点中,将元数据与虚拟地址进行关联并存储于分布式内存数据库中,改变了元数据的存储方式,将元数据存储于分布式内存数据库中,解决了HDFS集群存储容量受到管理节点自身内存限制的问题。
在本公开所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本公开的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本公开各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本公开的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本公开各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本公开的可选实施例而已,并不用于限制本公开,对于本领域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之内。
Claims (10)
1.一种分布式存储方法,其特征在于,应用于HDFS集群中的管理节点,所述方法包括:
接收客户端发送的数据写入请求信息,所述数据写入请求信息包括请求写入的数据的虚拟地址;
根据所述数据写入请求信息,给所述请求写入的数据分配存储位置;
根据所述存储位置生成元数据以及写入反馈信息,所述元数据和所述写入反馈信息包括存储位置信息;
将所述元数据与所述虚拟地址进行关联并存储于分布式内存数据库中;
将所述写入反馈信息发送至所述客户端,以使所述客户端根据所述写入反馈信息中所包括的存储位置信息,将所述请求写入的数据写入与所述存储位置信息对应的数据节点中。
2.根据权利要求1所述的分布式存储方法,其特征在于,所述方法还包括:
接收所述客户端发送的数据读取请求信息,所述数据读取请求信息包括请求读取的数据的虚拟地址;
根据所述数据读取请求信息,在所述分布式内存数据库查找与所述数据读取请求信息所包括的虚拟地址对应的目标元数据;
根据所述目标元数据生成读取反馈信息,并将读取反馈信息发送至所述客户端,以使所述客户端根据读取反馈信息,查找与所述目标元数据中所包括的存储位置信息对应的数据节点,读取数据。
3.根据权利要求2所述的分布式存储方法,其特征在于,在接收客户端发送的数据写入请求信息或数据读取请求信息之前,所述方法还包括:
读取存储于所述分布式内存数据库的第一EditLog信息以及存储于本地的第二EditLog信息;
判断所述第一EditLog信息与所述第二EditLog信息是否一致;
若所述第一EditLog信息与所述第二EditLog信息不一致,根据所述第二EditLog信息,生成更新元数据,并根据所述更新元数据,对存储于所述分布式内存数据库中的元数据进行更新;
若所述第一EditLog信息与所述第二EditLog信息一致,执行接收所述客户端发送的数据写入请求信息或数据读取请求信息的动作。
4.根据权利要求3所述的分布式存储方法,其特征在于,在读取存储于所述分布式内存数据库的第一EditLog信息之前,所述方法还包括:
向所述分布式内存数据库发送连接请求;
判断与所述分布式内存数据库是否成功连接;
若与所述分布式内存数据库成功连接,读取存储于所述分布式内存数据库的第一EditLog信息;
若与所述分布式内存数据库连接失败,则进行连接失败提示。
5.一种分布式存储装置,其特征在于,应用于HDFS集群中的管理节点,所述分布式存储装置包括接收模块、分配模块、生成模块以及处理模块;
所述接收模块用于接收客户端发送的数据写入请求信息,所述数据写入请求信息包括请求写入的数据的虚拟地址;
所述分配模块用于根据所述数据写入请求信息,给所述请求写入的数据分配存储位置;
所述生成模块用于根据所述存储位置生成元数据以及写入反馈信息;其中,所述元数据和所述写入反馈信息包括存储位置信息;
所述处理模块用于将所述元数据与所述虚拟地址进行关联并存储于分布式内存数据库中;
所述处理模块还用于将所述写入反馈信息发送至所述客户端,以使所述客户端根据所述写入反馈信息中所包括的存储位置信息,将所述请求写入的数据写入与所述存储位置信息对应的数据节点中。
6.根据权利要求5所述的分布式存储装置,其特征在于,所述分布式存储装置还包括查找模块;
所述接收模块还用于接收所述客户端发送的数据读取请求信息,所述数据读取请求信息包括请求读取的数据的虚拟地址;
所述查找模块用于根据所述数据读取请求信息,在所述分布式内存数据库查找与所述数据读取请求信息所包括的虚拟地址对应的目标元数据;
所述处理模块用于根据所述目标元数据生成读取反馈信息,并将读取反馈信息发送至所述客户端,以使所述客户端根据读取反馈信息,查找与所述目标元数据中所包括的存储位置信息对应的数据节点,读取数据。
7.根据权利要求6所述的分布式存储装置,其特征在于,所述分布式存储装置还包括执行模块;
所述执行模块用于在接收客户端发送的数据写入请求或数据读取请求信息之前,读取存储于所述分布式内存数据库的第一EditLog信息以及存储于本地的第二EditLog信息,并判断所述第一EditLog信息与所述第二EditLog信息是否一致;
其中,若所述第一EditLog信息与所述第二EditLog信息不一致,根据所述第二EditLog信息,生成更新元数据,并根据所述更新元数据,对存储于所述分布式内存数据库中的元数据进行更新;
若所述第一EditLog信息与所述第二EditLog信息一致,所述接收模块用于接收所述客户端发送的数据写入请求信息或数据读取请求信息。
8.根据权利要求7所述的分布式存储装置,其特征在于,所述执行模块还用于在读取存储于所述分布式内存数据库的第一EditLog信息之前,向所述分布式内存数据库发送连接请求,并判断与所述分布式内存数据库是否成功连接;其中,若与所述分布式内存数据库成功连接,读取存储于所述分布式内存数据库的第一EditLog信息,若与所述分布式内存数据库连接失败,则进行连接失败提示。
9.一种电子设备,其特征在于,所述电子设备包括存储器、处理器及上述权利要求5-8中任一项所述的分布式存储装置,所述分布式存储装置位于所述存储器并包括一个或多个由所述处理器执行的软件功能模块。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序在执行时实现上述权利要求1-4中任一项所述的分布式存储方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910297355.4A CN109831540B (zh) | 2019-04-12 | 2019-04-12 | 分布式存储方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910297355.4A CN109831540B (zh) | 2019-04-12 | 2019-04-12 | 分布式存储方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109831540A true CN109831540A (zh) | 2019-05-31 |
CN109831540B CN109831540B (zh) | 2022-02-11 |
Family
ID=66875074
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910297355.4A Active CN109831540B (zh) | 2019-04-12 | 2019-04-12 | 分布式存储方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109831540B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110263060A (zh) * | 2019-06-06 | 2019-09-20 | 零搜科技(深圳)有限公司 | 一种erp电子附件管理方法及计算机设备 |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
CN110716899A (zh) * | 2019-09-25 | 2020-01-21 | 重庆紫光华山智安科技有限公司 | 一种文件、图片快速读取方法、系统、介质及电子终端 |
CN111831618A (zh) * | 2020-07-21 | 2020-10-27 | 北京青云科技股份有限公司 | 数据写入方法、数据读取方法、装置、设备及存储介质 |
CN112422611A (zh) * | 2020-09-11 | 2021-02-26 | 深圳市证通电子股份有限公司 | 基于分布式对象存储的虚拟桶存储处理方法和系统 |
CN114153385A (zh) * | 2021-11-12 | 2022-03-08 | 苏州浪潮智能科技有限公司 | 一种分布式存储写缓冲数据分步下刷方法、装置及介质 |
CN114461388A (zh) * | 2022-01-13 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 一种块存储服务元数据配置方法、装置、设备及介质 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102594852A (zh) * | 2011-01-04 | 2012-07-18 | 中国移动通信集团公司 | 数据访问方法、节点及系统 |
CN102694860A (zh) * | 2012-05-25 | 2012-09-26 | 北京邦诺存储科技有限公司 | 一种云存储的数据处理方法、设备及系统 |
CN102737130A (zh) * | 2012-06-21 | 2012-10-17 | 广州从兴电子开发有限公司 | 处理hdfs元数据的方法及系统 |
US20140019495A1 (en) * | 2012-07-13 | 2014-01-16 | Facebook Inc. | Processing a file system operation in a distributed file system |
CN103581332A (zh) * | 2013-11-15 | 2014-02-12 | 武汉理工大学 | HDFS架构及HDFS架构中NameNode节点的压力分解方法 |
CN104461404A (zh) * | 2014-12-29 | 2015-03-25 | 成都致云科技有限公司 | 元数据存储方法、装置以及系统 |
CN104462362A (zh) * | 2014-12-08 | 2015-03-25 | 曙光信息产业(北京)有限公司 | 一种数据存储、查询、加载方法及装置 |
CN104516945A (zh) * | 2014-11-18 | 2015-04-15 | 国家电网公司 | 一种基于关系数据库的hdfs元数据存储方法 |
US20150278244A1 (en) * | 2005-01-12 | 2015-10-01 | Wandisco, Inc. | Geographically-distributed file system using coordinated namespace replication over a wide area network |
CN105007172A (zh) * | 2015-05-28 | 2015-10-28 | 杭州健港信息科技有限公司 | 一种hdfs高可用性方案的实现方法 |
WO2016095149A1 (zh) * | 2014-12-18 | 2016-06-23 | 华为技术有限公司 | 一种数据压缩存储方法、装置,及分布式文件系统 |
US20160253362A1 (en) * | 2013-11-29 | 2016-09-01 | Tencent Technology (Shenzhen) Company Limited | Method, device, node and system for managing file in distributed data warehouse |
CN106682147A (zh) * | 2016-12-22 | 2017-05-17 | 北京锐安科技有限公司 | 一种基于海量数据的查询方法及装置 |
CN107368260A (zh) * | 2017-06-30 | 2017-11-21 | 北京奇虎科技有限公司 | 基于分布式系统的存储空间整理方法、装置及系统 |
CN107566463A (zh) * | 2017-08-21 | 2018-01-09 | 北京航空航天大学 | 一种提高存储可用性的多云存储管理系统 |
-
2019
- 2019-04-12 CN CN201910297355.4A patent/CN109831540B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150278244A1 (en) * | 2005-01-12 | 2015-10-01 | Wandisco, Inc. | Geographically-distributed file system using coordinated namespace replication over a wide area network |
CN102594852A (zh) * | 2011-01-04 | 2012-07-18 | 中国移动通信集团公司 | 数据访问方法、节点及系统 |
CN102694860A (zh) * | 2012-05-25 | 2012-09-26 | 北京邦诺存储科技有限公司 | 一种云存储的数据处理方法、设备及系统 |
CN102737130A (zh) * | 2012-06-21 | 2012-10-17 | 广州从兴电子开发有限公司 | 处理hdfs元数据的方法及系统 |
US20140019495A1 (en) * | 2012-07-13 | 2014-01-16 | Facebook Inc. | Processing a file system operation in a distributed file system |
CN103581332A (zh) * | 2013-11-15 | 2014-02-12 | 武汉理工大学 | HDFS架构及HDFS架构中NameNode节点的压力分解方法 |
US20160253362A1 (en) * | 2013-11-29 | 2016-09-01 | Tencent Technology (Shenzhen) Company Limited | Method, device, node and system for managing file in distributed data warehouse |
CN104516945A (zh) * | 2014-11-18 | 2015-04-15 | 国家电网公司 | 一种基于关系数据库的hdfs元数据存储方法 |
CN104462362A (zh) * | 2014-12-08 | 2015-03-25 | 曙光信息产业(北京)有限公司 | 一种数据存储、查询、加载方法及装置 |
WO2016095149A1 (zh) * | 2014-12-18 | 2016-06-23 | 华为技术有限公司 | 一种数据压缩存储方法、装置,及分布式文件系统 |
CN104461404A (zh) * | 2014-12-29 | 2015-03-25 | 成都致云科技有限公司 | 元数据存储方法、装置以及系统 |
CN105007172A (zh) * | 2015-05-28 | 2015-10-28 | 杭州健港信息科技有限公司 | 一种hdfs高可用性方案的实现方法 |
CN106682147A (zh) * | 2016-12-22 | 2017-05-17 | 北京锐安科技有限公司 | 一种基于海量数据的查询方法及装置 |
CN107368260A (zh) * | 2017-06-30 | 2017-11-21 | 北京奇虎科技有限公司 | 基于分布式系统的存储空间整理方法、装置及系统 |
CN107566463A (zh) * | 2017-08-21 | 2018-01-09 | 北京航空航天大学 | 一种提高存储可用性的多云存储管理系统 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110263060A (zh) * | 2019-06-06 | 2019-09-20 | 零搜科技(深圳)有限公司 | 一种erp电子附件管理方法及计算机设备 |
CN110457281A (zh) * | 2019-08-14 | 2019-11-15 | 北京博睿宏远数据科技股份有限公司 | 数据处理方法、装置、设备及介质 |
CN110716899A (zh) * | 2019-09-25 | 2020-01-21 | 重庆紫光华山智安科技有限公司 | 一种文件、图片快速读取方法、系统、介质及电子终端 |
CN111831618A (zh) * | 2020-07-21 | 2020-10-27 | 北京青云科技股份有限公司 | 数据写入方法、数据读取方法、装置、设备及存储介质 |
CN112422611A (zh) * | 2020-09-11 | 2021-02-26 | 深圳市证通电子股份有限公司 | 基于分布式对象存储的虚拟桶存储处理方法和系统 |
CN112422611B (zh) * | 2020-09-11 | 2023-04-18 | 深圳市证通电子股份有限公司 | 基于分布式对象存储的虚拟桶存储处理方法和系统 |
CN114153385A (zh) * | 2021-11-12 | 2022-03-08 | 苏州浪潮智能科技有限公司 | 一种分布式存储写缓冲数据分步下刷方法、装置及介质 |
CN114153385B (zh) * | 2021-11-12 | 2023-08-29 | 苏州浪潮智能科技有限公司 | 一种分布式存储写缓冲数据分步下刷方法、装置及介质 |
CN114461388A (zh) * | 2022-01-13 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 一种块存储服务元数据配置方法、装置、设备及介质 |
CN114461388B (zh) * | 2022-01-13 | 2024-01-12 | 苏州浪潮智能科技有限公司 | 一种块存储服务元数据配置方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109831540B (zh) | 2022-02-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109831540A (zh) | 分布式存储方法、装置、电子设备及存储介质 | |
US11586673B2 (en) | Data writing and reading method and apparatus, and cloud storage system | |
DE112011102073T5 (de) | Dienstimplementierung von einem Dienstverzeichnis | |
CN111177081B (zh) | 游戏日志内容查询方法、装置、计算机设备和存储介质 | |
US20110196866A1 (en) | Small table: multitenancy for lots of small tables on a cloud database | |
US20150120703A1 (en) | Topological query in multi-tenancy environment | |
CN108616581B (zh) | 基于olap/oltp混合应用的数据存储系统及方法 | |
CN110032568B (zh) | 数据结构的读取及更新方法、装置、电子设备 | |
CN106933891A (zh) | 访问分布式数据库的方法和分布式数据服务的装置 | |
CN105843559A (zh) | 一种磁盘缓存系统的读写优化方法及系统 | |
CN103905512B (zh) | 一种数据处理方法和设备 | |
CN108255959A (zh) | 一种Redis中数据查询方法及装置 | |
CN113012336A (zh) | 银行业务的排队预约方法及其装置、存储介质和设备 | |
CN111857979B (zh) | 一种分布式系统的信息管理方法、系统、存储介质及设备 | |
CN108959497A (zh) | 分布式文件系统日志处理方法、装置、设备及存储介质 | |
CN107357691B (zh) | 镜像文件的处理方法及装置 | |
WO2023098462A1 (en) | Improving performance of sql execution sequence in production database instance | |
CN110362540A (zh) | 一种数据存储、访客数获取方法及装置 | |
CN113868544B (zh) | 一种智能化业务档案处理方法及业务服务器 | |
JP2008225686A (ja) | 分散型データ処理プラットフォームにおけるデータ配置管理装置と方法、システム及びプログラム | |
CN106940715B (zh) | 一种基于索引表的查询的方法及设备 | |
CN114691630A (zh) | 一种智慧供应链大数据共享方法及系统 | |
CN110297807A (zh) | 一种二维码管理方法和装置 | |
US20200099788A1 (en) | Context data management interface for contact center | |
CN110019113B (zh) | 一种数据库的业务处理方法及数据库服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |