一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于X码的分布式存储系统容错方法及系统与流程

2022-06-02 12:43:31 来源:中国专利 TAG:

一种基于x码的分布式存储系统容错方法及系统
技术领域
1.本发明涉及大数据处理技术领域,尤其涉及一种基于x码的分布式存储系统容错方法及系统。


背景技术:

2.面对海量数据存储,目前大多采用集中式存储和分布式存储。堆叠的集中式存储需要专用磁盘阵列,采用磁盘冗余阵列(raid)技术,常用纠删码中的阵列码来降低存储开销,导致其必须采用性能强劲的专用磁盘,虽然存储效率高效,但价格非常昂贵面对海量的数据,不能满足需求。基于纠删码的分布式存储可作为海量数据存储的解决方案,采用成熟的网络技术,将处于各个地区的设备连接在一起,利用分布式存储系统,使得设备之间存储的数据具有一致性、安全性和共享性,常用的分布式存储系统有:hdfs,azure、gfs等。其存储策略除了三副本技术以外,还有纠删码技术,如rs码、lrc和hitchhiker码。具有mds性质的rs码是大数据存储中常用的纠删码,其参数取值任意,然而其高昂的修复成本(k倍)和基于有限域运算的计算成本,是目前应用中的主要瓶颈。lrc是以存储资源换带宽资源的一种折中的方法,它保证在能容忍的可靠性下,新增了局部校验节点,小范围数据的丢失只需下载r倍的数据(r《k),因而有效的降低了修复带宽。hitchhiker码是将原有的rs码分成了两个子条带,每一个条带均采用rs编码,其唯一的不同点在于其将前一个子条带的系统数据存放在后一个子条带的校验节点上,从而在保证mds性质下降低了数据节点的修复带宽。
3.传统的三副本策略虽能保证数据的可用性,但是其又引入了高修复代价的问题,面对海量的数据,仍然显得无能为力。目前分布式存储系统中的纠删码可以解决大部分的冷数据备份问题,对于温数据和热数据而言,需要编码算法的进一步突破。现有技术不适用于温、热数据的原因包括:频繁的修改、删除需要同步的更新采用编码后的冗余节点的数据,增加了额外的计算量和更新带宽;节点丢失后进行修复需要k倍的数据,带来了倍数级的修复成本。


技术实现要素:

4.为解决现有技术的不足,本发明提出一种基于x码的分布式存储系统容错方法及系统,通过在分布式存储系统内应用纠删码x码作为编码策略,以异或运算替代有限域乘法运算,使计算复杂度显著下降,同时减小了频繁地修改和删除数据时必须同步更新的校验数据范围和计算成本,使修复失效节点需要的帮助数据(修复带宽)尽可能低,同时不需要额外增加存储成本,修复带宽和容错能力与现有技术的hitchhiker码、rs码基本一致。从整体上,有效降低了修复更新所需的时间成本和计算成本。
5.为实现以上目的,本发明所采用的技术方案包括:
6.一种基于x码的分布式存储系统容错方法,其特征在于,包括:
7.s1、获取分布式存储数据,将分布式存储数据转换为阵列式的待编码数据,该待编码数据即对应为系统节点数据;
8.s2、按照x码编码算法对待编码数据进行编码,获得对应的校验码,该校验码即对应为校验节点数据;
9.s3、将校验码与待编码数据组合为编码数据,将编码数据依照分布式存储架构进行分布式存储;
10.s4、当需要对失效节点的数据进行恢复时,按照x码解码算法对编码数据(即对应帮助节点的数据)进行解码,获得所需的恢复数据。
11.进一步地,所述步骤s1包括:
12.对分布式存储数据依照预设节点长度进行逻辑分割,所得各分割系统节点以阵列式组合为待编码数据。
13.进一步地,所述步骤s2包括:
14.分别对各分割系统节点按照x码编码算法进行编码,获得对应各分割系统节点的校验码。
15.进一步地,所述步骤s3包括:
16.分别组合各分割系统节点的校验码,并将分割系统节点和校验码依照其原有阵列式组合为编码数据进行分布式存储。
17.进一步地,所述x码编码算法包括:
18.对分割系统节点中的各码元依照式1计算对应x码的奇码元和偶码元;
[0019][0020]
其中,对应分割系统节点中标记为c
i,j
的码元,c
n-2,i
为对应x码的奇码元,c
n-1,i
为对应x码的偶码元。
[0021]
进一步地,所述步骤s4包括:
[0022]
判断需要恢复数据所在的分割系统节点;
[0023]
使用该分割系统节点对应的校验码进行解码恢复缺失数据。
[0024]
本发明还涉及一种基于x码的分布式存储系统容错系统,其特征在于,包括:
[0025]
数据预处理模块,用于将分布式存储数据转换为阵列式的待编码数据;
[0026]
编码模块,用于按照x码编码算法对待编码数据进行编码,获得对应的校验码;
[0027]
分布式保存模块,用于将编码数据依照分布式存储架构进行分布式存储;
[0028]
解码模块,用于按照x码解码算法对编码数据进行解码,获得所需的恢复数据。
[0029]
本发明还涉及一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法。
[0030]
本发明还涉及一种电子设备,其特征在于,包括处理器和存储器;
[0031]
所述存储器,用于存储分割系统节点和编码数据;
[0032]
所述处理器,用于通过调用分割系统节点和编码数据,执行上述的方法。
[0033]
本发明的有益效果为:
[0034]
采用本发明所述基于x码的分布式存储系统容错方法及系统,通过在分布式存储系统内应用纠删码x码作为编码策略,以异或运算替代有限域乘法运算,使计算复杂度显著
下降,减小了频繁地修改和删除数据时必须的同步更新的校验数据范围和计算成本,使修复失效节点需要的帮助数据(修复带宽)尽可能低,同时不需要额外增加存储成本,修复带宽和容错能力与现有技术的hitchhiker码、rs码基本一致。从整体上,有效降低了修复更新所需的时间成本和计算成本。
附图说明
[0035]
图1为本发明基于x码的分布式存储系统容错方法流程示意图。
[0036]
图2为本发明基于x码的分布式存储系统容错系统结构示意图。
具体实施方式
[0037]
为了更清楚的理解本发明的内容,将结合附图和实施例详细说明。
[0038]
x码是具有mds性质的阵列码,其具有最优更新复杂度,采用高计算效率的异或算法,运用于集中式存储raid5/6中,未在分布式存储中运用。然而分布式存储系统中的纠删码策略因其高更新复杂度和高修复代价,主要用于冷数据备份,而热数据和温数据的备份仍然选用三副本策略。因此将x码运用到分布式存储中,可改变目前的现状。达到有效备份温数据和冷数据的目的。
[0039]
目前x码仅用于集中式的存储环境,未用于分布式存储环境。归其主要原因为两种存储系统的差异性,所以x码不能直接用于分布式存储。
[0040]
在集中式存储中,x码可以选取合适的素域对堆叠的服务器做磁盘冗余阵列(raid)。因服务器在同一个区域内,且性能强劲。一般丢失的节点量临近编码的容错能力后,才进行修复。在分布式存储中,节点分布较远,性能较低,系统对数据丢失的容忍能力不如集中式存储。因而其修复策略为单节点修复,即只要有一个节点丢失,必须马上启动修复策略。综上,集中式存储大多为多节点修复,而在分布式存储中均为单节点修复。
[0041]
x码为垂直型的阵列码,在集中式存储中,其本身就是一个阵列的形式,所以直接将x码嵌入到阵列中即可。而分布式存储不同,它是采用分布式存储系统将分散的设备进行统一的管理。它不是阵列形式,而是一个线性形式,所以目前其运用的纠删码均为线性码。
[0042]
本发明第一方面涉及一种步骤流程如图1所示的基于x码的分布式存储系统容错方法,包括:
[0043]
s1、获取分布式存储数据,将分布式存储数据转换为阵列式的待编码数据,特别是对分布式存储数据依照预设节点长度进行逻辑分割,所得各分割系统节点以阵列式组合为待编码数据。
[0044]
s2、按照x码编码算法对待编码数据进行编码,获得对应的校验码,特别是分别对各分割系统节点按照x码编码算法进行编码,获得对应各分割系统节点的校验码。
[0045]
s3、将校验码与待编码数据组合为编码数据,将编码数据依照分布式存储架构进行分布式存储,特别是分别组合各分割系统节点的校验码,并将分割系统节点和校验码依照其原有阵列式组合为编码数据进行分布式存储。
[0046]
对应分割系统节点中标记为ci,j的码元,依照式1计算对应x码的奇码元和偶码元:
[0047][0048]
其中,c
n-2,i
为对应x码的奇码元,c
n-1,i
为对应x码的偶码元。从几何的角度看,校验值分别为斜率为1和-1的对角线上元素的异或和。根据以上规则,可以得出结论如下:阵列中第n-2行表示是斜率为1的对角线上的码元的异或和。其能唯一确定的第n-2行的第i列奇偶值,它校验的信息位满足的关系公式。同样地,对于第n-1行,它表示的是斜率为-1的对角线上的信息码元的异或和,其中第i列校验值的信息位满足关系公式。对于x码的编码过程,设定满足x码mds性质的n,进行编码,支持正对角校验和反对角校验。
[0049]
s4、当需要对数据进行恢复时,按照x码解码算法对编码数据(帮助节点的数据)进行解码,获得所需的恢复数据。优选的,根据分割系统节点,判断需要恢复数据所在的分割系统节点,使用该分割系统节点对应的校验码进行解码恢复缺失数据。
[0050]
假设删除的两列是第i列和第j列(0≤i≤j≤(n-1))。因为每条对角线只经过n-1列,如果一个对角线只经过某一列的最后一行,那么这一列中的任何符号都不会在这条对角线上。这就决定了校验符号的位置只包含了两个删除列中的一个符号,这个符号就可以用这条对角线上的校验和已知信息符号恢复出来。从这个符号开始,就可以找到一条的译码链。其他三条(j

i》1)或者一条(j-i=1)也可以找到,所有删除的符号都可以被恢复出来。当斜率为1时,假设第i列中第x行是所在对角线上唯一的未知符号,这条对角线经过了第n-1行的第j列和第n-2行的第y列。这三个点(x,i),(n-1,j),(n-2,y)都在斜率为1的直线上。
[0051]
就可以得出如下式2。
[0052][0053]
由于1≤j-i≤n-1且0≤j-1≤n-2,可以解出x和y如下式3。
[0054][0055]
本发明另一方面还涉及一种基于x码的分布式存储系统容错系统,其结构如图2所示,包括:
[0056]
数据预处理模块,用于将分布式存储数据转换为阵列式的待编码数据;
[0057]
编码模块,用于按照x码编码算法对待编码数据(帮主节点数据)进行编码,获得对应的校验码;
[0058]
分布式保存模块,用于将编码数据依照分布式存储架构进行分布式存储;
[0059]
解码模块,用于按照x码解码算法对编码数据进行解码,获得所需的恢复数据。
[0060]
通过使用该系统,能够执行上述的运算处理方法并实现对应的技术效果。
[0061]
以hdfs-raid为例,它的每个节点每次上送1m的数据给编码器作为分割系统节点,编码器根据上送的数据,按照x码算法进行编码。
[0062]
hdfs-raid是hdfs文件系统的一个扩展,它可让hdfs具有纠删码策略的容错能力。在raid.xml的指出了当前文件目录采用了哪种编码,hadoop会自动的对这个文件夹采用此
编码进行编解码,以到达备份的效果。
[0063]
raid模块实现纠删码时采用了分层的思想,将编解码的实现分为独立的三层,包括:
[0064]
算法配置层,codec类完成对json的处理封装,该json对象位于容错编码的文件hdfs-site.xml中,里面包含了json的所有的key。codec类的核心方法是initializecodecs()和createerasurecode()。initializecodecs()方法在codec类初始化时解析配置文件中所有的编码的信息,将每一种算法的配置信息封装成一个codec对象,并放入同一个list容器供其它层使用。createerasurecode()方法创建codec对象所对应编码的编解码,实现类的一个对象,即erasurecode的子类对象;它利用了java的反射机制,根据配置项中的erasurecodeclass变量提供的类名称生成该类的一个实例。可见,要在raid模块中配置一种新的纠删码算法,只需在配置文件中按照算法配置项编写算法的属性并实现其对应算法即可。
[0065]
算法实现层:erasuredcode主要解决策略的实际编解码。值得注意的是,虽然说每一块的大小不是1m(实际为64m),但是每次进行编解码的时候,处理的是1m的数据。
[0066]
算法应用层:encoder类和decoder类根据所选编码策略的json要求,算出系统块,校验块的偏移,将偏移后的数据交给erasuredcode,使用erasuredcode里面的编解码方法对每个节点进行编解码。
[0067]
如果要在raid模块中加入新的纠删码算法,只需要在配置文件hdfs-site.xml中按照配置项进行配置,并继承erasuredcode类,encoder类和decoder类。
[0068]
xcode类继承erasuredcode类,实现erasuredcode类中的抽象方法:init()、encode()、decode()、paritysize()、stripesize()和一般方法:encodebulk()、decodebulk()。encode()和decode()给出的参数是一组,相当于一行。因此,对于x码来说,数据的编解码只需要实现encodebulk()和decodebulk()。
[0069]
encodebulk(),参数byte[][]inputs表示系统节点的数据,高维是系统节点的个数,低维是每个节点中的这一次处理的大小;byte[][]outputs表示的是校验节点,高位时校验节点的个数,低维是这些系统节点生成的校验的个数。同二进制文件的编码一样,将数据按照m_stripe_size-2的大小按行分组。对每一个组进行编码,将编码的结果放入到outputs中。最后不够m_stripe_size-2大小的就直接补上0。因为校验每一组只有两行,所以最终校验块的大小不足64m,为了满足每块64m的大小,每一个inputs大小的数据编码完成后补上0,让它和inputs的大小一样。decodebulk(),参数byte[][]readbufs为所有的帮助节点,包括校验节点和数据节点,校验在前数据在后,包含了错误的块的节点,但是里面没有数据;byte[][]writebufs是需要写入的数据,即错误位置修复后的数据。int[]erasedlocations给出节点丢失所在的位置,这里只做丢失一个节点,所以只需要取erasedlocations[0]的位置。取出readbufs的校验节点和数据节点,同二维数组的方式将错误的位置恢复,写入到writebufs中。
[0070]
进行配置,修改/home/yb/work/hadoopusc/conf中的raid.xml、hdfs-site.xml、hdfs-site.xml.template和/home/yb/work/hadoopusc/build/contrib/raid/classes中的raid-default.xml文件,在hdfs-site.xml、hdfs-site.xml.template、raid-default.xml中添加json键值对,在raid.xml中添加策略和执行该策略的文件目录,设为x
码。将写好的xcode类、xencoder类、xdecoder类上传的hadoop中的raid模块中去,修改decoder类中有关编码策略的代码。为了方便测试,将大小为304mb的文件上传到hadoop中的yb目录下,启动hadoop后,会自动生成校验文件放在/raid_x目录下面。
[0071]
本发明的实施例还提供能够实现上述实施例中的方法中全部步骤的一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中的方法的全部步骤。
[0072]
本发明的实施例还提供一种用于执行上述方法的电子设备,作为该方法的实现装置,所述电子设备至少具备有处理器和存储器,特别是该存储器上存储有执行方法所需的数据和相关的计算机程序,例如分割系统节点和编码数据等,并通过由处理器调用存储器中的数据、程序执行实现方法的全部步骤,并获得对应的技术效果。
[0073]
优选的,该电子设备可以包含有总线架构,总线可以包括任意数量的互联的总线和桥,总线将包括由一个或多个处理器和存储器的各种电路链接在一起。总线还可以将诸如外围设备、稳压器和功率管理电路等之类的各种其他电路链接在一起,这些都是本领域所公知的,因此,本文不再对其进行进一步描述。总线接口在总线和接收器和发送器之间提供接口。接收器和发送器可以是同一个元件,即收发机,提供用于在传输介质上与各种其他系统通信的单元。处理器负责管理总线和通常的处理,而存储器可以被用于存储处理器在执行操作时所使用的数据。
[0074]
额外的,所述电子设备还可以进一步包括通信模块、输入单元、音频处理器、显示器、电源等部件。其所采用的处理器(或称为控制器、操作控件)可以包括微处理器或其他处理器装置和/或逻辑装置,该处理器接收输入并控制电子设备的各个部件的操作;存储器可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种,可储存上述有关的数据信息,此外还可存储执行有关信息的程序,并且处理器可执行该存储器存储的该程序,以实现信息存储或处理等;输入单元用于向处理器提供输入,例如可以为按键或触摸输入装置;电源用于向电子设备提供电力;显示器用于进行图像和文字等显示对象的显示,例如可为lcd显示器。通信模块即为经由天线发送和接收信号的发送机/接收机。通信模块(发送机/接收机)耦合到处理器,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)还经由音频处理器耦合到扬声器和麦克风,以经由扬声器提供音频输出,并接收来自麦克风的音频输入,从而实现通常的电信功能。音频处理器可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器还耦合到中央处理器,从而使得可以通过麦克风能够在本机上录音,且使得可以通过扬声器来播放本机上存储的声音。
[0075]
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0076]
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流
程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的系统。
[0077]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令系统的制造品,该指令系统实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0078]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
[0079]
以上所述仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换等都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求书的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献