一种用于hdfs系统的备份和恢复方法
【技术领域】
[0001]本发明涉及一种用于HDFS系统的备份和恢复方法,属于数据处理技术领域。
【背景技术】
[0002]随着大数据时代的到来,数据信息日益重要,数据保护问题日渐突出,各种灾难性事件给用户敲醒很多警钟。数据保护、数据的容灾是非常重要的话题。
[0003]据统计,导致系统灾难的原因分布比例一般为:硬件故障占44%、人为错误占32%、软件故障占14%、病毒影响占7%、自然灾难占3%。数据容灾系统,就是为计算机信息系统提供的一个能应付各种灾难的环境。当计算机系统在遭受如火灾、水灾、地震、战争等不可抗拒的自然灾难以及计算机犯罪、计算机病毒、掉电、网络/通信失败、硬件/软件错误和人为操作错误等人为灾难时,容灾系统将保证用户数据的安全性。甚至,一个更加完善的容灾系统,还能提供不间断的应用服务。
[0004]HDFS(Hadoop distributed filesystem,Hadoop 分布式文件系统)被设计成适合运行在通用硬件上的分布式文件系统。它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。
[0005]随着HDFS的使用越来越普遍,如何把HDFS中的大量数据快速准确地备份到远端服务器,并且能够在指定的集群上迅速恢复成为了一个显著问题。要解决这个问题,需要考虑的速度取决于数据结构的设计、增量生成速度、传输速度和并行度、数据删冗程度等各种因素。
【发明内容】
[0006]本发明要解决的技术问题是:实现HDFS的快速备份和恢复。
[0007]为实现上述的发明目的,本发明提供了一种用于HDFS系统的备份和恢复方法,包括如下步骤:
[0008]向备份服务器传送备份数据的步骤:
[0009]输入备份命令,生成一次全备份;
[0010]检测HDFS系统行为,并定时生成增量备份;
[0011 ]将增量备份传输至备份服务器;
[0012]从备份服务器获取备份数据的步骤:
[0013]指定文件恢复选项参数;
[0014]按文件恢复选项参数从备份服务器下载备份数据。
[0015]其中较优地,所述输入备份命令,生成一次全备份的步骤具体包括:
[0016]在配置文件中进行配置,输入备份命令,进行一次全备份;
[0017]建立日志文件;
[0018]将HDFS元数据序列化,并将序列化后的文件和日志文件并传输至备份服务器;
[0019]生成所有数据块的列表;
[0020]通过心跳机制向备份服务器传输所有数据块列表中的数据。
[0021]其中较优地,所述配置文件包括:备份服务器的地址和备份时间间隔。
[0022]其中较优地,所述检测HDFS系统行为,并定时生成增量备份的步骤具体包括:
[0023]检测HDFS系统行为并记录元数据的改变;
[0024]将生成的数据增量记录到发生变化的数据块列表。
[0025]其中较优地,所述数据增量中包括数据块编号、时间戳和数据块的长度。
[0026]其中较优地,所述将增量备份多线程传输至备份服务器的步骤包括:
[0027]启动定时服务,并定时生成空日志文件,将旧的日志文件传输至备份服务器;
[0028]将发生改变的数据块列表通过心跳机制分配调度给相应的数据节点;
[0029]数据节点向服务器传输数据块。
[0030]其中较优地,所述数据节点向服务器传输数据块的步骤具体包括:
[0031]将要传输的数据拆切割为若干数据包;
[0032]询问备份服务器是否有切割完的数据包;
[0033]向服务器传输备份服务器中没有的数据包。
[0034]其中较优地,所述询问备份服务器是否有切割完的数据包还包括:
[0035]对每个数据块生成数据块的MD5码;
[0036]向备份服务器发送每个数据块的MD5码,并判断当前数据块的MD5码是否存在。
[0037]其中较优地,所述备份服务器中备份端的内存中有所有数据块的MD5码的列表。
[0038]其中较优地,所述恢复选项参数具体包括:
[0039]要恢复的文件系统的备份文件标识、数据节点的总个数、数据节点的编号。
[0040]本发明提供的用于HDFS系统的备份和恢复方法,在一个全新的任意台机器组成的HDFS系统上进行任意版本的数据恢复;在备份服务器支持版本浏览以及最新版本备份的完整查看等功能,可以实现高效的分布式文件系统备份和恢复。
【附图说明】
[0041]图1是本发明实施例中的用于HDFS的分布式文件系统备份和恢复步骤流程图;
[0042]图2是本发明本发明实施例中的用于HDFS将增量备份多线程传给备份服务器示意图。
【具体实施方式】
[0043]下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
[0044]如图1、图2所示,首先,本发明提供的用于HDFS系统的备份和恢复方法应用于本地文件系统HDFS和备份服务器的备份系统中。本地文件系统HDFS,在Apache HDFS基础上进行修改,添加文件内容改变检测、增量备份存储、备份加密传输、文件内容恢复等功能。远端备份服务器安装一个HDFS用于存储大量的备份数据,引入HDFS库文件,具有备份保存、备份合并、传输删冗以及为本地文件系统提供服务的接口。
[0045]如图1、图2所示,本发明提供一种用于HDFS系统的备份和恢复方法,包括向备份服务器传送备份数据的步骤和从备份服务器获取备份数据的步骤,具体包括向备份服务器传送备份数据的步骤:输入备份命令,生成一次全备份;检测HDFS系统行为,并定时生成增量备份;将增量备份多线程传输至备份服务器;从备份服务器获取备份数据的步骤:指定文件恢复选项参数;按文件恢复选项参数从备份服务器下载备份数据。下面对本发明展开详细的说明。
[0046]首先,介绍向备份服务器传送备份数据的步骤。
[0047]S1:输入备份命令,生成一次全备份。具体包括:在配置文件中输入备份命令,HDFS系统执行备份命令。配置文件优选是hdfs-backup.xml。配置文件存放于$HADOOP/etc/hadoop/hdfs-backup.xml,需要配置备份服务器的地址端口和备份的时间间隔。配置完成以后HDFS系统执行备份命令。在全备份完毕后建立日志文件。日志文件包括记录HDFS系统元数据改变的数据变化日志FSEditLog和记录记录HDFS系统元数据改变和块数据改变的备份日志FSBackuplog。将HDFS元数据序列化,并将序列化后的文件FSImage和日志文件并传输至备份服务器;HDFS系统生成所有数据块的列表,HDFS系统通过心跳机制通知数据节点向备份服务器传输所有数据块列表中的数据block。
[0048]HDFS系统通过心跳机制通知数据节点向备份服务器传输所有数据块列表中的数据的步骤具体包括:名字节点NameNode通过下一次心跳包回复给数据节点DataNode发送BlockBackupCommand命令,数据节点DataNode传输相应地数据块列表中的数据block给备份服务器。
[0049]S2:检测HDFS系统行为,并定时生成增量备份。具体包括:检测HDFS系统行为并记录元数据的改变。HDFS系统行为优选由名字节点NameNode实时监测。将生成数据的增量记录到发生变化的数据块列表。将新生成数据的增量写入备份日志FSBackuplog中。备份日志FSBackuplog记录发生变化的数据块的列表。文件系统备份需要有唯一的标识,使用HDFS的备份文件标识block pool id作为该文件系统的标识符;文件系统标识符是全局唯一的一个字符串;每次生成增量备份时,由NameNode以系统时间作为该版本的版本号;传输增量备份时,需要制定文件系统标识符和版本号。将发生改变的数据块列表分配调度给相应的数据节点。具体地,关于增量备份生成速度,备份由备份日志FSBackuplog和数据块组成,在每一次文件系统发生改变时,都会把发生的改变写入增量中。生成备份时,只需要新建文件来存储新一版本的增量,旧版本的增量可以直接被处理并传输至备份服务器。
[0050]S3:将增量备份多线程传输给服务器。启动定时服务,并定时生成空日志文件,将旧的日志文件传输至备份服务器;定时服务优选由名字节点NameNode启动。名字节点NameNode定时生成新的备份日志FSBackuplog文件,并将旧的备份日志FSBackuplog文件传输至服务器。名字节点NameNode将发生改变的数据块列表分配调度给相应的数据节点DataNode,通过心跳回复发送命令,由每个数据节点DataNode各自将实际的块数据传送给备份服务器。具体地:将要传输的数据拆切割为若干数据包;询问备份服务器是否有切割完的数据包;向服务器传输备份服务器中没有的数据包。数据节点DataNode将要传输的数据块切割为4K大小的数据包;对每个数据块生成数据块的MD5码并询问备份服务器是否已经有该数据块;数据节点DataNode将一个数据块的所有MD5码发送给备份服务器服务器,询问备份服务器服务器是否已经在本地具有该数据块。若备份服务器没有与当前MD5码对应的数据块,则对当前的数据块进行加密传输。备份服务器用一个HDFS进行数据存储,在内存中保持一个本地所有的4K文件块的MD5码的列表,支持实时高效查询。备份服务器将查询结果返回给HDFS。HDFS收到备份服务器的回复之后,把备份服务器没有的4K数据块,通过DES Coder加密传输到备份服务器服务器。备份服务器通过socket收到数据块之后通过DES Decoder解密,把数据块写入相应地位置。
[0051]备份服务器在接收到完整版本的备份之后,将增量备份合并到所保存的全备份中,生成最新的全备份,写入本地HDFS文件系统,为了支持本地最新版本备份的查看。
[0052]其次,介绍从备份服务器获取备份数据的步骤。
[0053]HDFS文件系统重新安装后,首先执行名字节点NameNode的格式化format操作;启动文件分布系统dfs脚本,指定命令行中执行命令时的选项recoverFromBackup (不可与其他选项一同使用),参数为想要恢复的文件系统的备份文件标识b