APP下载

基于Hadoop的云存储系统研究与实现

2015-01-13张效尉陈亚峰秦东霞

商丘师范学院学报 2015年9期
关键词:存储设备存储系统海量

张效尉,陈亚峰,秦东霞

(1.周口师范学院 计算机科学与技术学院,河南 周口466001;2.河南省轻工业学校 信息工程系,河南 郑州 450006)

基于Hadoop的云存储系统研究与实现

张效尉1,陈亚峰2,秦东霞1

(1.周口师范学院 计算机科学与技术学院,河南 周口466001;2.河南省轻工业学校 信息工程系,河南 郑州 450006)

大数据时代,各种信息数据日益迅猛增长,Hadoop为海量数据的处理提供了良好的解决方案.针对云计算环境中的海量数据存储问题,介绍云存储技术的概念和体系结构,分析Hadoop两大核心机制HDFS和MapReduce,利用Hadoop成功搭建分布式计算平台,并将其应用到海量社交网络数据的存储.实践证明,系统运行良好,为未来进行社交网络大数据分析提供平台和数据保证.

Hadoop;云存储;HDFS;社交网络数据

近年来,随着网络规模的不断扩大,互联网需要处理的业务和数据量也在快速增长,云计算作为一种新型服务计算模型,能有效地为用户提供方便,快捷的服务,正在成为互联网发展的新模式[1].云存储位于云计算体系架构的最底层,承担着以服务形式收集、存储和处理数据的任务,并在此基础上对上层的云平台、云服务等业务提供支撑.不同于传统的存储硬件,云存储提供的是一种服务,用户向云存储服务提供商申请存储空间,通过网络将本地数据存放在云存储系统中,按照所需空间规模支付一定的费用,避免了购买昂贵的软硬件设施[2].云存储具有高可靠性、可扩展性、海量存储、低成本和易于管理等特点,因此,针对云存储系统的研究不仅是技术发展的趋势,而且具有重要的应用价值.

1 云存储技术

云存储是在云计算基础上延伸和发展出来的一个新概念,是指通过集群技术、网格计算和分布式文件系统等技术,将网络中大量不同类型的网络设备、服务器、存储设备、公共访问接口和接入网等多个部件,通过应用软件集合起来协同工作,共同对外提供数据存储和业务访问功能的一个系统[3].云存储平台体系结构由存储层、基础管理层、应用接口层和用户访问层4个层次构成,体系结构如图1所示.

图1 云存储系统结构模型

1.1 存储层

存储层是云存储中最基础的部分,由存储设备和存储设备管理系统构成.存储设备可以是FC光纤通道存储设备,也可以是NAS、iSCSI等IP存储设备,或者是 SCSI、SAS等 DAS存储设备[4].云存储中的存储设备往往数量庞大且分布在不同地域,彼此通过广域网、互联网或者 FC光纤通道网络连接在一起.存储设备之上是一个统一的存储设备管理系统,可以实现存储设备的逻辑虚拟化管理、多链路冗余管理,以及硬件设备的状态监控和故障维护.

1.2 基础管理层

基础管理层是云存储中最核心的部分,也是最难以实现的部分.基础管理层通过集群技术、网格计算和分布式文件系统等技术,使该层具有统一的用户管理、安全管理、副本管理和策略管理等公共数据管理功能,将底层存储与上层应用无缝衔接起来,实现云存储中多个存储设备之间的协同工作,以更好的性能对外提供多种服务.

1.3 应用接口层

应用接口层是云存储中可以灵活多变,直接面向用户的部分.不同的云存储运营单位可以根据实际业务类型,开发不同的应用服务接口,提供不同的应用服务.比如视频监控应用平台、IPTV和视频点播应用平台、网络硬盘服务、空间租赁服务等.

1.4 用户访问层

通过用户访问层,任何一个授权用户都可以在任何地方,使用一台联网的终端设备,通过标准的公共应用接口来登录云存储系统,享受云存储服务.

2 Hadoop简介

Hadoop是Apache基金会旗下的一个分布式计算平台,具有高可靠性、高效率、高扩展性和免费开源等优点,支持在大量廉价的硬件设备上,建立高性能的分布式集群[5].Hadoop包含两大核心模块:HDFS和MapReduce,HDFS实现对大规模数据的分布式存储,MapReduce负责海量数据的分布式计算分析.另外,Hadoop支持在其上部署HBase、Hive、Pig等子项目,共同构成海量数据处理的生态圈.

2.1 HDFS

HDFS(Hadoop Distributed File System)是一个分布式文件系统,适用于数据量庞大,一台机器无法存下,数据要分散存储到多台机器上,需建立对多台机器中磁盘文件进行管理的文件系统,该文件系统具有高容错性、高吞吐量的数据访问,适合部署在大规模廉价的机器上,存储海量数据.HDFS采用Master/Slave结构,有两类节点,以管理者-工作者模式运行,即一个namenode名称节点(管理者)和多个datanode数据节点(工作者),以如图2所示的工作方式运行[6].Namenode管理文件系统的命名空间,维护文件系统树以及整棵树内所有的文件和目录,这些元数据信息被保存在命名空间镜像文件(fsimage)和编辑日志文件(edits)中.同时,namenode的元数据信息记录datanode和数据块的文件映射,客户端对文件的操作访问,即文件的创建、打开、删除和重命名等信息.Datanode负责存储数据,并负责处理客户端对数据的读写请求,定期以心跳机制向namenode发送它们所存放数据块的列表信息[7].SecondaryNamenode作为辅助节点,备份namenode节点的元数据信息,实现对namenode的容错,避免namenode节点失效,文件系统无法使用.

图2 HDFS架构

2.2 MapReduce

MapReduce是Hadoop平台用来进行海量数据分析并行运算的计算模型.Hadoop采用Jobtracker/Tasktracker主从式结构实现MapReduce编程模型[8].Jobtracker负责分配Map任务或Reduce任务,将任务分发给多个Tasktracker,并监控各节点的执行情况;Tasktracker执行Jobtracker分配的任务,并定期向Jobtracker报告任务完成状态和结果.MapReduce编程模型具体实现步骤如下[9].

(1)Input:应用程序提供Map和Reduce函数,指明输入/输出的路径以及运行相关的参数.同时,把输入目录下的大文件分为若干独立且大小相等的数据块.

(2)Map:Map函数把用户的输入当做键值对进行处理,并生成一批新的中间键值对,这两组键值对类型可能不同.

(3)Shuffle:在进入Reduce阶段之前,Shuffle阶段完成将Map输出中key值相同的数据排序合并后,归结到一起.

(4)Reduce:将每一个key对应的多个value值执行Reduce函数操作,输出新的键值对.

(5)Output:将Reduce结果写入输出目录中.

3 云存储系统构建

本实验将在完全分布式模式下搭建Hadoop集群.首先,在数据中心的IBM X3850服务器上,安装VMware公司的vSphere5.5 中的核心组件 VMware ESXi 5.5.0;然后,在用户端机器上安装vSphere Client客户端软件,远程连接控制管理服务器;接着,在ESXi 服务器上创建资源池,并在资源池中创建9个虚拟机,为这些虚拟机安装Ubuntu Linux 操作系统,配置网络IP地址,确保9台虚拟机能相互ping通,使之成为能提供各种网络应用服务的虚拟服务器;最后,在此基础上部署Hadoop平台,使资源池中的9台虚拟机成为小型集群.

下面描述在9台虚拟机中搭建Hadoop集群的具体过程.

(1)配置Hosts文件

本实验采用9个节点搭建Hadoop集群,为方便节点之间通过主机名称来相互访问,在各个节点的/etc/hosts解析文件中,列举出每个节点的名称与IP地址的对应数据,具体信息如图3所示.

图3 节点名称与IP地址对应关系

其中SNMPS节点作为namenode名称节点、Jobtracker作业跟踪节点和SecondaryNamenode辅助名称节点,datanode1、datanode 2、datanode 3等8个节点作为Tasktracker任务跟踪节点和datanode数据节点.

(2)配置SSH无密码登录

Hadoop集群中,名称节点的守护进程需要与数据节点的守护进程进行通信,通过配置SSH协议实现各节点之间无密码登录,保证其相互之间能可靠通信.

在每台机器上,用ssh-keygen-t rsa命令生成密钥文件,将公钥文件id_rsa.pub用cp id_rsa.pub ./authorized_keys命令重命名为authorized_keys.然后,将每台机器的id_rsa.pub追加到其他所有机器的authorized_keys文件末尾,使用#ssh *命令测试各机器是否可以相互免密码登录成功.

(3)从网上下载JDK安装包jdk-7u17-linux-64.tar.gz,解压到安装目录下,安装JDK并配置Java环境变量.

(4)安装Hadoop

下载Hadoop安装包hadoop-1.2.1.tar.gz,用tar zxvf hadoop-1.2.1.tar.gz命令将其解压到用户目录下.为方便直接使用Hadoop命令,需在名称节点的/etc/profile中,配置Hadoop路径.

(5)配置Hadoop

Hadoop安装成功后,需进入其conf文件夹,配置下列相关文件.

①配置masters文件和slaves文件

在masters文件中输入名称节点的机器名SNMPS作为主节点,同时,在slaves文件中输入数据节点的机器名datanode1、datanode 2、datanode 3等8个节点作为从节点.

②用vi hadoop-env.sh命令打开hadoop-env.sh文件,将java的环境变量信息“export JAVA_HOME=/usr/java/jdk1.7.0_17”加入hadoop-env.sh文件.

③修改core-site.xml文件,配置hdfs名称节点的主机名和端口号.

④修改hdfs-site.xml文件,配置hdfs分布式文件系统中文件副本数目,一般选择为2.

⑤修改mapred-site.xml文件,配置作为Jobtracter分配任务的节点的主机名和端口号.

(6)用scp命令将名称节点配置好的Hadoop,复制到其它数据节点.

(7)在名称节点上,用hadoop namenode -format命令格式化一个新的分布式文件系统.

(8)执行start-all.sh命令,启动Hadoop集群.

(9)用jps命令检查集群是否启动成功.

4 集群的测试

在Linux系统的usr目录下建立input目录,在input目录下建立两个文件test1.txt和test2.txt,test1.txt中输入内容“hello world”,test2.txt中输入内容“hello Hadoop”,用put命令“./hadoop fs -put /usr/input /in”将input目录下的内容上传至Hadoop集群的in目录中,用测试命令“./hadoop jar /usr/local/hadoop-examples-1.2.1.jar wordcount /user/hadoop/in out”针对in目录下的内容进行单词个数统计,观察其Map和Reduce过程如图4所示.

图4 MapReduce运行过程

MapReduce任务运行完成后,用“./hadoop fs -cat /user/hadoop/out/*”命令查看统计结果如图5所示.

图5 hadoop测试成功效果图

5 云存储平台搭建实例

人们通过社交网络获取和交流信息,各种社交网站每天产生大量信息,如何获取、存储和分析这些信息,建立社交网络数据挖掘平台,提取出有用信息,更好地服务于人们的生活,成为大数据时代的一个重要研究方向.本节以一个正在建设的社交网络数据挖掘平台为例,讲解如何利用Hadoop设计存储海量社交网络数据的云存储系统.

该平台首先建立多个爬虫对现有的线上社交网站进行社交数据抓取,爬虫工作在Docker云平台上,Docker平台可以根据需要产生相应的容器,每个爬虫运行在单独的容器中,容器的生命周期从特定爬虫(如针对某一个用户或者某一条微博)启动到抓取结束,Docker收回容器资源.接着,针对爬虫数据进行抓取后的一些数据处理工作,主要是数据清洗,即用Spark streaming实时流处理技术,对爬虫数据中的网页元素进行过滤,对某些不完整的信息进行清除,提取某些实时特征.最后,将清洗后的数据使用txt格式进行保存,并上传到HDFS分布式文件系统中,所有的社交网络数据都通过Hadoop的HDFS保存和管理,形成能存储海量数据的云存储系统,将数据存储到Hadoop后的效果如图6所示.目前,已收集到3TB的社交网络数据,可以利用MapReduce和Spark进行社交网络大数据分析.

图6 Hadoop存储数据效果图

6 结 论

利用Hadoop实现云存储系统,能够为企业提供一种廉价的大规模数据存储解决方案.社交网络随着人们交往行为的频繁日益产生海量数据,本文利用Hadoop搭建了存储社交网络大规模数据的平台.未来在此基础上,我们将利用MapReduce和Spark工具,采用数据挖掘中的聚类、关联规则和机器学习等方法,对云存储系统中的海量数据进行分析,提取出对人们有价值的信息.

[1] 陈康,郑炜民.云计算:系统实现与研究现状[J].软件学报,2009,20(5):1338-1342.

[2] 王庆波.云计算宝典技术与实践[M].北京:电子工业出版社,2011.

[3] Sanjay Chemawat, Howard Gobioff, Shun-Taklevag.The Google File System[C].Proceedings of the 19th ACM Symposium on Operating System Principles.New York:ACM Press,2003.30-42.

[4] 黄晓云.基于HDFS的云存储服务系统研究[D].大连:大连海事大学,2010.

[5] 刘鹏.实战Hadoop——开启通向云计算的捷径[M].北京:电子工业出版社,2011.149-153.

[6] 张桂刚,李超,张勇.一种基于海量信息处理的云存储模型研究[J].计算机研究与发展,2012(S1):32-36.

[7] Dean Jeffrey,Ghemawat Sanjay.MapReduce:A flexible data processing tool[J].Communication of the ACM,2010,53(1):72-73.

[8] 孙知信,黄涵霞.基于云计算的数据存储技术研究[J].南京邮电大学学报(自然科学版),2014,34(4):14-15.

[9] Tom White.Hadoop权威指南[M].周敏奇,等,译.北京:清华大学出版社,2010.

[责任编辑:王军]

The research and implementation of cloud storage system based on Hadoop

ZHANG Xiaowei1,CHEN Yafeng2,QIN Dongxia1

(1.School of Computer Science and Technology,Zhoukou Normal University,Zhoukou 466001,China;2.Information Engineer Department,Henan Light Industry School,Zhengzhou 450006,China)

All kinds of information and data increasingly have rapid growth in the age of big data,Hadoop provides a good solution for the treatment of massive datas.For the problem of massive data storage in the cloud computing environment,this paper introduces the concept and architecture of cloud storage technology, analyzes two coremechanisms of Hadoop which include HDFS and MapReduce, successfully builds a distributed computing platform with Hadoop, and applies to massive social network data storage.The practice proves that the system runs well, which provides platform and data guarantee to analyse social network big data in future.

Hadoop;cloud storage;HDFS; social network data

2015-02-27

国家自然科学基金资助项目(61103143);河南省高校科技创新人才支持计划项目(2012HASTIT032);河南省高等学校重点科研项目(15A520125);周口师范学院青年基金项目(zknuc0213)

张效尉(1982-),男,河南开封人,周口师范学院讲师,硕士研究生,主要从事内存数据库、社交网络大数据分析的研究.

TP319

A

1672-3600(2015)09-0060-05

猜你喜欢

存储设备存储系统海量
一种傅里叶域海量数据高速谱聚类方法
分布式存储系统在企业档案管理中的应用
海量快递垃圾正在“围城”——“绿色快递”势在必行
天河超算存储系统在美创佳绩
Windows 7下USB存储设备接入痕迹的证据提取
一个图形所蕴含的“海量”巧题
基于Flash芯片的新型存储设备数据恢复技术研究
华为震撼发布新一代OceanStor 18000 V3系列高端存储系统
一种基于STM32的具有断电保护机制的采集存储系统设计
用批处理管理计算机USB设备的使用