CN109799948A - 一种数据存储方法及装置 - Google Patents
一种数据存储方法及装置 Download PDFInfo
- Publication number
- CN109799948A CN109799948A CN201711146815.0A CN201711146815A CN109799948A CN 109799948 A CN109799948 A CN 109799948A CN 201711146815 A CN201711146815 A CN 201711146815A CN 109799948 A CN109799948 A CN 109799948A
- Authority
- CN
- China
- Prior art keywords
- files
- blocks
- coding
- file destination
- namenode
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据存储技术领域,尤其涉及一种数据存储方法及装置,用以解决现有方案中采用一种固定的编码技术来存储数据,无法兼顾用户对不同类型的数据的存储需求的问题。本申请提供的方法可应用于分布式存储系统中,该分布式存储系统包括具有多个编码模块的磁盘阵列节点、名字节点以及多个数据节点,其中,磁盘阵列节点可接收客户端发送的待存储的目标文件的属性信息,并根据预设的属性信息与编码模块的对应关系,从多个编码模块中选择与目标文件的属性信息对应的编码模块,进而将从选择的编码模块中读取到的编码策略发送给名字节点,指示名字节点基于编码策略从多个数据节点中选定用于存储由目标文件划分成的各文件块的至少一个选定数据节点。
Description
技术领域
本申请涉及数据存储技术领域,尤其涉及一种数据存储方法及装置。
背景技术
随着互联网技术的发展,数据爆发式增长,使得数据存储方式逐渐偏向分布式存储,专用的存储服务器也逐渐被低成本存储设备替代。在分布式存储系统中使用低成本的存储设备作为数据节点来存储数据,尝尝会因硬件故障、软件升级等导致存储的数据丢失或损坏,从而导致数据存储的可靠性较低。
目前,分布式存储系统通过数据容错技术保证数据存储的可靠性。容错技术是将数据以某种编码方式进行存储,当系统遭受破坏或其他情况,系统可以依据编码方式对丢失或受损的数据进行恢复,以保持原始数据的可用性。现有主流的分布式存储系统中,为了便于设计和管理,通常只采用一种固定的编码技术来存储数据。以较为典型的Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)为例,HDFS采用副本的编码方式来存储文件,主要是将待存储的文件划分为多个文件块,其中,针对每个文件块,可以将该文件块复制为多个副本,并分别存储在HDFS中的不同数据节点中,这样,即使一个数据节点中存储的文件块出现问题,客户端仍然可以从HDFS中获取到该文件块的副本,以达到保证数据可靠性的目的。然而,随着HDFS系统中数据规模的扩大,数据类型也越来越多,不同类型的数据也有着不同的读取需求,比如对于访问频率较高的数据来说,可采用读取效率较高的编码方式来存储数据,而对于访问频率较低的数据来说,可以采用存储成本较低的编码方式来存储数据。由此可见,若采用一种固定的编码技术来存储数据,无法兼顾用户对不同类型的数据的存储需求。
发明内容
本申请提供一种数据存储方法及装置,用以解决现有方案中采用一种固定的编码技术来存储数据,无法兼顾用户对不同类型的数据的存储需求的问题。
本申请提供的技术方案如下:
第一方面,一种数据存储方法,所述方法应用于分布式存储系统中,所述分布式存储系统包括具有多个编码模块的磁盘阵列节点、名字节点以及多个数据节点,所述方法包括:
所述磁盘阵列节点接收客户端发送的待存储的目标文件的属性信息;
所述磁盘阵列节点根据预设的属性信息与编码模块的对应关系,从所述多个编码模块中选择与所述目标文件的属性信息对应的编码模块,并将从选择的编码模块中读取到的编码策略发送给所述名字节点,指示所述名字节点基于所述编码策略从所述多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点。
进一步地,所述目标文件的属性信息为所述目标文件的格式、所述目标文件的文件名、所述目标文件归属的文件夹、或所述目标文件的编码方式。
进一步地,所述磁盘阵列节点将从选择的编码模块中读取到的编码策略发送给所述名字节点之后,所述方法还包括:
所述磁盘阵列节点接收所述名字节点发送的至少一个选定数据节点分别存储的由所述目标文件划分成的各文件块的存储状态;
所述磁盘阵列节点若确定所述至少一个选定数据节点中的第一数据节点存储所述各文件块中的第一文件块的存储状态异常,则根据从确定的编码模块中读取到的编码策略,指示所述名字节点对所述第一数据节点存储的第一文件块进行修复。
第二方面,一种数据存储方法,所述方法应用于分布式存储系统中,所述分布式存储系统包括具有多个编码模块的磁盘阵列节点、名字节点以及多个数据节点,所述方法包括:
所述名字节点接收所述磁盘阵列节点发送的编码策略以及由客户端指示的由待存储的目标文件划分成的各文件块的信息,所述编码策略为所述磁盘阵列节点从所述多个编码模块中选择的编码模块中读取出的;
所述名字节点基于所述编码策略,从所述多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点,并指示所述客户端将由所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中。
进一步地,若所述名字节点接收的所述编码策略为副本编码策略,则所述名字节点基于所述编码策略,从所述多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点,具体包括:
所述名字节点基于所述编码策略,确定由所述目标文件划分成的各文件块分别对应的副本个数N1;N1为大于或等于1的正整数;
所述名字节点从所述多个数据节点中分别选择用于存储每个文件块以及每个文件块对应的N1个副本的至少一个选定数据节点;
所述名字节点指示所述客户端将所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中,具体包括:
所述名字节点指示所述客户端将每个文件块复制为N1个副本,并指示所述客户端将每个文件块以及每个文件块对应的N1个副本存储在所述至少一个选定数据节点中。
进一步地,若所述名字节点接收的所述编码策略为纠删码策略,则所述名字节点基于所述编码策略,从所述多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点之后,所述方法包括:
所述名字节点基于所述编码策略,将由所述目标文件划分成的各文件块划分为N2组,其中,第i组文件块经计算后得到一个用于恢复第i组中任意一个文件块的校验块;N2为大于或等于1的正整数,i取遍1~N2中的任意一个正整数;
所述名字节点从所述多个数据节点中选择用于存储所述第i组文件块对应的校验块的第二数据节点;
所述名字节点指示所述客户端将所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中之后,所述方法还包括:
所述名字节点指示所述第二数据节点存储所述第i组文件块对应的校验块。
第三方面,一种数据存储装置,所述装置包括:
接收模块,用于接收客户端发送的待存储的目标文件的属性信息;
处理模块,用于根据预设的属性信息与编码模块的对应关系,从多个编码模块中选择与所述目标文件的属性信息对应的编码模块,并将从选择的编码模块中读取到的编码策略发送给名字节点,指示所述名字节点基于所述编码策略从多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点。
进一步地,所述目标文件的属性信息为所述目标文件的格式、所述目标文件的文件名、所述目标文件归属的文件夹、或所述目标文件的编码方式。
进一步地,所述接收模块还用于:
在所述处理模块将从选择的编码模块中读取到的编码策略发送给所述名字节点之后,接收所述名字节点发送的至少一个选定数据节点分别存储的由所述目标文件划分成的各文件块的存储状态;
所述处理模块还用于:
若确定所述至少一个选定数据节点中的第一数据节点存储所述各文件块中的第一文件块的存储状态异常,则根据从确定的编码模块中读取到的编码策略,指示所述名字节点对所述第一数据节点存储的第一文件块进行修复。
第四方面,一种数据存储装置,所述装置包括:
接收模块,用于接收磁盘阵列节点发送的编码策略以及由客户端指示的由待存储的目标文件划分成的各文件块的信息,所述编码策略为所述磁盘阵列节点从多个编码模块中选择的编码模块中读取出的;
处理模块,用于基于所述编码策略,从多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点,并指示所述客户端将由所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中。
进一步地,若所述接收模块接收的所述编码策略为副本编码策略,则所述处理模块具体用于:
基于所述编码策略,确定由所述目标文件划分成的各文件块分别对应的副本个数N1;N1为大于或等于1的正整数;
从所述多个数据节点中分别选择用于存储每个文件块以及每个文件块对应的N1个副本的至少一个选定数据节点;
指示所述客户端将每个文件块复制为N1个副本,并指示所述客户端将每个文件块以及每个文件块对应的N1个副本存储在所述至少一个选定数据节点中。
进一步地,若所述接收模块接收的所述编码策略为纠删码策略,则所述处理模块具体用于:
基于所述编码策略,将由所述目标文件划分成的各文件块划分为N2组,其中,第i组文件块经计算后得到一个用于恢复第i组中任意一个文件块的校验块;N2为大于或等于1的正整数,i取遍1~N2中的任意一个正整数;
从所述多个数据节点中选择用于存储所述第i组文件块对应的校验块的第二数据节点;
指示所述客户端将所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中之后,指示所述第二数据节点存储所述第i组文件块对应的校验块。
第五方面,一种电子设备,包括:一个或多个处理器;以及一个或多个计算机可读介质,所述可读介质上存储有用于执行数据存储方法的程序,其中,所述程序被所述一个或多个处理器执行时,实现如第一方面任一所述的方法的步骤。
第六方面,一个或多个计算机可读介质,所述可读介质上存储有用于执行数据存储方法的程序,其中,所述程序被一个或多个处理器执行时,使得处理器执行如第一方面任一所述的方法。
第七方面,一种电子设备,包括:一个或多个处理器;以及一个或多个计算机可读介质,所述可读介质上存储有用于执行数据存储方法的程序,其中,所述程序被所述一个或多个处理器执行时,实现如第二方面任一所述的方法的步骤。
第八方面,一个或多个计算机可读介质,所述可读介质上存储有用于执行数据存储方法的程序,其中,所述程序被一个或多个处理器执行时,使得处理器执行如第二方面任一所述的方法。
本申请实施例的有益效果如下:分布式存储系统中配置具有多个编码模块的磁盘阵列节点,这样,当磁盘阵列节点接收到客户端发送的携带有待存储的目标文件的属性信息后,可以根据预设的属性信息与编码模块的对应关系,从多个编码模块中选择与该目标文件的属性信息对应的编码模块,进而将从选择的编码模块中读取到的编码策略发送给名字节点,相应地,名字节点可以基于接收的编码策略从多个数据节点中选定用于存储由该目标文件划分成的各文件块的至少一个选定数据节点,并指示客户端将由该目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中。由此可见,采用本申请提供的方式,可以为具有不同属性信息的目标文件预先配置其适用的编码方式,这样,分布式存储系统在存储目标文件时,便可以采用不同的编码方式进行存储,从而能够尽可能的满足不同类型的数据的存储需求。
附图说明
图1为本申请实施例提供的分布式存储系统的架构图;
图2为本申请实施例提供的数据存储的方法的流程示意图;
图3a为本申请实施例提供的采用副本编码策略存储目标文件的过程示意图;
图3b为本申请实施例提供的采用纠删码策略存储目标文件的过程示意图;
图4为本申请实施例提供的一种数据存储装置的结构示意图;
图5为本申请实施例提供的又一种数据存储装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,并不是全部的实施例。基于本申请实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请可应用于分布式存储系统中,具体可参照图1所示的本申请实施例提供的分布式存储系统的架构图。该分布式存储系统中可包括磁盘阵列节点(RaidNode)、名字节点(NameNode)以及多个数据节点(DataNode)。
其中,磁盘阵列节点中可配置具有不同编码策略的编码模块,比如,可以配置较为常用的配置有副本编码策略的第一编码模块、以及配置有纠删码策略的第二编码模块等。当然,实际应用时,还可根据实际数据存储需求,配置其它编码策略的编码模块,本申请对此并不做限定。
名字节点作为多个数据节点的主节点,可控制多个数据节点进行数据的存储,并且,可以监控多个数据节点的数据存储状态,另外,名字节点也可与磁盘阵列节点之间进行通信,可以接收磁盘阵列节点指示的编码策略,也可以向磁盘阵列节点上报各数据节点的数据存储状态等。多个数据节点作为名字节点的从节点,主要用于存储数据,并且可以将数据节点的数据存储状态上报给名字节点。
下面,结合本申请提供的上述分布式存储系统,对本申请实施例提供的数据存储的方法进行详细介绍。
参照图2所示,为本申请实施例提供的数据存储的方法的流程示意图,具体包括以下步骤:
步骤201:磁盘阵列节点接收客户端发送的待存储的目标文件的属性信息。
本申请实施例中,用户在通过客户端上传待存储的目标文件时,客户端可将识别到的所述目标文件的属性信息上报给分布式存储系统中的磁盘阵列节点。其中,目标文件的属性信息可以为目标文件的格式、目标文件的文件名、目标文件归属的文件夹、或目标文件的编码方式等。
具体的,所述目标文件的格式、文件名、归属的文件夹等为所述目标文件固有的属性信息。当客户端在检测到用户上传所述目标文件时,可以自动解析出上传的目标文件的格式、文件名以及归属的文件夹等固有的属性信息。
具体的,所述目标文件的编码方式可以是用户在客户端上传目标文件时由用户选择的。比如,可以在客户端中用于上传目标文件的界面中预先配置多种目标文件的编码方式的选项,这样,客户端可以在检测到用户在上传文件时选择了任一种目标文件的编码方式之后,向磁盘阵列节点上报所述任一种目标文件的编码方式。
当然,具体实施时,还可以配置其它类型的属性信息,比如目标文件的大小等。另外,客户端上报给磁盘阵列节点的目标文件的属性信息可以是以上列举出的属性信息中的任意一种,还可以是以上列举出的属性信息中任意多种(所述的多种可以理解为至少两种)的组合,本申请对此并不进行限定。
步骤202:磁盘阵列节点根据预设的属性信息与编码模块的对应关系,从所述多个编码模块中选择与所述目标文件的属性信息对应的编码模块,并将从选择的编码模块中读取到的编码策略发送给所述名字节点。
本申请实施例中,磁盘阵列节点中可以预先设置文件的属性信息与编码模块的对应关系。文件的属性信息与编码模块的对应关系可以为多对一的关系,也可以为一对一的关系。为便于对本申请实施例的理解,下面列举几种对应关系:
(1)假设文件的属性信息为文件的编码方式,编码模块包括配置有副本编码策略的第一编码模块、以及配置有纠删码策略的第二编码模块。那么,磁盘阵列中存储的对应关系可以参照表1所示:
表1
编码方式 | 编码模块 |
副本编码 | 第一编码模块 |
纠删码 | 第二编码模块 |
由此可见,用户只需在通过客户端上传目标文件时,只需根据实际需求,选择所需的编码方式,后续分布式存储系统中的磁盘阵列节点就可以根据表1所示的对应关系,确定与编码方式对应的编码模块,进而指示名字节点采用确定的编码模块中配置的编码策略来存储目标文件。
(2)假设文件的属性信息为文件的格式,编码模块包括上述列举的第一编码模块以及第二编码模块。其中,文件的格式以.doc(文档)、.pdf(便携式文件格式)、.exe(可执行程序)、.jsp(javascript源文件)为例。那么,磁盘阵列中存储的对应关系可以参照表2所示:
表2
文件的格式 | 编码模块 |
.doc、.pdf、... | 第一编码模块 |
.exe、.jsp、... | 第二编码模块 |
其中,由于第一编码模块配置的副本编码策略相对于第二编码模块配置的纠删码策略的优势为编码方式简单,能够节省读取时间以及数据修复时间,故对于用户读取频率较高的文件,如.doc、.pdf等格式的文件,可以与第一编码模块相对应。由于第二编码模块配置的纠删码策略相对于第一编码模块配置的副本编码策略的优势为存储成本较低,故对于用户读取频率较低,且占用存储空间较多的文件,如.exe、.jsp等格式的文件,可以与第二编码模块相对应。
这样,基于预先设置的对应关系,用户只需通过客户端上传待存储的目标文件,后续分布式存储系统中的磁盘阵列节点即可根据客户端解析出的目标文件的属性信息,选择与目标文件的属性信息对应的编码模块,进而指示名字节点采用确定的编码模块中配置的编码策略来存储目标文件。
步骤203:名字节点接收磁盘阵列节点发送的编码策略以及由客户端指示的由待存储的目标文件划分成的各文件块的信息。
其中,由待存储的目标文件划分成的各文件块的信息可以包括待存储的目标文件划分成的文件块的个数以及每个文件块的大小等,具体划分成的文件块的个数以及每个文件块的大小可以由待存储的目标文件的总大小以及Hadoop集群配置的文件块的参数确定。其中,Hadoop集群中常见的配置为每个文件块64MB或者128MB。客户端可以根据Hadoop集群配置的文件块大小对待存储的目标文件进行分块,进而将由目标文件划分成的各文件块的信息发送给名字节点。
具体的,由客户端指示的由待存储的目标文件划分成的各文件块的信息可以是客户端通过磁盘阵列节点发送给名字节点的。客户端在向磁盘阵列节点发送待存储的目标文件的属性信息的同时,可以将由目标文件划分成的各文件块的信息发送给磁盘阵列节点,进而磁盘阵列节点在向名字节点发送编码策略的同时,可以将由客户端指示的由目标文件划分成的各文件块的信息发送给名字节点。当然,具体实施时,磁盘阵列节点向名字节点发送由目标文件划分成的各文件块的信息以及编码策略也可以不是同时发送的,可以由实际文件存储场景来确定,本申请对此并不限定。
步骤204:名字节点基于接收的编码策略,从多个数据节点中选定用于存储由目标文件划分成的各文件块的至少一个选定数据节点。
步骤205:名字节点指示客户端将由目标文件划分成的各文件块分别存储到至少一个选定数据节点中。
下面,参照图3a和图3b所示,分别以名字节点接收的编码策略为副本编码策略和纠删码策略为例,对本申请实施例中名字节点选定至少一个选定数据节点以及指示客户端存储目标文件的过程进行具体介绍。
(1)名字节点接收的编码策略为副本编码策略
步骤301a:名字节点基于接收的编码策略,确定由目标文件划分成的各文件块分别对应的副本个数N1,N1为大于或等于1的正整数;
步骤302a:名字节点从多个数据节点中分别选择用于存储每个文件块以及每个文件块对应的N1个副本的至少一个选定数据节点;
步骤303a:名字节点指示客户端将每个文件块复制为N1个副本,并指示客户端将每个文件块以及每个文件块对应的N1个副本存储在至少一个选定数据节点中。
具体的,名字节点在识别到接收的编码策略为副本编码策略后,可以从副本编码策略中解析出副本个数N1。该副本个数可以为根据实际存储需求,在分布式存储系统的编码模块中预先配置的副本个数,其中,副本个数越多,存储成本越大。
具体的,名字节点可以获取多个数据节点的数据存储信息,比如数据节点中已存储的数据所使用的存储空间、以及未使用的存储空间等,进而可以分析比较数据节点的数据存储信息,为每个文件块以及对应的N1个副本选择适合的数据节点。其中,每个文件块与其对应的N1个副本可以分别存储在不同的数据节点中,以提高数据存储的可靠性。
(2)名字节点接收的编码策略为纠删码策略
步骤301b:名字节点基于接收的编码策略,从多个数据节点中选定用于存储由目标文件划分成的各文件块的至少一个选定数据节点;
步骤302b:名字节点基于接收的编码策略,将由目标文件划分成的各文件块划分为N2组,其中,第i组文件块经计算后得到一个用于恢复第i组中任意一个文件块的校验块;N2为大于或等于1的正整数,i取遍1~N2中的任意一个正整数;
步骤303b:名字节点从多个数据节点中选择用于存储第i组文件块对应的校验块的第二数据节点;
步骤304b:名字节点指示客户端将目标文件划分成的各文件块分别存储到至少一个选定数据节点中;
步骤305b:名字节点指示第二数据节点存储第i组文件块对应的校验块。
具体的,名字节点在识别到接收的编码策略为纠删码策略后,可以首先为由目标文件划分成的各文件块选定至少一个选定数据节点,进一步可以对由目标文件划分成的各文件块进行分组,并为每组文件块对应的校验块选择第二数据节点。
具体的,在客户端将目标文件划分成的各文件块分别存储到至少一个选定数据节点中后,名字节点还可以指示存储有第i组文件块的选定数据节点计算出用于恢复第i组中任意一个文件块的校验块,并且可以将用于恢复第i组中任意一个文件块的校验块存储在第二数据节点中。其中,用于恢复第i组中任意一个文件块的校验块所存储到的第二数据节点可以为所述多个数据节点中除存储有第i组文件块的选定数据节点以外的选定数据节点,这样,即使存储有第i组文件块的选定数据节点出现异常,也可以通过读取第二数据节点中存储的校验块来恢复异常选定数据节点中存储的文件块。
至此,目标文件已按照确定出的编码策略存储在了相应的数据节点中。通过上述对本申请实施例的数据存储过程的介绍可以看出,可以为具有不同属性信息的目标文件预先配置其适用的编码方式,这样,分布式存储系统在存储目标文件时,便可以采用不同的编码方式进行存储,从而能够尽可能的满足不同类型的数据的存储需求。
后续,存储有由目标文件划分成的各文件块的至少一个选定数据节点可以采用心跳包的方式周期性地向名字节点上报其存储的文件块的存储状态。相应的,名字节点可以将至少一个选定数据节点分别存储的由目标文件划分成的各文件块的存储状态发送给磁盘阵列节点。
磁盘阵列节点若确定至少一个选定数据节点中的第一数据节点存储各文件块中的第一文件块的存储状态异常,则可以根据从确定的编码模块中读取到的编码策略,指示名字节点对第一数据节点存储的第一文件块进行修复。
具体的,当确定的编码模块中读取到的编码策略为副本策略时,磁盘阵列节点在检测到第一文件块存储状态异常时,可以指示名字节点将第一数据节点中存储的第一文件块删除,并指示名字节点依据存储有第一文件块对应的副本的选定数据节点中存储的第一文件块对应的副本,再创建一个新的副本并存储在第一数据节点中。
具体的,当确定的编码模块中读取到的编码策略为纠删码策略时,磁盘阵列节点在检测到第一文件块存储状态异常时,可以指示名字节点确定所述第一文件块所在组别并从第二数据节点中获取用于恢复确定的组别中任一文件块的校验块,进而通过计算分析第一文件块所在组别的其它文件块以及用于恢复第一文件块的校验块之间的关联,得出正常的第一文件块并将第一数据节点中存储状态异常的第一文件块替换为得到的正常的第一文件块。
由此可见,本申请实施例中,在采用确定出的编码策略完成对目标文件的存储后,若检测到由目标文件划分成的任一文件块的存储状态异常,还可以采用确定的编码策略对存储状态异常的文件块进行修复,能够提升分布式存储系统的容错能力,提高数据存储的可靠性。并且,不同类型的目标文件可以支持采用不同的编码策略进行修复存储异常的数据块,使得分布式存储系统中数据的修复方式更丰富。
需要说明的是,以上对本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
基于同一申请构思,本申请实施例中还提供了一种与数据存储方法对应的数据存储装置,由于该装置解决问题的原理与本申请实施例中数据存储方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
参照图4所示,为本申请实施例提供的一种数据存储装置的结构示意图,所述装置具体包括:
接收模块41,用于接收客户端发送的待存储的目标文件的属性信息;
处理模块42,用于根据预设的属性信息与编码模块的对应关系,从多个编码模块中选择与所述目标文件的属性信息对应的编码模块,并将从选择的编码模块中读取到的编码策略发送给名字节点,指示所述名字节点基于所述编码策略从多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点。
进一步地,所述目标文件的属性信息为所述目标文件的格式、所述目标文件的文件名、所述目标文件归属的文件夹、或所述目标文件的编码方式。
进一步地,所述接收模块41还用于:
在所述处理模块将从选择的编码模块中读取到的编码策略发送给所述名字节点之后,接收所述名字节点发送的至少一个选定数据节点分别存储的由所述目标文件划分成的各文件块的存储状态;
所述处理模块42还用于:
若确定所述至少一个选定数据节点中的第一数据节点存储所述各文件块中的第一文件块的存储状态异常,则根据从确定的编码模块中读取到的编码策略,指示所述名字节点对所述第一数据节点存储的第一文件块进行修复。
参照图5所示,为本申请实施例提供的又一种数据存储装置的结构示意图,所述装置具体包括:
接收模块51,用于接收磁盘阵列节点发送的编码策略以及由客户端指示的由待存储的目标文件划分成的各文件块的信息,所述编码策略为所述磁盘阵列节点从多个编码模块中选择的编码模块中读取出的;
处理模块52,用于基于所述编码策略,从多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点,并指示所述客户端将由所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中。
进一步地,若所述接收模块51接收的所述编码策略为副本编码策略,则所述处理模块52具体用于:
基于所述编码策略,确定由所述目标文件划分成的各文件块分别对应的副本个数N1;N1为大于或等于1的正整数;
从所述多个数据节点中分别选择用于存储每个文件块以及每个文件块对应的N1个副本的至少一个选定数据节点;
指示所述客户端将每个文件块复制为N1个副本,并指示所述客户端将每个文件块以及每个文件块对应的N1个副本存储在所述至少一个选定数据节点中。
进一步地,若所述接收模块51接收的所述编码策略为纠删码策略,则所述处理模块52具体用于:
基于所述编码策略,将由所述目标文件划分成的各文件块划分为N2组,其中,第i组文件块经计算后得到一个用于恢复第i组中任意一个文件块的校验块;N2为大于或等于1的正整数,i取遍1~N2中的任意一个正整数;
从所述多个数据节点中选择用于存储所述第i组文件块对应的校验块的第二数据节点;
指示所述客户端将所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中之后,指示所述第二数据节点存储所述第i组文件块对应的校验块。
本申请实施例还提供一种电子设备,包括:一个或多个处理器;以及一个或多个计算机可读介质,所述可读介质上存储有用于执行数据存储方法的程序,其中,所述程序被所述一个或多个处理器执行时,实现如上述数据存储方法中由磁盘阵列节点执行的任一方法。
本申请实施例还提供一个或多个计算机可读介质,所述可读介质上存储有用于执行数据存储方法的程序,其中,所述程序被一个或多个处理器执行时,使得处理器执行如上述数据存储方法中由磁盘阵列节点执行的任一方法的步骤。
本申请实施例还提供一种电子设备,包括:一个或多个处理器;以及一个或多个计算机可读介质,所述可读介质上存储有用于执行数据存储方法的程序,其中,所述程序被所述一个或多个处理器执行时,实现如上述数据存储方法中由名字节点执行的任一方法的步骤。
本申请实施例还提供一个或多个计算机可读介质,所述可读介质上存储有用于执行数据存储方法的程序,其中,所述程序被一个或多个处理器执行时,使得处理器执行如上述数据存储方法中由名字节点执行的任一方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (12)
1.一种数据存储方法,其特征在于,所述方法应用于分布式存储系统中,所述分布式存储系统包括具有多个编码模块的磁盘阵列节点、名字节点以及多个数据节点,所述方法包括:
所述磁盘阵列节点接收客户端发送的待存储的目标文件的属性信息;
所述磁盘阵列节点根据预设的属性信息与编码模块的对应关系,从所述多个编码模块中选择与所述目标文件的属性信息对应的编码模块,并将从选择的编码模块中读取到的编码策略发送给所述名字节点,指示所述名字节点基于所述编码策略从所述多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点。
2.如权利要求1所述的方法,其特征在于,所述目标文件的属性信息为所述目标文件的格式、所述目标文件的文件名、所述目标文件归属的文件夹、或所述目标文件的编码方式。
3.如权利要求1或2所述的方法,其特征在于,所述磁盘阵列节点将从选择的编码模块中读取到的编码策略发送给所述名字节点之后,所述方法还包括:
所述磁盘阵列节点接收所述名字节点发送的至少一个选定数据节点分别存储的由所述目标文件划分成的各文件块的存储状态;
所述磁盘阵列节点若确定所述至少一个选定数据节点中的第一数据节点存储所述各文件块中的第一文件块的存储状态异常,则根据从确定的编码模块中读取到的编码策略,指示所述名字节点对所述第一数据节点存储的第一文件块进行修复。
4.一种数据存储方法,其特征在于,所述方法应用于分布式存储系统中,所述分布式存储系统包括具有多个编码模块的磁盘阵列节点、名字节点以及多个数据节点,所述方法包括:
所述名字节点接收所述磁盘阵列节点发送的编码策略以及由客户端指示的由待存储的目标文件划分成的各文件块的信息,所述编码策略为所述磁盘阵列节点从所述多个编码模块中选择的编码模块中读取出的;
所述名字节点基于所述编码策略,从所述多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点,并指示所述客户端将由所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中。
5.如权利要求4所述的方法,其特征在于,若所述名字节点接收的所述编码策略为副本编码策略,则所述名字节点基于所述编码策略,从所述多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点,具体包括:
所述名字节点基于所述编码策略,确定由所述目标文件划分成的各文件块分别对应的副本个数N1;N1为大于或等于1的正整数;
所述名字节点从所述多个数据节点中分别选择用于存储每个文件块以及每个文件块对应的N1个副本的至少一个选定数据节点;
所述名字节点指示所述客户端将所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中,具体包括:
所述名字节点指示所述客户端将每个文件块复制为N1个副本,并指示所述客户端将每个文件块以及每个文件块对应的N1个副本存储在所述至少一个选定数据节点中。
6.如权利要求4所述的方法,其特征在于,若所述名字节点接收的所述编码策略为纠删码策略,则所述名字节点基于所述编码策略,从所述多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点之后,所述方法包括:
所述名字节点基于所述编码策略,将由所述目标文件划分成的各文件块划分为N2组,其中,第i组文件块经计算后得到一个用于恢复第i组中任意一个文件块的校验块;N2为大于或等于1的正整数,i取遍1~N2中的任意一个正整数;
所述名字节点从所述多个数据节点中选择用于存储所述第i组文件块对应的校验块的第二数据节点;
所述名字节点指示所述客户端将所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中之后,所述方法还包括:
所述名字节点指示所述第二数据节点存储所述第i组文件块对应的校验块。
7.一种数据存储装置,其特征在于,所述装置包括:
接收模块,用于接收客户端发送的待存储的目标文件的属性信息;
处理模块,用于根据预设的属性信息与编码模块的对应关系,从多个编码模块中选择与所述目标文件的属性信息对应的编码模块,并将从选择的编码模块中读取到的编码策略发送给名字节点,指示所述名字节点基于所述编码策略从多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点。
8.如权利要求7所述的装置,其特征在于,所述目标文件的属性信息为所述目标文件的格式、所述目标文件的文件名、所述目标文件归属的文件夹、或所述目标文件的编码方式。
9.如权利要求7或8所述的装置,其特征在于,所述接收模块还用于:
在所述处理模块将从选择的编码模块中读取到的编码策略发送给所述名字节点之后,接收所述名字节点发送的至少一个选定数据节点分别存储的由所述目标文件划分成的各文件块的存储状态;
所述处理模块还用于:
若确定所述至少一个选定数据节点中的第一数据节点存储所述各文件块中的第一文件块的存储状态异常,则根据从确定的编码模块中读取到的编码策略,指示所述名字节点对所述第一数据节点存储的第一文件块进行修复。
10.一种数据存储装置,其特征在于,所述装置包括:
接收模块,用于接收磁盘阵列节点发送的编码策略以及由客户端指示的由待存储的目标文件划分成的各文件块的信息,所述编码策略为所述磁盘阵列节点从多个编码模块中选择的编码模块中读取出的;
处理模块,用于基于所述编码策略,从多个数据节点中选定用于存储由所述目标文件划分成的各文件块的至少一个选定数据节点,并指示所述客户端将由所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中。
11.如权利要求10所述的装置,其特征在于,若所述接收模块接收的所述编码策略为副本编码策略,则所述处理模块具体用于:
基于所述编码策略,确定由所述目标文件划分成的各文件块分别对应的副本个数N1;N1为大于或等于1的正整数;
从所述多个数据节点中分别选择用于存储每个文件块以及每个文件块对应的N1个副本的至少一个选定数据节点;
指示所述客户端将每个文件块复制为N1个副本,并指示所述客户端将每个文件块以及每个文件块对应的N1个副本存储在所述至少一个选定数据节点中。
12.如权利要求10所述的装置,其特征在于,若所述接收模块接收的所述编码策略为纠删码策略,则所述处理模块具体用于:
基于所述编码策略,将由所述目标文件划分成的各文件块划分为N2组,其中,第i组文件块经计算后得到一个用于恢复第i组中任意一个文件块的校验块;N2为大于或等于1的正整数,i取遍1~N2中的任意一个正整数;
从所述多个数据节点中选择用于存储所述第i组文件块对应的校验块的第二数据节点;
指示所述客户端将所述目标文件划分成的各文件块分别存储到所述至少一个选定数据节点中之后,指示所述第二数据节点存储所述第i组文件块对应的校验块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711146815.0A CN109799948B (zh) | 2017-11-17 | 2017-11-17 | 一种数据存储方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711146815.0A CN109799948B (zh) | 2017-11-17 | 2017-11-17 | 一种数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109799948A true CN109799948A (zh) | 2019-05-24 |
CN109799948B CN109799948B (zh) | 2023-05-16 |
Family
ID=66554933
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711146815.0A Active CN109799948B (zh) | 2017-11-17 | 2017-11-17 | 一种数据存储方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109799948B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111475105A (zh) * | 2020-03-11 | 2020-07-31 | 平安科技(深圳)有限公司 | 监控数据存储方法、设备、服务器及存储介质 |
CN111694520A (zh) * | 2020-06-11 | 2020-09-22 | 邦尼集团有限公司 | 一种大数据存储优化的方法及装置 |
CN111782135A (zh) * | 2019-06-14 | 2020-10-16 | 北京京东尚科信息技术有限公司 | 数据存储方法、系统、数据节点和计算机可读存储介质 |
CN112084250A (zh) * | 2020-09-15 | 2020-12-15 | 深圳市宝能投资集团有限公司 | 数据存储方法、数据查询方法和电子设备 |
CN112578992A (zh) * | 2019-09-27 | 2021-03-30 | 西安华为技术有限公司 | 一种数据存储方法和数据存储装置 |
CN112783445A (zh) * | 2020-11-17 | 2021-05-11 | 北京旷视科技有限公司 | 数据存储方法、装置、系统、电子设备及可读存储介质 |
CN113626649A (zh) * | 2021-08-02 | 2021-11-09 | Oppo广东移动通信有限公司 | 数据存储方法、装置、存储介质以及电子设备 |
Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001042881A2 (en) * | 1999-12-06 | 2001-06-14 | B-Bop Associates, Inc. | System and method for the storage, indexing and retrieval of xml documents using relational databases |
CN101834899A (zh) * | 2010-04-29 | 2010-09-15 | 中科院成都信息技术有限公司 | 一种分布式自适应编码存储方法 |
CN102270161A (zh) * | 2011-06-09 | 2011-12-07 | 华中科技大学 | 一种基于纠删码的多等级容错数据存储、读取和恢复方法 |
CN102546755A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 云存储系统的数据存储方法 |
US20120266044A1 (en) * | 2011-04-18 | 2012-10-18 | The Chinese University Of Hong Kong | Network-coding-based distributed file system |
CN102937967A (zh) * | 2012-10-11 | 2013-02-20 | 南京中兴新软件有限责任公司 | 数据冗余实现方法及装置 |
CN103118133A (zh) * | 2013-02-28 | 2013-05-22 | 浙江大学 | 基于文件访问频次的混合云存储方法 |
CN103220367A (zh) * | 2013-05-13 | 2013-07-24 | 深圳市中博科创信息技术有限公司 | 数据复制方法及数据存储系统 |
CN103533055A (zh) * | 2013-10-16 | 2014-01-22 | 南京大学镇江高新技术研究院 | 一种基于网络编码的低冗余云存储系统及其实现方法 |
CN103544270A (zh) * | 2013-10-18 | 2014-01-29 | 南京大学镇江高新技术研究院 | 面向数据中心的通用化网络编码容错存储平台及工作方法 |
US8706701B1 (en) * | 2010-11-18 | 2014-04-22 | Emc Corporation | Scalable cloud file system with efficient integrity checks |
CN104461865A (zh) * | 2014-11-04 | 2015-03-25 | 哈尔滨工业大学 | 云环境下分布式文件系统可靠性测试套件 |
CN105956128A (zh) * | 2016-05-09 | 2016-09-21 | 南京大学 | 一种基于简单再生码的自适应编码存储容错方法 |
CN106649406A (zh) * | 2015-11-04 | 2017-05-10 | 华为技术有限公司 | 一种自适应存储文件的方法和装置 |
US20170286436A1 (en) * | 2016-03-31 | 2017-10-05 | Acronis International Gmbh | System and method for fast parallel data processing in distributed storage systems |
-
2017
- 2017-11-17 CN CN201711146815.0A patent/CN109799948B/zh active Active
Patent Citations (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2001042881A2 (en) * | 1999-12-06 | 2001-06-14 | B-Bop Associates, Inc. | System and method for the storage, indexing and retrieval of xml documents using relational databases |
CN101834899A (zh) * | 2010-04-29 | 2010-09-15 | 中科院成都信息技术有限公司 | 一种分布式自适应编码存储方法 |
US8706701B1 (en) * | 2010-11-18 | 2014-04-22 | Emc Corporation | Scalable cloud file system with efficient integrity checks |
US20120266044A1 (en) * | 2011-04-18 | 2012-10-18 | The Chinese University Of Hong Kong | Network-coding-based distributed file system |
CN102270161A (zh) * | 2011-06-09 | 2011-12-07 | 华中科技大学 | 一种基于纠删码的多等级容错数据存储、读取和恢复方法 |
CN102546755A (zh) * | 2011-12-12 | 2012-07-04 | 华中科技大学 | 云存储系统的数据存储方法 |
CN102937967A (zh) * | 2012-10-11 | 2013-02-20 | 南京中兴新软件有限责任公司 | 数据冗余实现方法及装置 |
CN103118133A (zh) * | 2013-02-28 | 2013-05-22 | 浙江大学 | 基于文件访问频次的混合云存储方法 |
CN103220367A (zh) * | 2013-05-13 | 2013-07-24 | 深圳市中博科创信息技术有限公司 | 数据复制方法及数据存储系统 |
CN103533055A (zh) * | 2013-10-16 | 2014-01-22 | 南京大学镇江高新技术研究院 | 一种基于网络编码的低冗余云存储系统及其实现方法 |
CN103544270A (zh) * | 2013-10-18 | 2014-01-29 | 南京大学镇江高新技术研究院 | 面向数据中心的通用化网络编码容错存储平台及工作方法 |
CN104461865A (zh) * | 2014-11-04 | 2015-03-25 | 哈尔滨工业大学 | 云环境下分布式文件系统可靠性测试套件 |
CN106649406A (zh) * | 2015-11-04 | 2017-05-10 | 华为技术有限公司 | 一种自适应存储文件的方法和装置 |
US20170286436A1 (en) * | 2016-03-31 | 2017-10-05 | Acronis International Gmbh | System and method for fast parallel data processing in distributed storage systems |
CN105956128A (zh) * | 2016-05-09 | 2016-09-21 | 南京大学 | 一种基于简单再生码的自适应编码存储容错方法 |
Non-Patent Citations (4)
Title |
---|
NATALIA SILBERSTEIN等: "Locality and availability of array codes constructed from subspaces" * |
刘莎;楚传仁;: "基于文件等级的Ceph数据冗余存储策略的研究" * |
周福平;谢强;丁秋林;: "分布式环境中基于改进RS编码的数据存储" * |
程振东;栾钟治;孟由;李亮淑;和荣;杨婷婷;钱德沛;管刚;陈伟;: "云文件系统中纠删码技术的研究与实现" * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111782135A (zh) * | 2019-06-14 | 2020-10-16 | 北京京东尚科信息技术有限公司 | 数据存储方法、系统、数据节点和计算机可读存储介质 |
CN112578992A (zh) * | 2019-09-27 | 2021-03-30 | 西安华为技术有限公司 | 一种数据存储方法和数据存储装置 |
CN112578992B (zh) * | 2019-09-27 | 2022-07-22 | 西安华为技术有限公司 | 一种数据存储方法和数据存储装置 |
CN111475105A (zh) * | 2020-03-11 | 2020-07-31 | 平安科技(深圳)有限公司 | 监控数据存储方法、设备、服务器及存储介质 |
CN111475105B (zh) * | 2020-03-11 | 2024-05-03 | 平安科技(深圳)有限公司 | 监控数据存储方法、设备、服务器及存储介质 |
CN111694520A (zh) * | 2020-06-11 | 2020-09-22 | 邦尼集团有限公司 | 一种大数据存储优化的方法及装置 |
CN112084250A (zh) * | 2020-09-15 | 2020-12-15 | 深圳市宝能投资集团有限公司 | 数据存储方法、数据查询方法和电子设备 |
CN112783445A (zh) * | 2020-11-17 | 2021-05-11 | 北京旷视科技有限公司 | 数据存储方法、装置、系统、电子设备及可读存储介质 |
CN113626649A (zh) * | 2021-08-02 | 2021-11-09 | Oppo广东移动通信有限公司 | 数据存储方法、装置、存储介质以及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN109799948B (zh) | 2023-05-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109799948A (zh) | 一种数据存储方法及装置 | |
US11973869B2 (en) | Maintaining blocks of a blockchain in a partitioned blockchain network | |
JP6653358B2 (ja) | 複数のシステムからのデータのブロックチェーンロギング | |
CN107395353B (zh) | 一种区块链共识方法及装置 | |
CN103793425B (zh) | 用于分布式系统的数据处理方法及装置 | |
US9250946B2 (en) | Efficient provisioning of cloned virtual machine images using deduplication metadata | |
CN110147411A (zh) | 数据同步方法、装置、计算机设备及存储介质 | |
CN109034993A (zh) | 对账方法、设备、系统及计算机可读存储介质 | |
CN110503558A (zh) | 一种基于区块链系统的处理方法及装置 | |
US8972678B2 (en) | Efficient backup replication | |
CN106575227B (zh) | 自动软件更新框架 | |
CN109634932A (zh) | 一种智能合约存储方法及存储系统 | |
CN103106069A (zh) | 识别捆绑软件产品组件的方法和系统 | |
CN106209974B (zh) | 一种数据同步方法、设备及系统 | |
CN103631666A (zh) | 数据冗余容错的适配管理设备、服务设备、系统及方法 | |
CN113326165B (zh) | 基于区块链的数据处理方法、设备及计算机可读存储介质 | |
CN102611576A (zh) | 一种生成网管配置模型文件的方法及装置 | |
CN109508295A (zh) | 区块链共识算法测试方法、装置、计算装置和存储介质 | |
EP2689333A1 (en) | Method and system for storing and reading data in or from a key value storage | |
CN109344268A (zh) | 图形数据库写入的方法、电子设备及计算机可读存储介质 | |
CN109413202A (zh) | 区块链交易信息的排序系统及方法 | |
CN105159925B (zh) | 一种数据库集群数据分配方法及系统 | |
CN103270520A (zh) | 基于重要性类的数据管理 | |
CN109196458A (zh) | 存储系统可用容量计算方法及装置 | |
US20200394904A1 (en) | Metering data management system and computer readable recording medium |
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 |