CN111367876B - 一种基于内存元数据的分布式文件管理方法 - Google Patents
一种基于内存元数据的分布式文件管理方法 Download PDFInfo
- Publication number
- CN111367876B CN111367876B CN202010143996.7A CN202010143996A CN111367876B CN 111367876 B CN111367876 B CN 111367876B CN 202010143996 A CN202010143996 A CN 202010143996A CN 111367876 B CN111367876 B CN 111367876B
- Authority
- CN
- China
- Prior art keywords
- node
- storage
- metadata
- query
- file
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/11—File system administration, e.g. details of archiving or snapshots
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Human Computer Interaction (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于内存元数据的分布式文件管理方法,包括:选择某一存储节点为管理节点;对管理节点以外的存储节点进行查询性能评测;各存储节点将性能评测结果发送给管理节点;管理节点根据性能评测结果利用任务分配算法对各存储节点进行查询任务量分配;各存储节点根据分配查询的任务量将对应数量的元数据信息读入到内存中;各存储节点根据读入的元数据信息获得查询文件块信息,并将查询文件块信息发送至管理节点;管理节点整合查询文件块信息为查询结果,并将查询结果返回给客户端。相对于现有技术,本方法使用内存的元数据管理,实现文件在分布式系统中的并行存储、性能的评测与查询任务量的分配,提高分布式存储、查询和读取的效率。
Description
技术领域
本发明涉及分布式文件管理技术领域,特别是涉及一种基于内存元数据的分布式文件管理方法。
背景技术
大数据时代的降临,使得数据量日渐增长,越来越多的数据需要一个有效的系统来存储以及维护,同时在大量数据中快速查找到需要的数据也是分布式系统的一大难点。
GFS中元数据的查询由一个master节点实现,master节点在内存中保存着所有存储文件的元数据。在GFS之后公布的HDFS与TFS等文件系统都是基于一个管理节点在内存中的元数据查询得到结果返回客户端,客户端根据元数据信息到对应数据存储节点磁盘中读取数据。其查询时间都是由一个管理节点来决定的,因此降低查询时间,就需要增加管理节点的CPU以及内存,但现阶段想要设计大CPU以及大内存的设备极其困难并且价格昂贵。以上问题使用分布式的查询方法可以解决,利用分布于各个存储节点中的内存和CPU实现任务的分解,使得整体查询的方式变成一个多CPU大内存的节点进行查询。当前人们使用的音乐播放器,视频播放器以及云存储等,对于服务端响应时间的要求是相当高的,这就要求存储系统内部查询时间就应该越低以及网络数据传输的速度越高。而在分布式系统中,保证各个节点的性能完全一致是极其困难的,在一般情况下,节点的性能都是参差不齐的,因此普通的分布式文件系统,难以最大化利用各分布式节点的查询性能,造成对客户端请求响应速度变慢。
发明内容
针对现有技术存在的问题,本发明的主要目的在于提供一种提高分布式系统对于客户端请求响应速度的基于内存元数据的分布式文件管理方法。
一种基于内存元数据的分布式文件管理方法,该管理方法包括当客户端发送查询请求时,利用分布式系统中存储节点的内存实现元数据分布式查询的方法,该查询方法包括如下步骤:选择某一存储节点为管理节点;对管理节点以外的存储节点进行查询性能评测;各存储节点将性能评测结果发送给管理节点;管理节点根据性能评测结果利用任务分配算法对各存储节点进行查询任务量分配;各存储节点根据分配查询的任务量将对应数量的元数据信息读入到内存中;各存储节点根据读入的元数据信息获得查询文件块信息,并将查询文件块信息发送至管理节点;管理节点整合查询文件块信息为查询结果,并将查询结果返回给客户端。
进一步地,该基于内存元数据的分布式文件管理方法还包括当客户端发送读取请求时,利用分布式系统中存储节点的内存实现元数据分布式读取的方法,该读取方法包括如下步骤:选择某一存储节点为管理节点;对管理节点以外的存储节点进行查询性能评测;各存储节点将性能评测结果提供给管理节点;管理节点根据性能评测结果利用任务分配算法对各存储节点进行查询任务量分配;管理节点根据查询任务量分配结果分配各存储节点查询对应的文件名;存储节点得到查询结果并向其他所有节点发送结果并停止查询;各存储节点根据查询到的元数据信息找到文件块并发送给客户端;客户端对接受文件块解码获得原文件。
更进一步地,该基于内存元数据的分布式文件管理方法还包括当客户端发送存储请求时,利用分布式系统中存储节点的内存实现元数据分布式存储的方法,该存储方法包括如下步骤:选择某一存储节点为管理节点;客户端对文件进行编码分块并发送存储请求;管理节点向各存储节点发送节点存储顺序列表与存储序列号;若存储节点空闲,则接收请求存储的文件块,将文件块存储在相同的路径下,该存储节点更新内存中的元数据;若存储节点正在接收其他客户端发送的数据时,则将存储请求放入存储等待列表,当待存储节点接收完当前数据后,则遍历存储等待列表,向提出存储请求的客户端请求文件块的传输,将文件块存储在相同的路径下,该存储节点更新内存中的元数据。
更进一步地,该基于内存元数据的分布式文件管理方法中,内存元数据中保存着存储文件的文件名、文件在存储节点硬盘中的存储路径。
更进一步地,该基于内存元数据的分布式文件管理方法中,对存储节点进行查询性能评测包括如下步骤:各存储节点从评测元数据文件中读入多条评测元数据放入内存中;通过对读入内存中评测元数据的多次依次顺序查询,得到元数据查询位置与查询时间的对应值;对每次获取的查询时间进行中值滤波处理,消除偏离因存储节点原因带来的时间测量误差;依据多次查询获取的查询位置和查询时间值构成以元数据查询位置为自变量,中值滤波处理后的查询时间的均值为因变量的一次函数,以一次函数的斜率作为某一存储节点的性能评测结果。
更进一步地,该基于内存元数据的分布式文件管理方法中,管理节点根据性能评测结果利用任务分配算法对各存储节点进行查询任务量分配包括如下步骤:设各存储节点查询任务量为未知数,令各存储节点的性能评测结果与该存储节点对应的查询任务量做乘积得到的值相等,同时令所有存储节点查询任务量的和与查询元数据总数相等,查询元数据总数为已知数,通过求解方程得到每个存储节点对应的查询任务量,达到查询任务分配的目的。
更进一步地,该基于内存元数据的分布式文件管理方法中,若管理节点发生故障,则随机选择另一个存储节点作为管理节点,并通知其余存储节点更新管理节点信息,其余存储节点将性能评测结果发送给新的管理节点,并由新的管理节点依据任务分配算法计算和分配各存储节点的查询任务量。
更进一步地,该基于内存元数据的分布式文件管理方法中,管理节点监听各在线存储节点的工作状态,若在线存储节点掉线,则管理节点记录其掉线期间未接收到的文件,并且令性能评测结果最好的存储节点负责代收掉线节点的文件,在掉线节点重新上线之后,管理节点发送掉线期间变动的文件列表,重新上线的节点到对应的代收节点请求文件的更新。
更进一步地,该基于内存元数据的分布式文件管理方法中,当掉线节点为复数个时,则管理节点按照性能评测结果从大到小的顺序依次通知与掉线节点相同数量的存储节点代收相应掉线节点的文件。
更进一步地,该基于内存元数据的分布式文件管理方法中,当进行文件并行存储时,不同存储节点依据接收到客户端存储请求的顺序不同会导致各存储节点元数据的更新不一致,则以性能评测结果由大到小依序让存储节点在内存中更新对应数量的元数据。
相对于现有技术,本申请涉及一种分布式文件管理方法,该方法使用内存的元数据管理,实现文件在分布式系统中的并行存储以及性能的评测与查询任务量的分配。首先,本发明利用系统中各个存储节点的内存实现元数据的分布式查询,以及对各个节点进行查询性能评测并根据性能评测的结果来确定节点在内存中存储的元数据的数据量以及查询任务量的分配,本方法能有效降低文件存储、查询和读取的时间,提高分布式存储、查询和读取的效率;其次,客户端保存文件时按照管理节点响应的存储信息将文件通过编码分块并按照编号顺序存储到节点中,同时系统支持多个客户端并行存储文件。
附图说明
图1是本发明基于内存元数据的分布式文件管理方法第一种实施例的流程图
图2是本发明基于内存元数据的分布式文件管理方法第二种实施例的流程图
图3是本发明基于内存元数据的分布式文件管理方法第二种实施例的示意图
图4是本发明基于内存元数据的分布式文件管理方法第三种实施例的流程图
图5是本发明基于内存元数据的分布式文件管理方法第四种实施例的流程图
图6是本发明基于内存元数据的分布式文件管理方法第五种实施例的流程图
图7是本发明基于内存元数据的分布式文件管理方法第五种实施例的示意图
图8是本发明客户端文件存储与读取示意图
图9是本发明客户端文件存储示意图
图10本发明利用五个存储节点进行文件查询的示意图
具体实施方式
下面结合附图,详细说明本发明的具体实施方式。
本发明涉及一种基于内存元数据的分布式文件管理方法,通过分布式文件系统中各存储节点的本机查询来评测节点性能,按照性能的优劣来设计各个节点的管理,随机选择某一存储节点为管理节点,或者让性能高的节点作为管理节点负责系统中的序列号分发以及监听各节点的工作状态。客户端存储的同一文件的文件块保存在各个存储节点硬盘中相同的文件路径之下,在通过分布式查询元数据得到结果之后,各存储节点可通过查询结果迅速定位到文件块,从而响应客户端得到文件。同时采用任务分配算法,使得不同性能的存储节点根据性能的不同查询不同的元数据数量,在查询时间上相比于单机查询有更好的效果。具体流程如下:
各个存储节点开始运行时通过读入评测元数据文件中的多条元数据存储到内存中,通过对位置为1的元数据依次查询直到查询最后一个位置的元数据,得到与元数据查询位置相对应的查询时间,依据这两个值构成以元数据查询位置为自变量,查询时间为因变量的一次函数,以该一次函数中的斜率来评测一个节点的查询性能,其斜率越小性能越高。
性能评测之后,各节点开始相互通信连接,系统随机选择一个节点作为管理节点,管理节点会依据性能评测排序结果给每个节点定下编号,便于之后文件块的存储以及文件的查找。同时作为管理节点的节点开启各节点心跳消息监听的线程,非管理节点开启定时发送心跳消息给管理节点的线程。至此,系统正式开始运行。
当一客户端经过编码分块之后向各节点提出存储请求之后,管理节点会首先响应客户端,分发此次客户端存储文件块的序列号以及告知其存储顺序,即从管理节点开始存储,亦或是逆序存储。客户端接收到这些信息后,按照对应方式依次向各个节点提出存储请求,如果此时节点存储其他文件块,则客户端被放入等待列表,并依照次序向下一个节点发起存储请求,直至遍历了一次节点列表。
当一个文件块存储到节点时,节点根据序列号更新硬盘中的元数据,保证了所有节点硬盘中元数据的一致性。
任务分配算法是在本系统中根据性能分配查询数据量的算法,其详细实现为:
这里假设分布式系统中有五个节点,其斜率即性能都可用值k1,k2,k3,k4和k5表示以及比较。假设查询的元数据总数为N,每个节点分配的查询元数据个数分别为n1,n2,n3,n4和n5。因此可以得到:
N=n1+n2+n3+n4+n5 ①
同时令分布式查询中每一单一节点最大查询时间是相等的,因此可以通过查询元数据个数与斜率的乘积得到查询时间,因此可以得到等式:
k1*n1=k2*n2=k3*n3=k4*n4=k5*n5 ②
根据以上两个等式,将n2,n3,n4,n5全用n1表示,可以通过等式①求出n1的值,通过n1的值即可得到其他的值,这样便实现了分布式查询中查询任务量分配的目的。因为斜率是系统中测试得到的数据,因此只要得到元数据总数就可以通过此算法为分布式系统中不同性能的电脑分配查询任务。
通过任务分配算法就可以确定在每个节点中读入内存中的元数据数量,因此在读入元数据到内存之前会经过该算法确认本节点查询任务量之后,读入对应部分的元数据到内存中。使用此方法进行分布式查询时,整体上的查询效果优于单机查询效果。
依照该任务分配算法中的各值进行接下来元数据在各节点中内存更新的说明,通过n1,n2,n3,n4,n5同样可以评测查询性能,即值越大性能越高,我们通过对这五个数据除以其最大公约数,设得到值n1’,n2’,n3’,n4’,n5’,当文件块在所有节点中存储完成之后,依据n1’等这五个数,按照n1,n2的顺序依次给节点命名为节点1,节点2等,首先将最新的元数据更新到节点1的内存中,直到最新的元数据更新到节点1内存中的个数为n1’个,此时最新的元数据就在节点2的内存中更新,直到更新个数为n2’个交换节点更新元数据到内存中,依次类推,就可以在保证任务分配算法实施的同时实现元数据即时的更新到内存中。当内存中任一节点故障停止服务时,由管理节点或者新管理节点向所有节点发出重新导入元数据到内存中的消息,客户端的读取文件服务在重新同步数据之前停止,但是存储文件的服务依然能够使用。
在客户端发出读取文件请求的时候,依据客户端的读取文件名,系统中进行分布式查询,其流程为:管理节点接收到客户端读取文件请求,向系统中各节点发送查询请求,各节点依据查询目标在本身内存中保存的元数据中查询结果,查询到结果的节点向其余节点返回查询结果,各节点收到结果之后即可获取元数据中保存的文件路径,而系统中各节点相同文件的文件块存储的路径相同,仅仅是后缀名是不同的分块编号。因此各节点能根据查询结果迅速定位到需求文件块,从而提供对应文件块给客户端,客户端通过接收文件块解码之后即可获得原文件。
系统运行时,会随机选择一个节点做为系统的管理节点,当管理节点发生故障时,系统会随机选择另一个节点代替管理节点工作,管理节点负责响应客户端发送的存储请求,分发序列号与存储顺序以及监听各节点工作状态,管理节点将不参加系统的元数据的查询工作。读取文件时取得满足解码的数据块数量进行解码获得需要文件,其中各个节点保存的元数据路径等信息一致,只有最后的文件分块标号不同,系统查询客户端读取文件时通过分布式查询降低查询时间,同时系统通过本身任务分配算法提高了分布式查询的效果。
在基于内存元数据的分布式文件管理方法中,内存元数据中保存着存储文件的文件名、文件在存储节点硬盘中的存储路径。由于文件的各个文件分块为同一文件分块,且系统定义文件分块存储的路径在各个存储节点上相同,因此系统中所有节点在硬盘中保存着相同的一份元数据,各个节点按照任务分配算法将本节点负责查询管理的元数据读入内存中。每一次管理节点根据任务分配算法变更查询任务量时使得每个存储节点重新将负责查询管理的元数据读入内存中。
图1是本发明基于内存元数据的分布式文件管理方法第一种实施例的流程图。
S11、节点初始化;
S12、随机选择某一存储节点为管理节点,连接管理节点;
S13、载入性能评测数据对管理节点以外的存储节点进行性能评测。对存储节点进行查询性能评测包括如下步骤:各存储节点从评测元数据文件中读入多条评测元数据放入内存中;通过对读入内存中评测元数据的多次依次顺序查询,得到元数据查询位置与查询时间的对应值;对每次获取的查询时间进行中值滤波处理,消除偏离因存储节点原因带来的时间测量误差;依据多次查询获取的查询位置和查询时间值构成以元数据查询位置为自变量,中值滤波处理后的查询时间的均值为因变量的一次函数,以一次函数的斜率作为某一存储节点的性能评测结果,斜率越小则代表该查询节点的查询性能越好;
S14、各存储节点将性能评测结果发送给管理节点。管理节点收到评测结果之后开始对各存储节点进行编号,每个存储节点编号只在第一次运行时进行,编号由0开始,依次按1递增,管理节点根据已有的最大编号依次向后给上线未编号的存储节点编号,之后收到编号的存储节点会保存各自的编号以及当前最大编号以及性能评测结果到硬盘中的初始化文件中,当前最大编号会随着节点增加而更改,为了防止系统中出现相同编号的节点。之后若节点检测到硬盘中有初始化文件,则会读取初始化文件中的数据获得节点编号以及性能评测结果;
S15、管理节点是否正常工作,当管理节点正常工作,进入S160,当管理阶段发生故障,进入S170;
S160、管理节点监听各在线节点的工作状态;S161、判断在线节点是否正常工作,当在线节点正常工作,进入S162,当在线节点掉线,进入S163;S162、管理节点根据性能评测结果利用任务分配算法对各存储节点进行查询任务量分配,将各节点需要查询管理的元数据量发送给各存储节点,同时管理节点记录各存储节点查询任务量除以最大公约数的值。管理节点根据性能评测结果利用任务分配算法对各存储节点进行查询任务量分配包括如下步骤:设各存储节点查询任务量为未知数,令各存储节点的性能评测结果与该存储节点对应的查询任务量做乘积得到的值相等,同时令所有存储节点查询任务量的和与查询元数据总数相等,查询元数据总数为已知数,通过求解方程得到每个存储节点对应的查询任务量,达到查询任务分配的目的;S163、管理节点通知其他正常存储节点;S164、确定掉线节点的文件块代收节点;
S170、随机选择另一个存储节点作为管理节点;S171、通知其余节点更新管理节点信息并返回S14,即其余存储节点将性能评测结果发送给新的管理节点,并由新的管理节点依据任务分配算法计算和分配各存储节点的查询任务量。
图2、图3是本发明基于内存元数据的分布式文件管理方法第二种实施例的流程图和示意图。
S20、随机选择管理节点。注意管理节点负责监测各存储节点工作状态,序列号分发以及发送存储节点列表,并且不参与元数据的查询,但参与文件的存储;
S21、各管理节点以外的存储节点读入性能评测文件并生成性能评测结果;
S22、各存储节点将性能评测结果提供给管理节点;
S23、管理节点根据任务量分配算法分配节点读入对应数量元数据信息到内存中;
S24、判断管理节点是否正常工作,当管理节点正常工作,进入S25,当管理节点发生故障,进入S29;
S25、管理节点监听各在线存储节点的工作状态;
S26、判断各存储节点是否正常工作,当发现有存储节点掉线,进入S270,当存储节点正常工作,进入S280;
S270、管理节点通知其余存储节点掉线节点信息;S271、管理节点记录其掉线期间未接收到的文件,并且令性能评测结果最好的存储节点负责代收掉线节点的文件。当掉线节点为复数个时,则管理节点按照性能评测结果从大到小的顺序依次通知与掉线节点相同数量的存储节点代收相应掉线节点的文件;
S280、判断是否有掉线节点上线,若无掉线节点上线,则运行结束,若有掉线节点上线,则进入S281;S281、管理节点发送掉线期间变动的文件列表,重新上线的节点到对应的代收节点请求文件的更新,代收节点发现节点上线并向其发送文件块;S282、上线节点接收文件块并更新元数据信息;
S29、选择任一存储节点替代管理节点并通知其余存储节点管理节点的更改,并返回S22。
图4是本发明基于内存元数据的分布式文件管理方法第三种实施例的流程图。
S41、随机选择管理节点;
S42、存储节点性能评测;
S43、管理节点记录存储节点性能评测结果;
S44、存储节点根据性能评测结果向内存中读入元数据信息;
S45、管理节点是否正常工作,若管理节点正常工作,进入S460,若管理节点发生故障,则进入S470;
S460、监听各存储节点的状态;S461、管理节点监测存储节点是否正常工作,若存储节点正常工作,则运行结束,若存储节点掉线,则进入S462;S462、管理节点通知其他正常存储节点;S463、确定掉线存储节点的文件块代收节点;
S470、选择任一存储节点成为管理节点,S471、通知其余存储节点更新管理节点信息并返回S43。
图5是本发明基于内存元数据的分布式文件管理方法第四种实施例的流程图。当客户端发送读取或存储请求时,利用分布式系统中存储节点的内存实现元数据分布式读取或存储的方法。
S51、随机选择某一存储节点为管理节点,管理节点接收客户端请求;
S52、客户端读取请求或存储请求,若客户端发出读取请求,则进入S530,若客户端发出存储请求,则进入S540;
以下为对客户端发出读取请求的响应:
S530、对管理节点以外的存储节点进行查询性能评测,各存储节点将性能评测结果提供给管理节点,管理节点根据性能评测结果利用任务分配算法对各存储节点进行查询任务量分配;
S531、判断是否有节点查询到结果,若有节点查询到结果,则进入S532,若无节点查询到结果,则进入S534;
S532、通知其余存储节点结果查询成功;S533、发送客户端读取文件的文件块;
S534、通知客户端读取文件不存在。
以下为对客户端发出存储请求的响应:
S540、管理节点发送节点存储顺序列表;
S541、存储序列号分发;
S542、判断存储节点是否空闲,若存储节点不空闲,正在接收其他客户端发送的数据时,则进入S543;若存储节点空闲,则进入S545,
S543、存储请求放入存储等待列表;S544、当待存储节点接收完当前数据后,则遍历存储等待列表,向提出存储请求的客户端请求文件块的传输并进入S545;
S545、存储节点接收请求存储的文件块,将接受文件块存储在相同的路径下;S546、存储节点更新内存中的元数据。当进行文件并行存储时,不同存储节点依据接收到客户端存储请求的顺序不同会导致各存储节点元数据的更新不一致,则以性能评测结果由大到小依序让存储节点在内存中更新对应数量的元数据。
如图8、图9,基于存储等待列表的文件并行存储,每个节点中维护着一份存储等待列表,等待列表中保存着存储文件的文件名,提出存储请求的IP地址信息,文件元数据存储序列号,存储序列号即文件元数据的存储顺序编号,是利用本方法的分布式系统根据元数据存储顺序为每个元数据依序设定的存储编号。客户端对文件进行编码分块,即给各个文件块依次以0递增1的方式为文件块编号,之后客户端根据文件块编号按照管理节点发送的存储列表向对应节点发送存储请求,若此时节点正在接收其他客户端发送的数据,则客户端则会在向下一个节点存储文件块的时候让当前节点代收上一节点未接收的数据,该节点联系文件块待存储节点并在该节点接收完数据之前将信息写入其等待列表中,在待存储节点接收完数据之后,遍历等待列表,向提出存储请求的IP地址请求发送代收的文件块,若依序存储的节点中最后一个节点没有接收客户端的文件块,那么客户端通知管理节点,管理节点通知当前空闲节点接收代收文件块的任务,若所有节点都在存储文件无法接收当前文件,客户端则会依照管理节点给出的存储顺序依序找到第一个未存储文件块的节点,并将存储信息保存到该节点的存储等待列表中,等待节点处理完当前请求后再请求客户端发送文件块,接收客户端发送文件的优先级高于接收节点代收文件的优先级。每个节点都保存有其他节点的IP地址信息与编号,并由管理节点按照标号顺序生成一个节点列表,列表第一位为管理节点的IP地址信息与编号,管理节点接收到客户端存储请求时将列表发送给客户端,并根据自身存储情况让客户端以列表顺序向节点中存储文件块或者由列表逆序向节点中存储文件块,该列表中同时也包含了节点代收文件块的信息。
基于并行文件存储的元数据的一致性保持,因为系统支持并行存储,所以不同节点依据接收到客户端存储请求的不同顺序会导致各节点元数据的更新不一致,引入序列号之后,各节点依据序列号更新硬盘中的元数据。硬盘中元数据以追加的方式更新,因此若本次存储的文件序列号与元数据文件中最后一个元数据序列号即元数据文件中元数据总数不连续,则暂时将该元数据更新到临时元数据文件中,等待与元数据文件中最后一个元数据序列号连续的元数据更新之后,节点从未更新的元数据中继续根据序列号向元数据文件中更新元数据。管理节点收到客户端文件存储完成的消息之后,根据性能评测结果得到的查询任务量除以最大公约数的值来决定节点内存中更新的元数据数量,以性能评测结果由大到小依序让节点在内存中更新对应数量的元数据。
图6、图7是本发明基于内存元数据的分布式文件管理方法第五种实施例的流程图和示意图。
S61、管理节点接收客户端请求;
S62、判断客户端发出请求的类型,若客户端发出读取请求,则进入S630,若客户端发出查询请求,则进入S640,若客户端发出存储请求,则进入S650;
以下为对客户端发出读取请求的响应:
S630、管理节点根据查询任务量分配结果分配各存储节点查询对应的文件名;
S631、存储节点得到查询结果并向其他所有节点发送结果并停止查询;
S632、各存储节点根据查询到的元数据信息找到文件块并发送给客户端;
S633、客户端对接收文件块解码获得原文件。
以下为对客户端发出查询请求的响应:
S640、管理节点分配节点进行查询;
S641、各存储节点根据读入的元数据信息获得查询文件块信息,并将查询文件块信息发送至管理节点;
S642、管理节点整合查询文件块信息为查询结果,并将查询结果返回给客户端。
基于分布式的元数据查询,每个节点在内存中读入了本身查询管理的元数据,管理节点接收到客户端的读取请求时,向各节点发送一个查询请求时,各个节点根据查询结果在各自读入内存的元数据中查询结果,各个节点读入内存中的元数据是按照性能大小由大到小排序依次读入其等同于查询任务量的元数据,因此各节点读入内存中的元数据各不相同。当任意一个节点查询到结果后立刻将查询结果返回给其他所有节点,其余节点接收到查询结果之后立刻停止查询。查询结果的元数据中保存有文件在各节点硬盘中的存储路径,在文件存储路径后加上分块编号同时也是节点编号之后,各节点迅速定位到文件块并发送给读取本文件的客户端,若节点未在硬盘中找到对应文件,因为存储繁忙导致文件块未从代收节点处接收,则节点在存储等待列表中查找结果,并通知代收节点将文件块发送给客户端。
以下为对客户端发出存储请求的响应:
S650、客户端对文件进行编码分块并发送存储请求;
S651、管理节点向各存储节点发送节点存储顺序列表与存储序列号;
S652、客户端根据节点存储顺序列表与序列号存储文件块;
S653、各节点接收文件块保存在相同的路径下;
S654、节点更新内存与磁盘中的元数据信息。
实施例
本实例中选取了五个节点来运行分布式文件系统,将五个节点连接在同一个局域网中,并分别命名为节点1,节点2,节点3,节点4,节点5。
实例中在系统中导入了10万条评测元数据,通过进行单机查询得到元数据查询位置与查询时间的对应值求出其构成的一次函数的斜率用以评测各节点在系统中查询的性能。性能比较之后n1’:n2’:n3’:n4’:n5’为90:70:32:31:28,同时分别给节点1,节点2,节点3,节点4,节点5依据性能编号为0,1,2,3,4,5。最初向系统中各个节点导入500000条元数据以及文件块,按照比例分配此时节点1读入内存中元数据个数为179282,节点2读入内存中元数据个数为139442,节点3个数为63745,节点4个数为62752,节点5个数为55776,还多出3个元数据,直接按照元数据更新的方式添加到节点1中,因此节点1最终读入内存中元数据个数为179285。
令一客户端1向各节点发送存储请求,此时系统中只有管理节点响应客户端的请求,发送此时存储的序列号500001,由于此时节点1并未处理任何存储请求,节点1在返回信息中添加顺序存储的消息。客户端收到消息之后,将文件test1编码分块之后得到文件块test1.0,test1.1,test1.2,test1.3,test1.4,按照分块的编号为文件块加上后缀名,同样根据编号将文件存储到对应节点的路径/file/test1.0存储到节点1中,/file/test1.1存储到节点2中,以此类推。使用另一客户端2发送文件test2的存储请求,此时test2文件得到的存储序列号便是500002,因为此时客户端1的文件test1.0正在节点1存储,此时管理节点即节点1以消息告知节点2以逆序即依次存储文件块从节点5到节点1。当两个客户端同时需要将test1.2和test2.2存储到节点3时就会产生冲突。此时节点3根据收到客户端存储文件块的消息先后决定存储哪个文件,而之后向节点3发起存储文件块消息的客户端会被节点3记录到等待列表中。当客户端1中test1文件的最后一个文件块存储完毕之后,即当最后一个文件块test1.4存储到节点5中完毕时,会向节点5通知本身文件块已经发送完毕。节点5根据序列号500001判断更新该元数据到内存中的节点为节点1,,随后节点5向节点1发消息告知其更新内存中元数据,节点1收到消息之后立刻在内存中加入该条元数据的信息。
客户端1想要读取文件test2,向管理节点发送读取请求,管理节点收到消息则向各节点发起查询请求,各节点收到消息之后,立即在当前保存在内存中的元数据中查询结果,此时节点1查询到test2文件的元数据得到存储路径/file/test2,之后立刻将查询结果发送给其余节点,在收到查询结果之后,每个节点仅需在路径之后加入自身保存的节点编号即可在硬盘中定位到目标文件块。各节点收到查询结果时若还在进行查询则会立刻关闭查询线程,并按照元数据在对应文件路径下将文件块发送给客户端1,客户端根据收到足够解码的数据块之后,拒绝接收接下来发送的文件块,并将收到的文件块解码生成原文件,从而实现了客户端1对文件test2的读取。
以下开展实验,证实通过将性能较差的电脑构建成一个分布式系统,利用本发明的基于内存元数据的分布式文件管理方法后整个系统的查询能力能够普遍强于性能较好的电脑。
节点1:
处理器:Intel(R)Core(TM)i3-3100M CPU@2.40GHZ 2.40GHZ
安装内存:4.00GB(3.06GB可用)
系统类型:32位操作系统
节点2:
处理器:Intel(R)Core(TM)2Duo CPU L7500@1.60GHZ 1.60GHZ
安装内存:2.50GB
系统类型:32位操作系统
节点3:
处理器:Intel(R)Core(TM)i5-5200U CPU@2.20GHZ 2.19GHZ
安装内存:4.00GB
系统类型:64位操作系统,基于x64的处理器
节点4:
处理器:Intel(R)Core(TM)i7-4710MQ CPU@2.50HZ 2.49HZ
安装内存:8.00GB(7.88GB可用)
系统类型:64位操作系统,基于x64的处理器
节点5:
处理器:Intel(R)Core(TM)Z Duo CPU P8600@2.40GHZ 790MHZ
安装内存:920MB
对比节点:处理器:Intel(R)Core(TM)i7-6700HQ CPU@2.60GHZ2.60GHZ
安装内存:16.0GB(15.8GB可用)
系统类型:64位操作系统
如图10,设置五个通过TCP协议传输数据的节点,本实验中分布式查询过程包括:节点一向其余节点发送待查询的字符串,查询消息发送完成后也开始在本地列表中查询结果,其余节点收到待查询字符串之后在本地列表中查询结果,如果查询到结果则向其余节点发送查询结果,反之则等待接收查询到结果的节点发送来的查询结果。
本底测试中各节点CPU与内存占用情况如下:
节点一:CPU占用率平均为:25%,内存占用率平均为:46%
节点二:CPU占用率平均为:75%,内存占用率平均为:7%
节点三:CPU占用率平均为:27%,内存占用率平均为:5%
节点四:CPU占用率平均为:18%,内存占用率平均为:19%
节点五:CPU占用率平均为:30%,内存占用率平均为:44%
对比节点:CPU占用率平均为:12%,内存占用率平均为:10%
实验过程如下:
在测试中,分别测试了两个节点,三个节点,四个节点以及五个节点之间分布式查询的时间。
准备过程:
用五个计算机建立一个局域网,每个参与测试的节点首先读入事先准备好的字符串列表,总数为500000个字符串,参与测试的每个节点读入的字符串列表各不相同,每个节点读入的字符串数量根据节点总数平均分配。这个列表之后用于查询字符串所在列表位置。
测试过程:
①设定一个节点一向其他节点发送查询信息,查询信息包括指令(一个整型数据)与待查询字符串。记录下节点一向其他节点发送查询信息的时间。
②每个收到查询信息的节点在本地查询待查询的字符串,查询方式为循环比对待查询字符串与本地列表中的字符串。在本地列表中查询到结果之后,记录下结果,记录下接收到查询信息的时间以及开始在本地列表中查询到在本地列表中查询到结果的时间。
③查询到结果的节点将记录下的结果发送给其余所有节点,其余不能在自己列表中查询到结果的节点,在收到查询到结果的节点通知的查询结果后会结束查询并记录下接收到查询结果的时间以及之前花费的时间,该过程进行五次,将得到的五份数据取平均值,然后根据这个平均值去掉异常值,再将剩下的数据再取平均值,将得到的结果作为最终的测量结果。
数据处理:
最后记录的时间为节点一得到查询结果的时间,时间组成部分为:
①节点一查询到结果:发送查询信息时间+本地列表查询时间+发送查询结果时间。
②节点一未查询到结果:发送查询信息时间+本地列表查询时间+等待查询结果时间+接收到查询结果时间。
因此可以根据实验结果得到是否通过将各性能低的计算机整合成分布式系统,其查询花费时间在数据集越大的情况下花费时间相较于性能高的电脑更少,相反,在数据集较小的情况下,查询时间与性能好的电脑单机查询相比花费更多。因此本实验可以证明可以在数据集大的时候采用将性能低的电脑组成分布式系统利用本发明的基于内存元数据的分布式文件管理方法,查询花费时间是否小于采用一个性能好的电脑进行单机查询。
以上介绍了一种基于内存元数据的分布式文件管理方法。本发明并不限定于以上实施例,任何未脱离本发明技术方案,即仅仅对其进行本领域普通技术人员所知悉的改进或变更,均属于本发明的保护范围之内。
Claims (8)
1.一种基于内存元数据的分布式文件管理方法,其特征在于,所述管理方法包括当客户端发送查询请求时,利用分布式系统中存储节点的内存实现元数据分布式查询的方法,所述查询方法包括如下步骤:
选择某一存储节点为管理节点;
对管理节点以外的存储节点进行查询性能评测,包括如下步骤:各存储节点从评测元数据文件中读入多条评测元数据放入内存中;通过对读入内存中评测元数据的多次依次顺序查询,得到元数据查询位置与查询时间的对应值;对每次获取的查询时间进行中值滤波处理,消除偏离因存储节点原因带来的时间测量误差;依据多次查询获取的查询位置和查询时间值构成以元数据查询位置为自变量,中值滤波处理后的查询时间的均值为因变量的一次函数,以一次函数的斜率作为某一存储节点的性能评测结果;
各存储节点将性能评测结果发送给管理节点;
管理节点根据性能评测结果利用任务分配算法对各存储节点进行查询任务量分配,包括如下步骤:设各存储节点查询任务量为未知数,令各存储节点的性能评测结果与该存储节点对应的查询任务量做乘积得到的值相等,同时令所有存储节点查询任务量的和与查询元数据总数相等,查询元数据总数为已知数,通过求解方程得到每个存储节点对应的查询任务量,达到查询任务分配的目的;
各存储节点根据分配查询的任务量将对应数量的元数据信息读入到内存中;
各存储节点根据读入的元数据信息获得查询文件块信息,并将查询文件块信息发送至管理节点;
管理节点整合查询文件块信息为查询结果,并将查询结果返回给客户端。
2.如权利要求1所述的基于内存元数据的分布式文件管理方法,其特征在于,所述管理方法还包括当客户端发送读取请求时,利用分布式系统中存储节点的内存实现元数据分布式读取的方法,所述读取方法包括如下步骤:
选择某一存储节点为管理节点;
对管理节点以外的存储节点进行查询性能评测;
各存储节点将性能评测结果提供给管理节点;
管理节点根据性能评测结果利用任务分配算法对各存储节点进行查询任务量分配;
管理节点根据查询任务量分配结果分配各存储节点查询对应的文件名;
存储节点得到查询结果并向其他所有节点发送结果并停止查询;
各存储节点根据查询到的元数据信息找到文件块并发送给客户端;
客户端对接受文件块解码获得原文件。
3.如权利要求1所述的基于内存元数据的分布式文件管理方法,其特征在于,所述管理方法还包括当客户端发送存储请求时,利用分布式系统中存储节点的内存实现元数据分布式存储的方法,所述存储方法包括如下步骤:
选择某一存储节点为管理节点;
客户端对文件进行编码分块并发送存储请求;
管理节点向各存储节点发送节点存储顺序列表与存储序列号;
若存储节点空闲,则接收请求存储的文件块,将文件块存储在相同的路径下,该存储节点更新内存中的元数据;
若存储节点正在接收其他客户端发送的数据时,则将存储请求放入存储等待列表,当待存储节点接收完当前数据后,则遍历存储等待列表,向提出存储请求的客户端请求文件块的传输,将文件块存储在相同的路径下,该存储节点更新内存中的元数据。
4.如权利要求1~3任一所述的基于内存元数据的分布式文件管理方法,其特征在于,所述内存元数据中保存着存储文件的文件名、文件在存储节点硬盘中的存储路径。
5.如权利要求1~3所述的基于内存元数据的分布式文件管理方法,其特征在于,若管理节点发生故障,则随机选择另一个存储节点作为管理节点,并通知其余存储节点更新管理节点信息,其余存储节点将性能评测结果发送给新的管理节点,并由新的管理节点依据任务分配算法计算和分配各存储节点的查询任务量。
6.如权利要求5所述的基于内存元数据的分布式文件管理方法,其特征在于,管理节点监听各在线存储节点的工作状态,若在线存储节点掉线,则管理节点记录其掉线期间未接收到的文件,并且令性能评测结果最好的存储节点负责代收掉线节点的文件,在掉线节点重新上线之后,管理节点发送掉线期间变动的文件列表,重新上线的节点到对应的代收节点请求文件的更新。
7.如权利要求6所述的基于内存元数据的分布式文件管理方法,其特征在于,当掉线节点为复数个时,则管理节点按照性能评测结果从大到小的顺序依次通知与掉线节点相同数量的存储节点代收相应掉线节点的文件。
8.如权利要求4所述的基于内存元数据的分布式文件管理方法,其特征在于,当进行文件并行存储时,不同存储节点依据接收到客户端存储请求的顺序不同会导致各存储节点元数据的更新不一致,则以性能评测结果由大到小依序让存储节点在内存中更新对应数量的元数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010143996.7A CN111367876B (zh) | 2020-03-04 | 2020-03-04 | 一种基于内存元数据的分布式文件管理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010143996.7A CN111367876B (zh) | 2020-03-04 | 2020-03-04 | 一种基于内存元数据的分布式文件管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111367876A CN111367876A (zh) | 2020-07-03 |
CN111367876B true CN111367876B (zh) | 2023-09-19 |
Family
ID=71206662
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010143996.7A Active CN111367876B (zh) | 2020-03-04 | 2020-03-04 | 一种基于内存元数据的分布式文件管理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111367876B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111858721B (zh) * | 2020-08-03 | 2023-07-21 | 南京大学 | 一种基于优先级编码的分布式计算方法 |
CN113468265A (zh) * | 2021-06-07 | 2021-10-01 | 上海玳鸽信息技术有限公司 | 基于区块链的医疗数据处理方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737061A (zh) * | 2011-04-14 | 2012-10-17 | 中兴通讯股份有限公司 | 分布式话单查询管理系统及方法 |
CN103916483A (zh) * | 2014-04-28 | 2014-07-09 | 中国科学院成都生物研究所 | 一种针对编码冗余存储系统的自适应数据存储与重构方法 |
CN105487929A (zh) * | 2015-11-19 | 2016-04-13 | 山东大学 | 一种集群渲染过程中镜头共享数据管理的方法 |
CN108268208A (zh) * | 2016-12-30 | 2018-07-10 | 清华大学 | 一种基于rdma的分布式内存文件系统 |
US10089187B1 (en) * | 2016-03-29 | 2018-10-02 | EMC IP Holding Company LLC | Scalable cloud backup |
CN110109889A (zh) * | 2019-05-09 | 2019-08-09 | 重庆大学 | 一种分布式内存文件管理系统 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050222979A1 (en) * | 2004-03-31 | 2005-10-06 | Gansha Wu | Querying method information |
CN104866497B (zh) * | 2014-02-24 | 2018-06-15 | 华为技术有限公司 | 分布式文件系统列式存储的元数据更新方法、装置、主机 |
-
2020
- 2020-03-04 CN CN202010143996.7A patent/CN111367876B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737061A (zh) * | 2011-04-14 | 2012-10-17 | 中兴通讯股份有限公司 | 分布式话单查询管理系统及方法 |
CN103916483A (zh) * | 2014-04-28 | 2014-07-09 | 中国科学院成都生物研究所 | 一种针对编码冗余存储系统的自适应数据存储与重构方法 |
CN105487929A (zh) * | 2015-11-19 | 2016-04-13 | 山东大学 | 一种集群渲染过程中镜头共享数据管理的方法 |
US10089187B1 (en) * | 2016-03-29 | 2018-10-02 | EMC IP Holding Company LLC | Scalable cloud backup |
CN108268208A (zh) * | 2016-12-30 | 2018-07-10 | 清华大学 | 一种基于rdma的分布式内存文件系统 |
CN110109889A (zh) * | 2019-05-09 | 2019-08-09 | 重庆大学 | 一种分布式内存文件管理系统 |
Non-Patent Citations (3)
Title |
---|
S. Anjanadevi ; D. Vijayakumar ; K.G. Srinivasagan.An efficient dynamic indexing and metadata based storage in cloud environment.2014 International Conference on Recent Trends in Information Technology.2014,全文. * |
Vicente A. B. Sanchez ; Wonbae Kim ; Youngmoon Eom ; Kibeom Jin ; Moohyeon Nam.EclipseMR: Distributed and Parallel Task Processing with Consistent Hashing.2017 IEEE International Conference on Cluster Computing (CLUSTER).2017,全文. * |
周国安 ; 李强 ; 陈新 ; 胡旭 ; .海量小文件元数据的分布式存储与检索.空军预警学院学报.2014,28(第06期),全文 . * |
Also Published As
Publication number | Publication date |
---|---|
CN111367876A (zh) | 2020-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11687555B2 (en) | Conditional master election in distributed databases | |
US7885928B2 (en) | Decentralized adaptive management of distributed resource replicas in a peer-to-peer network based on QoS | |
US6928459B1 (en) | Plurality of file systems using weighted allocation to allocate space on one or more storage devices | |
CN104769919B (zh) | 对复制型数据库的访问进行负载平衡 | |
US20140108681A1 (en) | System and method for providing a flexible buffer management interface in a distributed data grid | |
US7457835B2 (en) | Movement of data in a distributed database system to a storage location closest to a center of activity for the data | |
US9128899B1 (en) | Predictive failover planning | |
CN111367876B (zh) | 一种基于内存元数据的分布式文件管理方法 | |
US8930501B2 (en) | Distributed data storage system and method | |
GB2529403A (en) | A Method of operating a shared nothing cluster system | |
CN110825704B (zh) | 一种读数据方法、写数据方法及服务器 | |
CN107948229B (zh) | 分布式存储的方法、装置及系统 | |
US20120323861A1 (en) | Deduplicated caching of queries for green it management | |
CN117331755A (zh) | 一种向量数据库主从备份和分片策略的高可用系统及方法 | |
US11093493B1 (en) | Dynamically switching between query and scan for optimizing table reads | |
US10594620B1 (en) | Bit vector analysis for resource placement in a distributed system | |
US9015371B1 (en) | Method to discover multiple paths to disk devices cluster wide | |
WO2018116389A1 (en) | Method and distributed storage system for aggregating statistics | |
US20220414577A1 (en) | System and method for performance-centric workload placement in a hybrid cloud environment | |
US9727457B2 (en) | Minimizing latency due to garbage collection in a distributed system | |
Wei et al. | Dynamic replication management for object-based storage system | |
Soltani et al. | A LOAD BALANCING ALGORITHM BASED ON REPLICATION AND MOVEMENT OF DATA ITEMS FOR DYNAMIC STRUCTURED P2P SYSTEMS | |
CN117215499B (zh) | 精简卷的数据访问方法、装置、产品及多控存储系统 | |
CN118093596B (zh) | 一种面向异构存储的冷热数据管理方法和系统 | |
Sharfuddin et al. | Frequent block access pattern-based replication algorithm for improving the performance of cloud storage systems |
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 |