CN107632994B - 一种基于hdfs文件系统的可靠性增强方法和系统 - Google Patents
一种基于hdfs文件系统的可靠性增强方法和系统 Download PDFInfo
- Publication number
- CN107632994B CN107632994B CN201610573042.3A CN201610573042A CN107632994B CN 107632994 B CN107632994 B CN 107632994B CN 201610573042 A CN201610573042 A CN 201610573042A CN 107632994 B CN107632994 B CN 107632994B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- block
- copy
- data block
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于HDFS文件系统的可靠性增强方法和系统,所述方法包括:在HDFS集群前增加一个缓冲代理,缓冲代理将上载数据生成多个缓冲块,并且将多个缓冲块按位做XOR编码生成X数据块,缓冲代理将包含X数据块的所有缓存块申请位置信息;基于位置信息,验证消亡任一缓存块对应的所有数据节点,确认满足X副本恢复条件后,将数据副本上传到数据节点,记录数据块的绑定信息。该方案完全不影响HDFS的读取性能,原有的副本数性能毫无变化,完全不影响HDFS对于分布式计算的增益,与原有的副本数机制毫无降低。兼容性、一致性、可扩展性能极佳,除了冗余部分,原有部分完全一致。
Description
技术领域
本发明涉及计算机数据处理技术,更具体地,涉及一种基于HDFS文件系统的可靠性增强方法和系统。
背景技术
Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是目前主流大数据分析架构Hadoop和Spark所使用的海量文件的数据存储文件系统。HDFS是一个高度容错性的系统,被设计用来部署在低廉的(low-cost)硬件上。而且HDFS可以提供高吞吐量(high throughput)来访问应用程序的数据,适合有着超大数据集(large data set)的应用程序。另外,HDFS放宽了POSIX的要求,从而可以实现流的形式访问文件系统中的数据。
HDFS通过NameNode存储MetaData数据,通过DataNode存储Block数据;MetaData数据描述了文件的属性及对应Block数据的映射关系。Block数据是大文件被切割为64MB的数据片,这些数据以三副本的形式散落在各个DataNode之上。NameNode的主要是实现查询功能,DataNode的主要是进行存储功能。
图1示出了现有HDFS情况下Client提交文件到HDFS的流程,首先Client请求a文件所需的空间,NameNode返回a文件的存放位置(BlockID,NameNode位置);然后Client上传1个副本到一个DataNode上,DataNode自行将其他副本内部复制;完成存储的Block返回NameNode,NameNode进行记录MetaData数据;然后重复请求和记录过程,直到文件a完成上传。
图2示出了现有HDFS存储文件的结构示意图,如图2所示,client有2个文件需要上传到HDFS上,向NameNode请求A.txt(156MB)的存储位置;NameNode返回切割成3块(Block),返回第一个Block块BLK1存储到dnB上;Client上传A.txt的第一个64MB的Block,BLK1到DataNode B;DataNode B将Blk1的完全相同的副本复制到DataNode A、DataNode C上;NameNode根据DataNode A、B、C反馈的写入情况,记录MetaData值,/usr/a.txt=blk1dnA,dnB,dnC…;继续下一个Block直至结束A.txt,重复切割到写入记录的过程;继续请求下一个文件位置B.txt,重复上述过程。
可以知道,计算机数量达到一定量级,任何时候都有计算机故障的可能,比如单机可靠度99.99%,那么1000台计算机可靠度就是0.99991000=90.5%,HDFS三副本的方案就是确保数据不丢失的重要手段。但是,对于数据价值极为重要的数据,如涉及金融、账户和密码等数据,如采用四副本或raid手段可以有效的增加数据可靠性,但是存储量又会成倍的增加,造成浪费。
发明内容
本发明提供一种克服上述问题或者至少部分地解决上述问题的一种基于HDFS文件系统的可靠性增强方法和系统。
本发明提供一种基于HDFS文件系统的可靠性增强方法,所述方法包括:在HDFS集群前增加一个缓冲代理,缓冲代理将上载数据生成多个缓冲块,并且将多个缓冲块按位做XOR编码生成X数据块,缓冲代理将包含X数据块的所有缓存块申请位置信息;基于位置信息,验证消亡任一缓存块对应的所有数据节点,确认满足X副本恢复条件后,将数据副本上传到数据节点,记录数据块的绑定信息。
根据本申请的另一方面,提供一种基于HDFS文件系统的可靠性增强系统,在HDFS集群前部署一个缓冲代理,所述缓冲代理用于:
将上载数据生成多个缓冲块,并且将多个缓冲块按位做XOR编码生成X数据块,将包含X数据块的所有缓存块申请位置信息;
基于位置信息验证消亡任一缓存块对应的所有数据节点,仍能恢复所有数据后,将数据副本上传到数据节点,记录数据块的绑定信息。
本发明实现了一种基于HDFS文件系统的可靠性增强方法和系统,该方法通过在上传HDFS前增加N(n>=5)个Block的缓存机制,通过XOR编码,增加1个Block数据量的冗余,通过仅增加1/N的数据冗余量,达到多1个副本数的数据安全性能。并且该方法完全不影响HDFS的读取性能,原有的副本数性能毫无变化。完全不影响HDFS对于分布式计算的增益,与原有的副本数机制毫无降低。兼容性、一致性、可扩展性能极佳,除了冗余部分,原有部分完全一致。如果想提高冗余可靠度,可以直接在原有存储数据的基础上直接进行升级,无需对已经存储的数据进行删改。
附图说明
图1为现有技术中的Clint提交文件到HDFS的流程图;
图2为现有技术中的HDFS存储示例的示意图;
图3为根据本申请实施例的HDFS系统存储方法的流程图;
图4为根据本申请实施例的HDFS系统存储示例的示意图;
图5为根据本申请实施例的HDFS系统存储方法的验证示意图;
图6为根据本申请实施例的HDFS系统存储示例的验证示意图;
图7为根据本申请实施例的数据恢复方法的流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
总的来说,本发明的一个实施例提供一种基于HDFS文件系统的可靠性增强方法,该方法是通过在HDFS之前增加一个缓冲代理(Buffer Proxy)来进行存储数据的缓存和代理提交,缓冲代理将上载数据块生成多个缓冲块,并且将所有缓冲块按位做XOR编码生成X块,缓冲代理将包含X块的所有数据申请位置信息,验证消亡任一块对应的所有的数据节点,仍可以恢复所有数据后,将数据副本上传到数据节点。
其中,总的来说,Buffer Proxy用于进行数据的缓存和代理提交,Buffer Proxy通过联合N(>=5)个Block块进行XOR编码,生成1个X块;Buffer Proxy将一组数据一起申请位置信息,并判断是否满足副本恢复条件;Buffer Proxy记录Block的绑定关系。
具体地,在Client和HDFS集群之间增加一个Buffer Proxy的上载代理,其功能包括:将上载的数据块生成N个Block的缓存;一旦缓存数达到N,则将所有块按位做XOR编码生成X块;Buffer Proxy将所有数据一起申请位置信息;Buffer Proxy判断是满足副本恢复条件——消亡任一个Blk对应的所有的DataNode,仍能保全缓存内所有数据,X代表消亡的Blk。
图3为根据本申请实施例的HDFS系统存储方法的流程图,如图3所示,该方法包括,步骤1,Client将正常提交给NameNode的内容提交给Buffer Proxy,Buffer Proxy模拟NameNode的格式,要求Client将数据提交至自己,并返回及提交成功的响应;步骤2,BufferProxy缓存内容至N个数据时,将所有已缓存块按位做XOR编码生成X,Buffer Proxy向NameNode请求真实位置;步骤3,Buffer Proxy计算真实位置是否满足X副本恢复条件,不满足则反馈给NameNode上载失败,并重新请求,直至满足多X副本的恢复条件;步骤4,BufferProxy上传1个副本到一个DataNode上,DataNode自行将其他副本内部复制;完成存储的Block返回NameNode,NameNode进行记录MetaData数据,Buffer Proxy记录这组Block绑定关系。
对于图3所示的方法,通过图4和下面数据表来进一部描述其中的存储和验证过程。
图4示出根据本申请实施例的HDFS系统存储实施方法的示例,如图4所示,client有2个文件需要上传到HDFS上,client向Buffer Proxy请求A.txt(156MB)的存储位置;Buffer Proxy模拟NameNode返回切割成3块,返回第一个Block块BLK1存储到Buffer Proxy上,Client上传A.txt的第一个64MB的Block,BLK1到Buffer Proxy;同样的方法,BufferProxy将接收A.txt的其余2个Block,Blk2和Blk4。同理,client向Buffer Proxy请求B.dat(128MB)的存储位置,Buffer Proxy将接收B.dat的2个Block,Blk3和Blk5。
Buffer Proxy向NameNode请求真实的存储位置,如表1所示。
表1
如图5所示,消亡具有Blk1的dnA、dnB、dnC,剩余的节点只有3、4、5和X,此时X可以代表1。则,发现2缺失,不满足具有所有数据块的恢复条件,重新申请真实的存储位置。
重新申请后,存储位置如表2所示。
表2
如图6所示,消亡具有blk1-blk5的任意一个的各DataNode,用X替代消亡的blk,则保证全部blk存在,则满足恢复条件(N值越大,则条件越容易满足)。
Buffer Proxy替代Client上传数据块1、2、3、4、5和X到DataNode集群,并记录1、2、3、4、5和X的绑定关系。DataNode集群自行写复制数据块1、2、3、4、5及X的副本,汇报NameNode进度。
NameNode根据写入情况,记录MetaData内容,如表3所示。
表3
Buffer Proxy继续下一组数据的缓存处理,直至结束。
其中,编码及恢复公式如下所示,
举例当N=5:
当丢失任意一个数据时,对其他项进行异或运算,则可以恢复原丢失数据
假设9C由于硬盘损坏丢失了,则通过其他四个数据块和X块可以得到其中,副本恢复条件包括:假设缓存数为N(>=5),副本数为M(>=2);将某一Block的M个副本所在的N个节点全部假设消亡;其他节点含有除该Block以外的所有Block和XOR编码Block,则满足该Block的副本条件,否则不满足副本恢复条件;重复验证上述步骤的所有Block,均满足其Block的副本条件,则整体满足副本恢复条件,否则不满足副本恢复条件
当数据灾难发生时,一般是整个DataNode的所有磁盘均不能对外正常工作。此时,可以通过Buffer Proxy存储的数据和XOR编码的对应关系进行整个文件的数据的恢复,通过HDFS删除后重新提交的形式恢复完整的副本数。
图7示出了根据本申请的数据恢复方法的流程图。如图7所示,该方法包括:BufferProxy调取其存储的绑定关系,读取HDFS上的尚存的block及X;如果存在丢失则利用XOR的恢复方法,恢复丢失的Block,重复读取和恢复步骤,直至恢复整个文件;提交HDFS删除原文件的请求,重新提交恢复的整个文件。
可以理解,一般情况下,HDFS的删除操作和改写操作均为针对整个文件的操作,因此会执行删除和重新提交的过程,因此不存在对于数据块Block的单独操作。当缓存中长期没有其他的存入内容,而恰巧不够凑足N个Block块时,用全0Block块补齐N个缓存,正常执行写入操作。
另外,可以升级为XOR冗余备份方法,包括:已经存储的数据进行添加XOR编码也很简单,直接添加Buffer Proxy,然后由Buffer Proxy按文件的顺序读取每一个Block块并按照“存储实施方法”中的方法,仅申请X的实际位置并验证是否满足副本恢复条件,满足副本恢复条件则存入X,直至整个文件全部添加X后,则升级完成。
从而,升级联合Block冗余备份方法只需已经存储的文件所有Block生成多个X,并仅将X提交HDFS即可,提交前需验证副本恢复条件。
根据本申请的另一个实施例,提供一种基于HDFS文件系统的可靠性增强系统,该系统在HDFS之前部署一个缓冲代理(Buffer Proxy),用于进行存储数据的缓存和代理提交,缓冲代理将上载数据块生成多个缓冲块,并且将所有缓冲块按位做XOR编码生成X块,缓冲代理将包含X块的所有数据申请位置信息,验证消亡任一块对应的所有的数据节点,仍可以恢复所有数据后,将数据副本上传到数据节点。
Claims (6)
1.一种基于HDFS文件系统的可靠性增强方法,其特征在于,所述方法包括:
在HDFS集群前增加一个缓存代理,缓存代理将上载数据生成多个缓存块,并且将多个缓存块按位做XOR编码生成X数据块,缓存代理将包含X数据块的所有缓存块申请位置信息;
基于位置信息,验证消亡任一缓存块对应的所有数据节点,确认满足X副本恢复条件后,将数据副本上传到数据节点,记录数据块的绑定信息;
所述方法进一步包括:
步骤1,Client提交数据给缓存代理,缓存代理返回提交成功响应;
步骤2,缓存代理缓存数据至N个缓存块时,将所有缓存块按位做XOR编码生成X数据块,缓存代理向名称节点请求真实位置;
步骤3,缓存代理确定真实位置满足X副本恢复条件;
步骤4,缓存代理上传一个副本到数据节点,数据节点自行将其他副本内部复制;完成存储的数据块返回名称节点,名称节点记录元数据,缓存代理记录数据块的绑定关系;
所述步骤3进一步包括:
消亡真实位置中具有任一数据块的各数据节点,用X数据块替代消亡的该任一数据块,确认全部数据块存在,则满足X副本恢复条件;
所述副本为HDFS存储数据技术遵循的三副本原则中拆分的数据块。
2.根据权利要求1所述的方法,其特征在于,所述缓存代理用于将上载数据生成N个缓存块,N大于等于5;当缓存块不够凑足N个时,用全0数据块补齐。
3.根据权利要求1所述的方法,其特征在于,所述X副本恢复条件具体为:
假设缓存块数为N,N>=5,副本数为M>=2;将某一缓存块的M个副本所在的数据节点全部消亡;剩余其他数据节点含有除该缓存块以外的所有缓存块和XOR编码的数据块,则满足该缓存块的副本恢复条件,否则不满足该缓存块的副本恢复条件;重复验证所有缓存块均满足恢复条件,则整体满足副本恢复条件,否则不满足副本恢复条件。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括数据恢复步骤:
缓存代理调取存储的绑定关系,读取HDFS上尚存的数据块及X数据块;如果存在丢失则利用XOR恢复方法,恢复丢失的数据块,重复读取和恢复步骤,直至恢复整个文件。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括存储文件的XOR冗余备份步骤,包括:
添加缓存代理,由缓存代理按文件的顺序读取每一个数据块并生成X数据块;
申请X数据块的实际位置并验证是否满足副本恢复条件,满足副本恢复条件则存入X数据块,直至整个文件全部添加X数据块。
6.一种基于HDFS文件系统的可靠性增强系统,其特征在于,在HDFS集群前部署一个缓存代理,所述缓存代理用于:
将上载数据生成多个缓存块,并且将多个缓存块按位做XOR编码生成X数据块,将包含X数据块的所有缓存块申请位置信息;
基于位置信息验证消亡任一缓存块对应的所有数据节点,仍能恢复所有数据后,将数据副本上传到数据节点,记录数据块的绑定信息;
还用于,
接收Client提交数据后返回提交成功响应;
缓存所述数据至N个缓存块时,将所有缓存块按位做XOR编码生成X数据块,并向名称节点请求真实位置;
确定所述真实位置满足X副本恢复条件;
上传一个副本到数据节点,数据节点自行将其他副本内部复制;完成存储的数据块返回名称节点,名称节点记录元数据,缓存代理记录数据块的绑定关系;
所述验证的 过程包括:
消亡真实位置中具有任一缓存块的各数据节点,用X数据块替代消亡的该任一缓存块,确认全部缓存块存在,则满足X副本恢复条件;
所述副本为HDFS存储数据技术遵循的三副本原则中拆分的数据块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610573042.3A CN107632994B (zh) | 2016-07-19 | 2016-07-19 | 一种基于hdfs文件系统的可靠性增强方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610573042.3A CN107632994B (zh) | 2016-07-19 | 2016-07-19 | 一种基于hdfs文件系统的可靠性增强方法和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107632994A CN107632994A (zh) | 2018-01-26 |
CN107632994B true CN107632994B (zh) | 2021-05-25 |
Family
ID=61112430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610573042.3A Expired - Fee Related CN107632994B (zh) | 2016-07-19 | 2016-07-19 | 一种基于hdfs文件系统的可靠性增强方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107632994B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108416054B (zh) * | 2018-03-20 | 2021-10-22 | 东北大学 | 基于文件访问热度的动态hdfs副本个数计算方法 |
CN111414346A (zh) * | 2020-04-30 | 2020-07-14 | 武汉众邦银行股份有限公司 | 一种海量非结构化数据文件分布式颗粒化的存储方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840366A (zh) * | 2010-05-13 | 2010-09-22 | 上海交通大学 | 环链式n+1位奇偶校验码的存储方法 |
CN102752402A (zh) * | 2012-07-20 | 2012-10-24 | 广东威创视讯科技股份有限公司 | 一种云存储方法及系统 |
CN102938778A (zh) * | 2012-10-19 | 2013-02-20 | 浪潮电子信息产业股份有限公司 | 一种在云存储中实现多节点容灾的方法 |
CN103412799A (zh) * | 2013-07-26 | 2013-11-27 | 华为技术有限公司 | 数据恢复方法、数据恢复设备和分布式存储系统 |
-
2016
- 2016-07-19 CN CN201610573042.3A patent/CN107632994B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101840366A (zh) * | 2010-05-13 | 2010-09-22 | 上海交通大学 | 环链式n+1位奇偶校验码的存储方法 |
CN102752402A (zh) * | 2012-07-20 | 2012-10-24 | 广东威创视讯科技股份有限公司 | 一种云存储方法及系统 |
CN102938778A (zh) * | 2012-10-19 | 2013-02-20 | 浪潮电子信息产业股份有限公司 | 一种在云存储中实现多节点容灾的方法 |
CN103412799A (zh) * | 2013-07-26 | 2013-11-27 | 华为技术有限公司 | 数据恢复方法、数据恢复设备和分布式存储系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107632994A (zh) | 2018-01-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11537482B2 (en) | Method and apparatus for reading and writing committed data | |
US10437672B2 (en) | Erasure coding and replication in storage clusters | |
US8151139B1 (en) | Preventing data loss from restore overwrites | |
US8224781B2 (en) | Data protection in a data storage system | |
US7634627B1 (en) | System and method for performing extent level backups that support single file restores | |
US9996421B2 (en) | Data storage method, data storage apparatus, and storage device | |
US9009428B2 (en) | Data store page recovery | |
US8250035B1 (en) | Methods and apparatus for creating a branch file in a file system | |
US11093387B1 (en) | Garbage collection based on transmission object models | |
US20140101184A1 (en) | File system adapted for use with a dispersed data storage network | |
US8856467B2 (en) | Management of metadata in a storage subsystem | |
JP2013511104A (ja) | ブロブとしての仮想ハードドライブ管理 | |
US11429498B2 (en) | System and methods of efficiently resyncing failed components without bitmap in an erasure-coded distributed object with log-structured disk layout | |
US8117160B1 (en) | Methods and apparatus for creating point in time copies in a file system using reference counts | |
CN107632994B (zh) | 一种基于hdfs文件系统的可靠性增强方法和系统 | |
US11468017B2 (en) | Data storage system and method | |
US7685186B2 (en) | Optimized and robust in-place data transformation | |
US7181473B1 (en) | Identifying files within a namespace | |
US7930495B2 (en) | Method and system for dirty time log directed resilvering | |
CN112912853A (zh) | 到云的任何时间点复制 | |
US9128823B1 (en) | Synthetic data generation for backups of block-based storage | |
US10747610B2 (en) | Leveraging distributed metadata to achieve file specific data scrubbing | |
US7743225B2 (en) | Ditto blocks | |
US7925827B2 (en) | Method and system for dirty time logging | |
US12093568B1 (en) | Segregated filesystem metadata operations using buffered atomic write interface |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20210525 |
|
CF01 | Termination of patent right due to non-payment of annual fee |