发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的文件存储方法、装置及分布式文件***。
根据本发明一方面,提供一种基于HDFS的文件存储方法,响应于来自客户端的文件存储请求将文件分成多个数据块并存储到HDFS的数据节点的存储器中,所述方法包括:
剩余空间获取步骤,获取存储器的剩余存储空间;
数据节点选择步骤,为所述多个数据块选择数据节点;
存储器选择步骤,从被选择的数据节点的多个存储器D1,D2,…Dn为每个数据块选择存储器来存储所述数据块;
其中所述存储器选择步骤包括:按照基于存储器的剩余存储空间的预置规则,为每个数据块选择存储器作为存储该数据块的目标存储器。
可选地,所述基于存储器的剩余存储空间的预置规则包括,基于概率调度法为每个数据块选择目标存储器,其中每个存储器被选择为目标存储器的概率为每个存储器的剩余存储空间占所述多个存储器的总剩余存储空间的比例。
可选地,所述基于存储器的剩余存储空间的预置规则包括,在每个存储器的剩余存储空间大于特定阈值时,基于轮转调度法为每个数据块依次地选择目标存储器;在任一存储器的剩余存储空间等于或小于特定阈值时,基于概率调度法为每个数据块选择目标存储器,其中每个存储器被选择为目标存储器的概率为每个存储器的剩余存储空间占所述多个存储器的总剩余存储空间的比例。
可选地,所述概率调度法包括:根据存储器D
i的剩余存储空间C
i为每个存储器分配管理区间,其中,当i=1时,D
i的管理区间为[0,C
1-1];且当i=2,…n时,D
i的管理区间为
对要存储的一数据块,取随机数x并对总剩余存储空间取模以得到y,即
如y落入为存储器D
i的管理区间,则为要存储的所述数据块选择存储器D
i作为目标存储器。
可选地,其中x为随机的自然数。
可选地,其中所述轮转调度法包括:为要存储的数据块选择存储器Di作为目标存储器,其中i=(i+1)mod n。
可选地,其中所述特定阈值为该存储器存储空间的30%。
根据本发明的另一方面,提供一种用于HDFS的文件存储控制装置,响应于来自客户端装置的文件存储请求将文件分成多个数据块并存储到HDFS的数据节点装置的存储器中,其中所述文件存储控制装置包括
剩余空间获取元件,适于获取存储器的剩余存储空间;
数据节点选择元件,适于为所述多个数据块选择数据节点装置;
存储器选择元件,适于从被选择的数据节点装置的多个存储器D1,D2,…Dn中为每个数据块选择存储器来存储所述数据块;
其中所述存储器选择元件还适于按照基于存储器的剩余存储空间的预置规则,为每个数据块选择存储器作为存储该数据块的目标存储器。
可选地,其中所述基于存储器的剩余存储空间的预置规则包括,基于概率调度法为每个数据块选择目标存储器,其中每个存储器被选择为目标存储器的概率为每个存储器的剩余存储空间占所述多个存储器的总剩余存储空间的比例。
可选地,其中所述基于存储器的剩余存储空间的预置规则包括,在每个存储器D1,D2,…,或Dn的剩余存储空间大于特定阈值时,基于轮转调度法为每个数据块依次地选择目标存储器;在任一存储器D1,D2,…,或Dn的剩余存储空间等于或小于特定阈值时,基于概率调度法为每个数据块选择目标存储器,其中每个存储器被选择为目标存储器的概率为每个存储器的剩余存储空间占所述多个存储器的总剩余存储空间的比例。
可选地,其中所述概率调度法包括:根据存储器D
i的剩余存储空间C
i为每个存储器分配管理区间,其中,当i=1时,D
i的管理区间为[0,C
1-1];且当i=2,…n时,D
i的管理区间为
对要存储的一数据块,取随机数x并对总剩余存储空间取模以得到y,即
如y落入为存储器Di的管理区间,则为要存储的所述数据块选择存储器D
i作为目标存储器。
可选地,其中x为随机的自然数。
可选地,其中所述轮转调度法包括:为要存储的数据块选择存储器Di作为目标存储器,其中i=(i+1)mod n。
可选地,其中所述特定阈值为该存储器存储空间的30%。
根据本发明的又一方面,提供一种Hadoop分布式文件***,包括如前所述的文件存储控制装置、以及数据节点装置和客户端装置,所述文件存储控制装置响应于来自客户端装置的文件存储请求将文件分成多个数据块并存储到数据节点装置包含的存储器中。
通过本发明所述的文件存储方法和装置,基于存储器的剩余存储空间来为数据块选择目标存储器,其中每个存储器被选择为目标存储器的概率为每个存储器的剩余存储空间占所述多个存储器的总剩余存储空间的比例。由于考虑了存储器容量,尽量减小了各个存储器利用率的差异,优化了节点的负载,从而提升了存储与服务质量。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
HDFS响应于来自客户端的文件存储请求,将请求存储的文件分成多个数据块,然后存储到HDFS的数据节点下的多个存储器中。HDFS的数据存储包含两个层次,第一层次是选择数据节点,第二层次是从选择出来的数据节点选择具体的存储器D1,D2,…Dn用于数据块存储。本发明致力于第二层次的改进和优化。
图3示出了根据本发明的文件存储方法的流程图。根据本实施例,获取HDFS的各个存储器的剩余存储空间(步骤101);各个存储器的剩余存储空间可由HDFS的名称节点进行管理。然后,为所述多个数据块选择数据节点(步骤102)。在本实施例中,步骤101,102的编号并不严格限制所述两步骤的先后顺序;进一步地,在先执行步骤102的情况下,步骤101的获取存储器的剩余存储空间也不限于获取HDFS中所有存储器的剩余存储空间,也可以根据需要仅获取被选择数据节点下的各个存储器的剩余存储空间。
接下来,按照基于存储器的剩余存储空间的预置规则,从被选择的数据节点下的多个存储器D1,D2,…Dn为每个数据块选择存储器来存储所述数据块(步骤103)。其中,所述预置规则包括,基于概率调度法为每个数据块选择目标存储器,其中每个存储器被选择为目标存储器的概率为每个存储器的剩余存储空间占所述多个存储器的总剩余存储空间的比例。
下面详细介绍本发明的概率调度法,其中待存储的数据块可能被分配到所述数据节点下的任一存储器。
首先,为各个存储器分配一管理区间。根据存储器D
i的剩余存储空间C
i为每个存储器分配管理区间,其中,当i=1时,D
i的管理区间为[0,C
1-1];且当i=2,…n时,D
i的管理区间为
然后,对待存储的数据块1,取随机数x并对总剩余存储空间取模以得到y,即其中,x为随机的自然数;
接下来,如y落入为存储器Di的管理区间,则为待存储的数据块1选择存储器Di作为目标存储器。
在本实施例中,被选择的数据节点下有3个(即,n=3)存储器(磁盘1,磁盘2和磁盘3),磁盘1的剩余存储空间C1=100G,磁盘2的剩余存储空间C2=20G,磁盘3的剩余存储空间C3=80G,则磁盘1的管理区间D1为[0,99],磁盘2的管理区间D2为[100,119],磁盘3的管理区间D3为[120,199];
待存储的数据块1对应的y为[0,199]范围内的一随机数;
如果y落入了区间[0,99]内,则待存储的数据块1将被存储到磁盘1;如果y落入了区间[100,119],则数据块1将被存储到磁盘2;如果y落入了区间[120,199],则数据块1将被存储到磁盘3。
由于y是一个随机数,由此数据块1被存入一磁盘的概率与该磁盘的剩余存储空间有关,即,存储器Di被选择来存入数据块的几率是
如图4所示,在本实施例中,磁盘1的剩余存储空间占总剩余存储空间的比例为50%,则数据块1被存入磁盘1的概率为50%;磁盘2的剩余存储空间占总剩余存储空间的比例为10%,则数据块1被存入磁盘2的概率为10%;磁盘3的剩余存储空间占总剩余存储空间的比例为40%,则数据块1被存入磁盘3的概率为40%。
同理,与数据块1一样,待存储的数据块2,3等被存入一磁盘的概率也与该磁盘的剩余存储空间有关;磁盘剩余存储空间大,被选择的几率越大,剩余存储空间小,则被选择的几率小。
本实施例以数据节点下有3个存储器进行了描述;显然,数据节点下存储器的数量并不限于3个,可以是更多。
本实施例列出了概率调度的具体算法,但本领域技术人员都应明了,还有其他算法能实现上述概率调度的目的,即存储器被选择来存入数据块的几率等于该存储器剩余存储空间占总剩余存储空间的比例。只要能够实现上述目的的具体算法,都在本发明所要保护的范围之内。
通过概率调度法,剩余存储空间较大的存储器会有较大的几率被选择来存储数据,反之剩余存储空间较小的存储器被选择来存储数据的几率也较小;由此优化了存储器的负载,实现了负载均衡。
图5示出了根据本发明另一实施例的文件存储方法的存储器选择流程图,在存储***处于不同负载状态时采取不同的调度算法来为数据块分配存储器。
首先,比较数据节点下的n个存储器D1,D2,…Dn剩余存储空间占原存储空间的比例是否超过特定阈值,例如30%(当然,也可以根据实际情况设定其他阈值,例如20%,40%等)。如果每个存储器的所述比例都大于特定阈值30%,说明每个存储器剩余存储空间较大,整个存储***处于低负载状态,此时直接采用轮转调度法,为每个数据块选择目标存储器。
轮转调度法包括:为待存储的数据块选择存储器Di作为目标存储器,其中i=(i+1)mod n。由此,待存储的数据块将被依次分配到所述数据节点下的存储器中。
如图6所示,被选择的数据节点下有3个(即,n=3)存储器(磁盘1,磁盘2和磁盘3),数据块被依次存入磁盘:数据块1被存入磁盘1中,数据块2被存入磁盘2中,数据块3被存入磁盘3中,数据块4被存入磁盘1中,数据块5被存入磁盘2中。
在整个存储***处于低负载状况时,采用轮转调度法为数据块分配存储器,无需考虑存储器容量,节约了***计算资源。
另一方面,如果任一存储器的剩余存储空间等于或小于特定阈值30%时,说明有的存储器剩余存储空间较小,整个存储***处于高负载状态,则基于概率调度法为每个数据块选择目标存储器。概率调度法在图3所述实施例中已有详细介绍,这里不再赘述。
根据本实施,通过比较剩余存储空间是否超过特定阈值,从而在存储***处于低负载和高负载的不同状况下,采用不同的调度法来为数据块分配存储器。在低负载状况下,采用轮转调度法,由于无需考虑存储器容量,以较少的***计算资源实现了各数据分配;在高负载状况下,采用概率调度法,尽量较少了各存储器的利用率差异,提高了存储器的负载均衡,由此提升了存储和服务质量。
图7示出了本发明的文件存储控制装置的示意图。根据本实施例,文件存储控制装置包括剩余空间获取元件701,获取存储器的剩余存储空间;数据节点选择元件702,为所述多个数据块选择数据节点装置;和存储器选择元件703,按照基于存储器的剩余存储空间的预置规则,为每个数据块选择存储器D1,D2,…Dn作为存储该数据块的目标存储器。
存储器选择元件的预置规则在图3,5所述实施例中已经详细介绍,这里不再赘述。
图8示出了根据本发明的Hadoop分布式文件***的示意图,包括如图7实施例所述的文件存储控制装置801,数据节点装置802和客户端装置803;数据节点装置下包含有多个用于存储数据的存储器,客户端装置包含了向分布式文件***存储或获取文件的应用程序。根据本实施例,响应于来自客户端装置的文件存储请求,文件存储控制装置将文件分成多个数据块并存储到数据节点装置所包含的存储器中。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例文件存储控制装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。