一种基于混合编码的hadoop数据分发方法

文档序号:10660971阅读:704来源:国知局
一种基于混合编码的hadoop数据分发方法
【专利摘要】本发明公开了一种基于混合编码的hadoop数据分发方法。该方法包括,改变传统的hadoop系统中的三副本存储方式,结合RAID1和RAID5技术对数据进行分发存储,当用户将文件写入集群,文件被划分为多个block存储在集群中。根据RAID1的概念,每个block会生成一个副本,设定一个stripe长度将block进行存储,一个stripe中的block及其副本分别放置在不同机架下的节点中,根据RAID5将一个stripe中的block进行异或产生一个校验块,校验块同样也遵循RAID1的方式进行存储。在节点损坏导致block丢失时,可以根据副本或校验块对文件进行恢复,保证文件存储的可靠性。本发明是基于RAID1+5方式存储,故有较好的容错性能,另外,使用RAID1+5的混合模式相较于传统hadoop的三副本存储方式节省了存储空间。
【专利说明】
一种基于混合编码的hadoop数据分发方法
技术领域
[0001 ]本发明属于分布式系统领域,更具体地,涉及一种基于混合编码的hadoop数据分发方法。
【背景技术】
[0002]随着计算机技术和网络应用的普及和发展,日益增加的用户数量,使得数据存储量呈现爆炸性增长。如何更可靠且高效的存储大数据,给数据存储系统提出了考验。
[0003]传统的网络存储系统采用集中的存储服务器存放所有数据,存储服务器成为系统性能的瓶颈,也是可靠性和安全性的焦点,不能满足大规模存储应用的需要。分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,将数据分散存储在多台独立的设备上,它不但提高了系统的可靠性、可用性和存取效率,还易于扩展。
[0004]Hadoop是一个由Apache基金会所开发的分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序,这样就可以充分利用集群的威力进行高速运算和存储。Hadoop的框架最核心的设计就是:HDFS和MapReduce ADFS为海量的数据提供了存储,而MapReduce为海量的数据提供了计算。
[0005]Hadoop分布式文件系统(HDFS)被设计成适合运行在通用硬件上的分布式文件系统,它和现有的分布式文件系统有很多共同点,同时,它和其他的分布式文件系统的区别也是很明显的C=HDFS是一个高度容错性的系统,适合部署在廉价的机器上;同时,HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用;还有就是,HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。对外部客户机而言,HDFS就像一个传统的分级文件系统,用户可以创建、删除、移动或重命名文件等等。但是HDFS的架构是基于一组特定的节点构建的,这是由它自身的特点决定的。这些节点包括一个NameNode,它在HDFS内部提供元数据服务;多个DataNode,它为HDFS提供存储块。在hdf s集群中,有机架感知功能,即可以将几个datanode部署在一个机架上,这样的优势是相同机架上的网络带宽远大于不同机架的网络带宽。为了防止数据丢失,hdfs提供了三副本冗余机制,即每一个块会存放为三份,一二份存放在同一个机架下,第三个副本存放在另外一个机架下。
[0006]但这样的三副本冗余机制显然还存在着一个严重的问题,三副本的冗余存储会占用大量的空间。

【发明内容】

[0007]针对现有技术的以上缺陷或改进需求,本发明提供了一种基于混合编码的hadoop数据分发方法,其目的在于使用RAID1+5的策略来进行数据的分发存储。RAIDl保证了在丢失一份副本内的block时可以快速进行恢复,RAID5保证了在两份副本都丢失block时可以进行解码恢复,而RAID1+5结合起来,显著减少了原来三副本情况下所占用的存储空间,由此解决降低系统空间占用,保证存储系统可靠性的技术问题。
[0008]为实现上述目的,本发明提供了一种基于混合编码的hadoop数据分发方法,包括:当hadoop集群被启动,client请求向集群写入数据,文件被划分为block,以stripe的方式根据RAID1+5方式进行存储;当集群中某个节点中某个block的一个副本或两个副本丢失时,可以根据RAID5对block进行恢复;当集群中某个stripe中丢失了多个block的一个副本时,可以根据RAIDl对block进行恢复;集群中发生损坏或丢失的block在恢复后会保持RAID1+5的存储方式。
[0009]本发明的一个实施例中,所述步骤(I)具体包括如下子步骤:
[0010](1.1)当文件被写入时,文件会被分为block的形式存储到集群中,根据RAIDl的概念,每个block会有一个副本;
[0011 ] (1.2)设置一个stripe长度M,block根据M进行划分,当一个文件的block不足一个M时,将下一个文件的block写入相同stripe中;
[0012](I.3)根据RAID5的概念,同一个stripe的block会生成一个校验block,它们会存放在同一个:rack下;
[0013](1.4)根据RAIDl的概念,同一个stripe的block副本和对应的校验block的副本会存放在另一个rack下。
[0014]本发明的一个实施例中,所述步骤(2)具体包括如下子步骤:
[0015](2.1)当client端对某个文件进行读取,文件丢失了一个block时,利用RAID5生成的parity块对block进行恢复;
[0016](2.2)当文件丢失了同一个block的两个副本时,分别在rack内利用RAID5生成的parity块对block进行恢复。
[0017]本发明的一个实施例中,所述步骤(3)具体包括:
[0018](3.1)当client端对某个文件进行读取,文件丢失了多个block的一个副本时,利用RAIDl存储的另外一个副本对其进行恢复;
[0019](3.2)当同一个stripe中的两个block同时损坏两个副本时,无法进行恢复。
[0020]本发明的一个实施例中,所述步骤(4)具体包括当block发生错误进行恢复后,同一个stripe的block和产生的校验block存放在同一个机架下,该stripe对应的副本和校验block的副本存放在另一个机架下。
[0021 ]本发明的一个实施例中,所述步骤(I)中的M取值为10。
[0022]总体而言,通过本发明所构思的以上技术方案与现有技术相比,由于本发明通过设置二副本和校验块,在系统中发现block丢失或损坏时可以良好的进行多种方式的快速恢复,不会被机架间的网络带宽所限制,同时本发明与目前hdfs中所设置的三副本存储方式相比,可以良好的节省存储空间,能够取得保证系统可靠性、降低硬件需求的有益效果。
【附图说明】
[0023]图1是本发明实施例中hdfs结构图;
[0024]图2是本发明实施例中数据写入过程图;
[0025]图3是本发明实施例中数据存储及编码图;
[0026]图4是本发明实施例中的数据恢复图。
【具体实施方式】
[0027]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0028]如图1所示,本发明实施例中hdfs结构图具体描述如下:
[0029]Hdf s架构主要由Namenode和Datanode两部分构成,由于hdf s的机架感知特性,一个Rack下会包含多个Datanode,一个集群中会设置多个Rack。
[0030]如图2所示,本发明实施例中数据写入过程图具体描述如下:
[0031]Client端将文件写入hdfs流程:client写入数据时,先将数据复制到本地,写满一个block后,向Namenode申请2个Datanode的地址,将block写入其中的一个block,写满后,再由该Datanode传送到下一个Datanode,当前block写入完毕后,再进行下一个block的传送,直到文件全部写入完毕。同时,在Namenode中会记录block存储在哪个Datanode节点的元数据,以便文件的读取。
[0032]如图3所示,本发明实施例中数据存储及编码图具体描述如下:
[0033]数据以block的形式写入Datanode中,当block的数量满足一个stripe长度后,会重新选择两个rack,确保一个stripe上的block存储在同一个rack下,其副本存储在另一个rack下。根据raid5的概念,一个stripe长度的block会生成一个parity块,parity块及副本也会存储在源block相同的两个rack下。
[0034]如图4所示,本发明实施例中数据恢复图具体描述如下:
[0035]当读取一个文件而文件丢失了block时,假如丢失了一个block,可以根据Raidl产生的副本进行恢复,也可以根据raid5产生的parity块进行解码来恢复;假如丢失了一个副本的2个block,可以根据raid5产生的parity块进行解码来恢复;假如丢失了一个副本的多个block,可以根据raidl产生的副本进行恢复。
[0036]本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
【主权项】
1.一种基于混合编码的hadoop数据分发方法,其特征在于,包括如下步骤: (1)当hadoop集群被启动,客户端client请求向集群写入数据,文件被划分为块block,以条带stripe的方式根据RAID1+5方式进行存储; (2)当集群中某个节点中某个block的一个副本或两个副本丢失时,根据RAID5对block进行恢复; (3)当集群中某个stripe中丢失了多个block的一个副本时,根据RAIDl对block进行恢复; (4)集群中发生损坏或丢失的block在恢复后会保持RAID1+5的存储方式。2.如权利要求1所述的对象存储系统中一种基于混合编码的hadoop数据分发方法,其特征在于,所述步骤(I)具体包括如下子步骤: (1.1)当文件被写入时,文件会被分为block的形式存储到集群中,根据RAIDl的概念,每个block会有一个副本; (1.2)设置一个stripe长度M,block根据M进行划分,当一个文件的block不足一个M时,将下一个文件的block写入相同stripe中; (1.3)根据RAID5的概念,同一个stripe的block会生成一个校验block,它们会存放在同一个rack下; (1.4)根据RAIDl的概念,同一个stripe的block副本和对应的校验block的副本会存放在另一个rack下。3.如权利要求1或2所述的对象存储系统中一种基于混合编码的hadoop数据分发方法,其特征在于,所述步骤(2)具体包括如下子步骤: (2.1)当client端对某个文件进行读取,文件丢失了一个block时,利用RAID5生成的parity块对block进行恢复; (2.2)当文件丢失了同一个block的两个副本时,分别在rack内利用RAID5生成的parity块对block进行恢复。4.如权利要求1或2所述的对象存储系统中一种基于混合编码的hadoop数据分发方法,其特征在于,所述步骤(3)具体包括: (3.1)当client端对某个文件进行读取,文件丢失了多个block的一个副本时,利用RAIDl存储的另外一个副本对其进行恢复; (3.2)当同一个stripe中的两个block同时损坏两个副本时,无法进行恢复。5.如权利要求1或2所述的对象存储系统中一种基于混合编码的hadoop数据分发方法,其特征在于,所述步骤(4)具体包括当block发生错误进行恢复后,同一个stripe的block和产生的校验block存放在同一个机架下,该stripe对应的副本和校验block的副本存放在另一个机架下。6.如权利要求1或2所述的对象存储系统中一种基于混合编码的hadoop数据分发方法,其特征在于,所述步骤(I)中的M取值为1。
【文档编号】H04L29/08GK106027638SQ201610330144
【公开日】2016年10月12日
【申请日】2016年5月18日
【发明人】王芳, 文可, 胡燏翀, 张晓阳, 常拴霞, 肖仁智, 吴锋, 李宗玮
【申请人】华中科技大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1