仇科凯1,2,王纯1,2
1. 北京邮电大学网络与交换技术国家重点实验室 北京100876;
2. 东信北邮信息技术有限公司 北京100191
摘 要
随着当今社会信息量的激增,我们已经进入了大数据时代。数据的保存尤为重要。云存储技术的发展为数据存储带来了不同的选择与更大的发展空间。相比于专门的数据备份服务器,能够利用闲散的计算机资源组成一个分布式的文件系统的云存储系统在经济适用性与性能方面都具有独特优势。而在诸多的文件系统中,HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)可以利用闲散的计算机资源构建分布式文件系统,以提供存储,备份功能。本文设计了一个基于HDFS分布式文件系统的面向HTTP协议的数据备份模块,以实现安全可靠的数据备份功能。
关键词 HDFS 数据备份 HTTP 云存储
A Design Of Data Backup Module For HDFS Based On Http Protocol
QiuKekai
Abstract: With the increase in the amount of information in today's society, we have already entered the era of big data. It’s particularly important to protect the data. The development of cloud storage technology has brought more choices and a larger space for data storage. Compared with specialized Data backup server, a cloud storage system that can make use of those idle computers to build a Distributed File System (DFS) has a big advantage in both price and performance. Among many of the file systems, Hadoop Distributed File System (HDFS) can make use of those idle computers to provide storage and backup functions. In this paper, based on cloud storage software HDFS, a data backup module is designed to provide a safe server of backup.
Key words: HDFS data backup HTTP cloud storage
1 引言
在网络信息科学技术快速发展的今天,各种企业广泛采用信息自动化技术来实现科学、自动化的管理。这导致信息量猛增,随之产生的问题则是大量数据需要被存储,管理。随着人们对数据的依赖越来越强,数据已然成为我们学习和生活中不可或缺的重要部分,成为了各企业赖以生存的命脉。数据的丢失和损坏将对我们造成难以估量的损失。因此,对于一个可以保障数据安全与可靠的数据备份系统的需求越来越大。
云存储技术[1]的发展为数据存储带来了不同的选择与更大的发展空间,有效地解决了数据备份所面临的一些难题。相比于使用专门的数据备份服务器,使用云存储在成本方面占有明显的优势。云存储技术可以利用闲散的计算机资源来搭建一个分布式文件系统,用以存储数据。另外,云存储或者说分布式文件系统也可以添加第三方验证或者加密存储等手段来使得数据的存储得到保护,保障了用户的数据安全性。而在诸多的文件系统中,HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)可以利用闲散的计算机资源构建分布式文件系统,提供存储,备份功能。HDFS集群是由安装了 Hadoop软件的计算机构成,以NameNode控制DataNode的方式运行。向备份服务器提供备份、恢复服务,实现系统的核心功能。
2 设计目标
随着大数据时代的到来,数据的重要性日益凸显。对于数据的存储备的功能需求始终存在。该模块是一种基于云存储技术的安全可靠,廉价高效的数据备份模块。充分利用了HDFS分布式文件系统的优点,可以方便的增加存储节点,使系统的存储空间具有极大的可扩展性。同时,为了提高系统的安全性,本系统将存储文件系统和备份服务器放入一个局域网(备份局域网)中,这个备份局域网对外网是透明不可见,外网的用户只能通过HTTP协议访问备份服务器的端口与之交互。并利用Hadoop对Kerberos的支持,为系统添加了Kerberos认证[3]。用来保障数据的安全可靠。
为了满足多方面的需求,本系统将提供以下功能:可视化网站界面,注册用户可以通过登陆本系统提供的网站查看自己的文件资源,直接在网站界面上进行上传,增量备份,删除,移动等相关文件的操作。RestFul操作接口,及相应的脚本文件,包括Linux环境与windows环境下的两种操作脚本。提供给用户启动定时任务对文件进行定时操作的功能。
3 系统方案
3.1 系统架构设计
本文所设计的数据备份模块旨在提供一种简单方便、安全有效的数据操作。以备份为核心,其他的文件操作为辅,提高用户的使用体验。参考LAN-Free和Server-Free的SAN网络结构,以及LAN-Base的服务器分布方式,本模块设计了一个数据局域网,将HDFS分布式文件系统以及备份服务器都放置在数据局域网中。外部的客户端通过HTTP请求访问备份服务器,操作数据,这样的设置隔绝了客户端对HDFS分布式文件系统的直接操作,可以避免一些攻击手段。
备份模块的硬件网络结构如图3-1所示。如图所示,本文采用C/S结构。整个大模块可以分为三个小模块:客户端模块,备份服务器模块和HDFS,KDC(存储系统)模块。
图 3-1 系统架构
3.1.1 KDC(安全服务)模块
HDFS分布式文件系统是本文所实现的数据备份模块的数据存储结构,KDC是负责整个系统安全性的安全机制,负责验证用户对HDFS的操作合法性,以及HDFS节点的合法性。利用现有可用设备,本模块设计使用7台机器搭建一个Hadoop集群,分别命名为super1至super7。选择super7作为HDFS的NameNode,剩下6台作为DataNode。Kerberos服务也部署在super7上,所以super7也是KDC。Hadoop是基于java实现的,对java有很好的兼容性,提供了很多的原生接口,本模块直接和备份服务器进行交互,提供Hadoop的原生接口给备份服务器使用。备份服务器在通过Kerberos身份验证之后,可以凭票据访问HDFS的NameNode,利用Hadoop提供的接口操作文件。
3.1.2 服务器模块
图3-2 服务器功能示意图
服务器是整个备份服务的核心,它也是连接客户端和云存储系统的枢纽,负责响应客户请求,与集群完成交互操作等。备份服务器按照功能划分可以分为三个部分:用户管理、文件操作和前端部分。如图3-2所示。
为了保障用户操作的安全,设计了一种用户签名验证机制,来保障客户端的每一操作的合法性,为了实现签名机制,为每一个注册用户都生成一个独一无二的key值。用户在需要进行文件操作到时候,每一次都需要用key值已经本次操作的一些信息来生成一个签名(sign)。
为了方便用户查看自己的key值,以及自己在HDFS分布式文件系统上的个人文件夹下有哪些文件,所以服务器设计实现一个Web网页,在该网页上用户可以查看key值,和自己用户文件夹的文件信息,以方便在进行数据操作之后查看操作是否成功。
服务器需要负责与HDFS分布式文件系统的直接交互,所以需要通过Kerberos认证,本模块采用了Kerberos的权限代理方式。即指客户端是不需要直接访问KDC的,客户端将身份信息传到服务器,服务器端验证用户是否存在及合法,如果效验通过,服务器就用高权限的用户来代理同一用户组中的低权限用户对HDFS文件进行操作。
在功能方面,整个备份模块以文件夹的同步功能为核心,为了方便用户的操作,除了同步和下载功能之外,也同时实现的列表、单文件上传、文件移动以及删除功能。
同步:对文件夹进行操作,可以对文件夹中的文件进行增量备份的操作;
下载:对文件操作,将HDFS分布式文件系统上的文件下载至本地;
列表:对所选路径下的文件进行显示;
上传:对单个文件操作,可以将本地的一个文件上传到HDFS上的指定位置;
移动:可以看作重命名操作,移动HDFS上的一个文件;
删除:删除指定路径的文件。
3.1.3 客户端模块
客户端子模块主要负责文件处理请求的发出,负责选取文件以及操作类型。同时,客户端还需要接收服务器返回的处理结果,设计返回数据为Json格式,客户端需要解析Json数据,将操作结果显示给用户。针对两种需求类型:用户个人操作类型以及程序自动操作类型。客户端设计使用两种实现方式。脚本实现方式,shell脚本以及bat脚本,通过调用服务器提供的restFul接口实现用户身份验证及文件操作功能。网站实现,服务器提供网站,用户登录后身份验证通过,直接在网站上对文件进行操作。
3.2 消息交互流程
系统的工作流程大致涉及到2个客户端(用户web端、脚本端)和2个服务器(系统服务器,hadoop服务器),在如下的系统工作流程概况中,我将对客户端和服务端之间的请求通信做详细说明,在中心服务流程详解中,我将对本系统的业务处理核心流程做详细说明。
系统工作流程图如图3-3所示。主要涉及到两部分流程,一部分为系统用户与系统服务器之间的交互,另一部分为系统服务器与HDFS文件系统之间的交互。
图3-3 系统工作流程图
用户可以直接在网站上进行操作或者使用脚本进行操作。网站或者脚本将操作请求发送到备份服务器,服务器向hdfs文件系统发送操作请求。
Hdfs文件系统操作完成之后将响应服务器的请求,然后服务器将返回结果再返回到网页或者脚本的窗口中。一次操作流程完成。
中心服务流程为整个系统业务处理的核心,详细情况如图3-4所示。
图3-4 中心服务流程图
当用户向服务器发起请求,服务器首先对用户的身份进行验证,看用户是否在系统中进行注册,调用数据库中的数据进行验证。如果用户验证不通过,则直接拒绝改请求,通过验证然后解析请求内容,得到请求的操作类型和操作对象。利用HDFS的官方接口提供用户对文件的操作权限的查询功能,可以将用户对于他的目录下的所有文件,文件夹的操作权限记录在数据库。然后综合操作的类型和对象到数据库中查询用户是否具有该操作权限。
无权限则返回操作失败结果,有权限则利用HDFS官方API提供的接口对HDFS进行操作。HDSF会将操作结果返回给请求函数,然后通过控制器,将操作接口通知用户。
4 结束语
本文从提供安全高效的数据备份目标出发,设计了一种基于HDFS面向HTTP协议的数据备份模块。本模块实现了用户注册验证功能,Kerberos第三方认证代理功能,网页操作和脚本操作功能,提供了文件的上传,下载,删除,移动,增量备份,反向备份功能。使用户可以很方便的管理自己的数据。由于使用HDFS集群作为存储媒介,Kerberos服务器作为第三方验证,所以本模块的存储空间可以很方便的进行扩展,数据的安全也有较高的保障。模块实现后能够为有数据备份需求,对HDFS文件系统进行操作的个人或企业带来较大的方便和快捷。
5参考文献:
[1] White T. Hadoop: The Definitive Guide[J]. O’reilly Media Inc Gravenstein Highway North, 2010, 215(11):1 - 4.
[2] 周可, 王桦, 李春花. 云存储技术及其应用[J]. 中兴通讯技术, 2010, 16(4):24-27. DOI:10.3969/j.issn.1009-6868.2010.04.006.
[3] Steiner J G, Neuman C, Schiller J I. Kerberos: An Authentication Service for Open Network Systems[C]. //Usenix Conference Proceedings. 1988:191--202.
[4] Shvachko K, Kuang H, Radia S, et al. The hadoop distributed file system[J]. IEEE Symposium on Mass Storage Systems & Technologies, 2010:1 - 10.
[5] 黄晓云. 基于HDFS的云存储服务系统研究[D]. 大连海事大学, 2010. DOI:10.7666/d.y1696707.
[6] 吴大刚, 肖荣荣. C/S结构与B/S结构的信息系统比较分析[J]. 情报科学, 2003, 21(3):313-315. DOI:10.3969/j.issn.1007-7634.2003.03.029.
[7] 赵博文. 解析Restful Web Service架构[J]. 光盘技术, 2008, (10):4-4.
[8] 魏晓玲. MD5加密算法的研究及应用[J]. 信息技术, 2010, (7):145-147. DOI:10.3969/j.issn.1009-2552.2010.07.041.
[9] 王峰, 雷葆华. Hadoop分布式文件系统的模型分析[J]. 电信科学, 2010, 26(12):95-99. DOI:10.3969/j.issn.1000-0801.2010.12.019.
[10] 翟永东. Hadoop分布式文件系统(HDFS)可靠性的研究与优化[D]. 华中科技大学, 2011. DOI:10.7666/d.d188275.