一种基于简单再生码的自适应编码存储容错方法

文档序号:10580178阅读:366来源:国知局
一种基于简单再生码的自适应编码存储容错方法
【专利摘要】本发明公开一种基于简单再生码的自适应编码存储容错方法,其包含以下四个主要步骤:1)存入HDFS中的文件,以三副本方式存储;2)一个时间周期后,文件转为简单再生码快速码编码;3)当文件访问减少后,文件转为简单再生码紧凑码编码;4)随着运行中文件的动态属性,可能发生步骤2)和步骤3)中文件编码状态相互转化的情况。本发明通过在分布式文件系统HDFS中同时使用简单再生码紧凑码和快速码的两种编码形态,来达到存储开销和修复代价的折中,将基于简单再生码的自适应编码方法引入到HDFS中,结合文件状态和系统状态,建立了自适应编码机制,提高分布式存储系统的整体存储效率,降低修复代价。
【专利说明】
一种基于简单再生码的自适应编码存储容错方法
技术领域
[0001]本发明涉及分布式存储领域,特别涉及一种基于简单再生码的自适应编码存储容错方法。
【背景技术】
[0002]由于使用纠删码可以在低存储开销的情况下达到高可靠性,大型的分布式存储系统都开始转向使用纠删码。但大多数线上运行的存储系统只使用唯一一种纠删码,系统中实际使用的纠删码可能会从减少修复带宽开销或减少存储开销等方面进行优化。比如说,RS编码是广泛使用的一类纠删码,已经使用在了谷歌的ColossusFS、FaceBook的HDFS-Raid等许多存储系统中。Co1ssusFS中使用的RS码的存储开销为1.5x,在修复一个数据块时需要6次磁盘读和网络传输。而在HDFS-Raid中使用的RS码的存储开销为1.4x,但修复一个数据块需读取其他10个块。另外常用的一类局部修复码也是类似存储开销和修复代价的折中。
[0003]优化纠删码是为了解决系统运行时的故障修复问题。FaceBook的数据仓库和其他HDFS生产系统中所有故障情况超过98%都是单个块的故障,1.87%是两个块丢失,另外少于0.05%是三个块或更多块的错误。所以很多关于存储系统中纠删码的研究都集中在降低单个块失效时的修复开销上。
[0004]同时,数据访问不均衡是Hadoop工作流的一个普遍特性。分布式存储系统中,大部分容量的数据都是冷数据,即只被访问过很少的次数。同样的,大部分访问都集中在一小部分数据上,这部分数据被称作热数据。由于编码理论本身的限制,低冗余和低修复代价是不能同时达到的。若仅对存储效率进行优化,那么会增加修复时的开销,这会导致对于热数据的修复开销增加。而大部分的数据访问都集中在热数据上,修复开销增加势必会影响整个系统的读写性能。同理,若仅对修复开销优化,那么会使纠删码的存储效率降低。由于大部分数据都是冷数据,不会经常被访问,这些冷数据存储效率的降低将会需要增加很多存储空间,导致整个系统存储开销的迅速增加。无论哪一方面,在实际生产系统中都是不能接受的。
[0005]根据上面的观察,对于热数据来说,由于访问比较频繁,即使存储开销大一点,只要保证可用性即可,也就是修复开销要小,修复要很快完成。所以热数据比较适合在保证可靠性的情况下存储效率不高但修复代价比较小的编码方法。而对于冷数据来说,由于并不是很频繁地被访问,由数据不可用而导致退化读的可能性较小。由于修复并不是很频繁发生,即使修复开销稍大一点,对于系统的整体性能影响并不大。而只要存储效率高,对于庞大的数据量就可以节省很多存储空间。所以在保证数据可靠性的前提下,冷数据比较适合存储效率高,修复开销较大的编码方法。

【发明内容】

[0006]发明目的:为了克服现有技术中存在的不足,本发明提供一种提高分布式存储系统整体存储效率,并降低修复代价减少修复开销的基于简单再生码的自适应编码存储容错方法。
[0007]技术方案:为解决上述技术问题,本发明提供了一种基于简单再生码的自适应编码存储容错方法,包括如下步骤:
[0008]步骤一:在分布式文件系统HDFS中设定数据文件的访问频度为A,系统整体的存储开销为B,第一个时间周期为Tl,第二个时间周期为T2;时间周期可根据实际情况而设定,可设为一天、一周或更长。访问频度的阈值A可根据时间周期的长短而设定,若时间周期为一天,则可设访问频度阈值为10。
[0009]步骤二:先将数据文件存入分布式文件系统HDFS,然后将数据文件以64MB为单位分为若干个数据块,对每一个数据块备份三份并存入不同的存储节点中;
[0010]步骤三:第一个时间周期Tl后,HDFS中的自适应编码模块将数据文件由步骤二中的副本方式存储转化为编码方式存储,所述编码方式为简单再生码快速码方式存储;
[0011 ]步骤四:第二个时间周期T2后,自适应编码模块检测在该周期内该数据文件的访问频度和系统整体的存储开销;
[0012]步骤五:第二个时间周期T2内访问频度超过预设访问频度A的数据文件标记为热数据,低于预设访问频度A的文件标记为冷数据,当数据文件为冷数据时,将该数据文件由简单再生码快速码编码转化为简单再生码紧凑码编码,该过程成为升码;当文件被较为频繁访问时,文件被简单再生码快速码编码,快速码对于退化读和对于单个存储节点的修复开销较小;当文件不被频繁访问时,文件被简单再生码紧凑码编码,紧凑码对于退化读和对于单个存储节点的修复开销较大,但访问频度低的文件不常发生退化读情况。该机制加入了对于文件本身差异性的考虑,存储系统中的绝大部分数据为冷数据,并不会频繁被访问,较少部分数据为热数据,较为频繁被访问,这种划分符合80-20法则,也符合计算机系统中的局部性原理。当文件在某一周期的访问频度与文件冷热属性不符时,则会触发编码形态间的转化;当系统整体存储开销超过预设阈值时,会触发快速码编码文件到紧凑码编码的转化。
[0013]步骤六:当第二个时间周期T2内系统整体存储开销高于预设系统整体的存储开销B时,将HDFS中所有被简单再生码快速码编码的数据文件的访问频度进行排序,根据数据文件的访问频度从低到高依次将数据文件由简单再生码快速编码转化为简单再生码紧凑编码,直到系统整体存储开销低于预设系统整体的存储开销B为止;
[0014]步骤七:当数据文件的访问频度高于预设访问频度A时,将由简单再生码紧凑码编码转化为简单再生码快速码编码,该过程成为降码。
[0015]本发明通过在分布式文件系统HDFS中同时使用简单再生码的两种编码形态,来达到存储开销和修复代价的折中,本发明将基于简单再生码的自适应编码方法引入到HDFS中,结合文件状态和系统状态,建立了自适应编码机制,提高分布式存储系统的整体存储效率,降低修复代价;本发明中的自适应编码机制可以扩展到任何编码方法,通用性和扩展性强,适用于任何使用编码作为容错策略的分布式文件系统HDFS。
[0016]简单再生码的两种形态:一种形态为低修复开销,对应为简单再生码快速码,这种形态主要为了应付时常发生的退化读和文件重构;另一种形态为低存储开销,对应为简单再生码紧凑码,这种形态主要为了提高后端存储时的存储效率。简单再生码的两种形态分别适用于冷、热数据文件,当文件热度或系统状态发生改变时,文件对应的编码形态也随之改变,从而在系统运行时达到动态的平衡。
[0017]简单再生码两种编码形态相互转化的方法:由快速码转化为紧凑码的过程称为升码,升码操作会将一个数据文件由快速码编码转化为紧凑码编码,这样可以减少校验数据的大小,降低文件的存储开销,升码操作并不需要读取原数据文件,只需要对校验数据进行转化即可;由紧凑码转化为快速码的过程称为降码,降码操作将一个文件由紧凑编码表示转化为快速编码表示,降码需读取原始文件和校验数据,但只会改变校验数据。
[0018]进一步的,所述步骤三中简单再生码快速码是修复代价较小的简单再生码,从副本方式转化为(n,k,f)简单再生码快速码的具体步骤如下:
[0019]步骤1:将原数据文件切分成f组,并分别对这f组内每个子文件进行(n,k)RS编码后获得若干个编码块;
[0020]步骤2:将每组中的下标相同的编码块异或校验,产生一组校验块;
[0021 ]步骤3:将步骤I中获得的编码块和步骤2中获得的校验块依次存放在η个存储节点中。
[0022]进一步的,所述步骤五中升码的具体步骤为:将两组编码块聚合成一组,其中编码块中的数据块和RS校验码块不变,两个校验块行所对应下标会进行异或运算并合并成一行。
[0023]进一步的,所述异或运算合并操作为从本地磁盘中读出两个校验块进行异或,再写入磁盘中。
[0024]进一步的,所述步骤七中降码的具体步骤为:将一组编码拆分为两组编码,其中编码块中的每一行的数据块和RS校验块不变,之后每产生一个校验块就需从相邻f个节点读取对应下标的块,再异或产生对应下标的校验块,紧凑码的全局校验块行与第一组快速码的全局校验块行异或产生第二组快速码的异或校验块行,两个全局校验块直接在该存储节点的内存中运算,最后将运算结果保存在该存储节点上。
[0025]进一步的,所述系统存储开销阈值B介于简单再生码快速码存储开销和紧凑码存储开销之间,且接近简单再生码紧凑码的存储开销。快速码和紧凑码的存储开销在设定编码参数时既已确定,可由编码参数计算而来。
[0026]本发明与现有技术相比,具有如下有益效果:
[0027]1、本发明通过在分布式文件系统HDFS中同时使用简单再生码的两种编码形态即快速码和紧凑码,来达到存储开销和修复代价的折中。当文件被较为频繁访问时,文件被简单再生码快速码编码,快速码对于退化读和对于单个存储节点的修复开销较小;当文件不被频繁访问时,文件被简单再生码紧凑码编码,紧凑码对于退化读和对于单个存储节点的修复开销较大,但访问频度低的文件不常发生退化读情况。
[0028]2、本发明将基于简单再生码的自适应编码方法引入到HDFS中,结合文件状态和系统状态,建立了自适应编码机制,提高分布式存储系统的整体存储效率,降低修复代价。本发明中的自适应编码机制可以扩展到任何编码方法,通用性和扩展性强,适用于任何使用编码作为容错策略的分布式文件系统HDFS。
【附图说明】
[0029]图1为本发明的总体框架流程图;
[0030]图2为适用本发明的HDFS系统架构图;
[0031 ]图3为简单再生码快速码构造示意图;
[0032]图4为简单再生码紧凑码构造示意图;
[0033]图5为简单再生码升码过程示意图;
[0034]图6为简单再生码降码过程示意图;
[0035]图7为简单再生码快速码修复单个块示意图;
[0036]图8为简单再生码紧凑码修复单个块示意图。
【具体实施方式】
[0037]下面结合附图对本发明作更进一步的说明。
[0038]本发明基于HDFS(HadoopDistributed File System,Hadoop分布式文件系统)介绍基于简单再生码的自适应编码存储容错方法。本发明包括如下步骤:
[0039]步骤一:在分布式文件系统HDFS中设定数据文件的访问频度为10,系统整体的存储开销为B,第一个时间周期为24h,第二个时间周期为24h;时间周期可根据实际情况而设定,可设为一天、一周或更长。访问频度的阈值A可根据时间周期的长短而设定,若时间周期为一天,则可设访问频度阈值为1。
[0040]步骤二:在文件写入的最初阶段,文件稍后被访问的概率非常大,故首先将其以三副本方式存储,先对文件以64MB为单位进行切块,每一个数据块保存三个副本,并根据HDFS的数据分发策略将这三个块依次发送到不同的数据节点上,这样做可以对较为频繁的读访问进行负载均衡。
[0041]步骤三:在本实施例中设定时间周期为24h,当一个时间周期后,自适应编码模块会根据当前时间与文件创建时间的差值来判断是否将文件从三副本方式转化为简单再生码快速码编码方式,简单再生码快速码的构造如图3所示,图中所示为SRC(n = 5,k = 3,f =2),(n,k,f)SRC编码后的数据存放在η个存储节点中,每个存储节点将存放原始文件数据大小(f+l)/fk的数据,并且可以容忍n-k个数据节点发生故障。假设原文件为F,(n,k,f)SRC将原文件平均分为f个子文件Fi,F2,…,Ff,并且将这f个子文件分别进行(n,k)RS编码生成η组编码块,然后将具有相同下标的编码块进行异或运算生成η个校验块,再以下标循环的方式依次将编码块和校验块存储在η个节点之中。
[0042]步骤四:第二个时间周期24h后,自适应编码模块会记录每个文件被访问的次数,并存储在文件的元数据中,同时也会记录系统整体的存储开销;
[0043]步骤五:第二个时间周期T2内我们设定10为区分冷热数据的阈值,若某文件为简单再生码快速码编码且在上一个时间周期内被访问次数小于10,则标记该文件为冷数据,需将其由简单再生码快速码编码转化为简单再生码紧凑码编码,该过程也称为升码。简单再生码紧凑码的构造如图4所示,前四行每一行有三个数据块,两个RS校验块,同一行中的RS校验块是由数据块进行RS编码产生的,第五行为下标相同的块异或产生的校验块,虽然简单再生码是采用循环错位放置方式,但还是数据块与数据块异或产生校验块,RS校验块与RS校验块异或产生全局校验块。简单再生码升码过程如图5所示,也是将两组编码块聚合成一组,数据块和RS校验码块不变,两个校验块行对应下标会进行异或运算合并成一行。由于图示中每一列都存放在同一个存储节点上,故这个合并操作不需要在网络上传输数据,只需从本地磁盘中读出两个校验块进行异或,再写入磁盘里即可。当文件被较为频繁访问时,文件被简单再生码快速码编码,快速码对于退化读和对于单个存储节点的修复开销较小;当文件不被频繁访问时,文件被简单再生码紧凑码编码,紧凑码对于退化读和对于单个存储节点的修复开销较大,但访问频度低的文件不常发生退化读情况。
[0044]步骤六:当第二个时间周期T2内系统整体存储开销高于预设系统整体的存储开销B时,将HDFS中所有被简单再生码快速码编码的数据文件的访问频度进行排序,根据数据文件的访问频度从低到高依次将数据文件由简单再生码快速编码转化为简单再生码紧凑编码,直到系统整体存储开销低于预设系统整体的存储开销B为止;
[0045]步骤七:若某文件的访问频度发生变化,即冷数据被频繁访问或热数据不再频繁被访问,则会发生升码和降码过程,升码过程如步骤五所述,文件由简单再生码紧凑码编码转化为快速码编码的过程称为降码,由于快速码编码参数f = 2,每2行组合成新的快速码,由下标相同的对应块重新产生新的校验块。降码过程如图6所示,每一行的数据块和RS校验块不会发生变化。每产生一个校验块就需从相邻f个节点读取对应下标的块,故每一行的数据块和校验块都需在网络上传输,再异或产生对应下标的校验块。降码比升码实现过程复杂,所需要的网络带宽开销也更大。在降码的过程中,紧凑码的全局校验块行可以与第一组快速码的全局校验块行异或直接产生第二组快速码的异或校验块行。由于同一列的块都在同一个存储节点上,因此两个全局校验块直接在该存储节点的内存中运算即可,并同时将运算结果保存在该存储节点上。这一优化使第二组快速码的数据块和校验块都不需要在网络上传输,节省了一部分网络带宽开销。在系统运行过程中,被简单再生码快速码编码和紧凑码编码的文件都有可能发生退化读情况,但被快速码编码的文件发生退化读的概率要比被紧凑码编码的文件高很多。对于单个块故障,快速码的修复过程如图7所示,从相邻的f个节点上依次读取下标相同的块,进行异或运算即可恢复出原故障块。紧凑码对单个块的修复过程如图8所示。紧凑码修复过程依然需连接f个节点,但需从这f个节点中读取2f-l个下标相同的块,加上从自身节点上读取一个下标相同的块,所以总共需要2f次磁盘I/O。然后对这2f个块进行异或即可恢复出故障块。对于某一个存储节点发生故障的情况,快速码依然可以通过同下标的异或运算依次恢复出该节点上的数据块和校验块。但紧凑码在同一节点上存放有两个下标相同的数据块,所以不能通过异或运算进行恢复,只能通过对应行的RS编码解码运算恢复出行丢失块,再由下标相同的块异或产生校验块。因此无论单个数据块还是单个存储节点的修复,紧凑码的修复开销都比快速码大很多。对于SRC(5,3,2),快速码的退化读修复代价是2个块,而紧凑码是4个块。
[0046]图2是加入了自适应编码机制的HDFS系统架构图。自适应编码模块维持着编码后数据的自身状态和系统状态,管理着数据由状态变化而引起的状态转化。该模块是在纠删码的接口上实现的,并且同时兼容多种编码方式。名字节点中记录着系统状态,而文件自身的状态是保存在元数据中的,HDFS系统中文件的元数据也保存在名字节点中。文件状态保存被编码后文件的大小、最后修改时间、访问次数和编码状态。文件大小和最后修改时间也是HDFS会维持的属性,自适应编码模块会使用这些属性来计算出总的存储开销和文件的生命周期。自适应编码模块同时记录一个文件被客户端的访问总次数。
[0047]本发明方法通过使用基于简单再生码的自适应编码机制,加入了对存储系统中文件本身的差异性的考虑,在HDFS中对存储效率和修复代价进行了优化,使系统整体呈现较高的存储效率和较小的修复代价,本发明方法设计简单,通用性和扩展性强,对系统的整体性能产生了极大的提升。
[0048]以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【主权项】
1.一种基于简单再生码的自适应编码存储容错方法,其特征在于,包括如下步骤: 步骤一:在分布式文件系统HDFS中设定数据文件的访问频度为A,系统整体的存储开销为B,第一个时间周期为Tl,第二个时间周期为T2; 步骤二:先将数据文件存入分布式文件系统HDFS,然后将数据文件以64MB为单位分为若干个数据块,对每一个数据块备份三份并存入不同的存储节点中; 步骤三:第一个时间周期Tl后,HDFS中的自适应编码模块将数据文件由步骤二中的副本方式存储转化为编码方式存储,所述编码方式为简单再生码快速码方式存储; 步骤四:第二个时间周期T2后,自适应编码模块检测在该周期内该数据文件的访问频度和系统整体的存储开销; 步骤五:第二个时间周期T2内访问频度超过预设访问频度A的数据文件标记为热数据,低于预设访问频度A的文件标记为冷数据,当数据文件为冷数据时,将该数据文件由简单再生码快速码编码转化为简单再生码紧凑码编码,该过程成为升码; 步骤六:当第二个时间周期T2内系统整体存储开销高于预设系统整体的存储开销B时,将HDFS中所有被简单再生码快速码编码的数据文件的访问频度进行排序,根据数据文件的访问频度从低到高依次将数据文件由简单再生码快速编码转化为简单再生码紧凑编码,直到系统整体存储开销低于预设系统整体的存储开销B为止; 步骤七:当数据文件的访问频度高于预设访问频度A时,将由简单再生码紧凑码编码转化为简单再生码快速码编码,该过程成为降码。2.根据权利要求1所述的一种基于简单再生码的自适应编码存储容错方法,其特征在于:所述步骤三中简单再生码快速码是修复代价较小的简单再生码,从副本方式转化为(n,k,f)简单再生码快速码的具体步骤如下: 步骤1:将原数据文件切分成f组,并分别对这f组内每个子文件进行(n,k)RS编码后获得若干个编码块; 步骤2:将每组中的下标相同的编码块异或校验,产生一组校验块; 步骤3:将步骤I中获得的编码块和步骤2中获得的校验块依次存放在η个存储节点中。3.根据权利要求1或2所述的一种基于简单再生码的自适应编码存储容错方法,其特征在于:所述步骤五中升码的具体步骤为:将两组编码块聚合成一组,其中编码块中的数据块和RS校验码块不变,两个校验块行所对应下标会进行异或运算并合并成一行。4.根据权利要求3所述的一种基于简单再生码的自适应编码存储容错方法,其特征在于:所述异或运算合并操作为从本地磁盘中读出两个校验块进行异或,再写入磁盘中。5.根据权利要求1所述的一种基于简单再生码的自适应编码存储容错方法,其特征在于:所述步骤七中降码的具体步骤为:将一组编码拆分为两组编码,其中编码块中的每一行的数据块和RS校验块不变,之后每产生一个校验块就需从相邻f个节点读取对应下标的块,再异或产生对应下标的校验块,紧凑码的全局校验块行与第一组快速码的全局校验块行异或产生第二组快速码的异或校验块行,两个全局校验块直接在该存储节点的内存中运算,最后将运算结果保存在该存储节点上。6.根据权利要求1所述的一种基于简单再生码的自适应编码存储容错方法,其特征在于:所述系统存储开销阈值B介于简单再生码快速码存储开销和紧凑码存储开销之间,且接近简单再生码紧凑码的存储开销。
【文档编号】G06F17/30GK105956128SQ201610302217
【公开日】2016年9月21日
【申请日】2016年5月9日
【发明人】朱定亚, 叶保留, 陆桑璐
【申请人】南京大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1