网站首页  词典首页

请输入您要查询的论文:

 

标题 Hadoop云计算及其关键技术
范文 常广炎



摘 要:Hadoop是实现云计算事实标准的开源软件,它包含数十个具有生命力的子项目,构造的数据集群能在数千个节点上运行,处理的数据量和排序时间不断打破世界记录。它的核心为分布式文件系统(HDFS)和 MapReduce 编程模型,能够解决海量数据需求、分析、处理和挖掘及数据的长期保存。可使用大量的廉价PC机通过集群来代替价格昂贵的服务器,使云计算硬件成本大大降低,用户能够按需获取计算力、存储空间和信息服务。
关键词:Hadoop;云计算;虚拟化技术;数据储存技术
DOIDOI:10.11907/rjdk.151608
中图分类号:TP301
文献标识码:A 文章编号文章编号:16727800(2015)009000703
1 云计算基础架构
1.1 云计算体系结构
云计算平台是开源的资源网络[ 1 ],在网络中以按需要、易扩展方式获得所需服务。其体系结构如图1 所示。
图1 云计算体系结构
云用户端:主要提供用户的服务请求和交互界面;
管理系统:用户和计算资源的管理以及资源的部署和资源调度;
部署工具:优化资源,减少云成本、动态地部署资源,整合和管理云实例;
监控:实时监视和控制系统资源使用情况,同步配置相应结点,是云平台动态负载均衡策略的重要依据;
服务目录:选择和定制服务列表以及对已有的服务进行管理;
服务器群:负责并发请求处理,大规模的数据计算,海量数据存储。
1.2 云计算服务层次
在云平台计算中,云计算服务划分为4个层次,分别是应用层、平台层、基础设施层和虚拟化层,如图 2 所示。
图2 云计算服务体系结构
应用层(SAAS云软件):产品有GoogleApps、Software+Service;
平台层(PAAS云平台):产品有Google APPEngine、Force.com;
基础设施层(IAAS云设备):产品有亚马逊的可弹性计算(EC2)、 SunGrid。
虚拟化层:产品有VMware、Virtualbox、Xen、Qemu 、Hyper-V、KVM。
2 Hadoop云计算关键技术
2.1 虚拟化技术
虚拟化技术是云计算系统的一部分,是一种管理资源技术[ 2 ],能够为某些硬件对象创造模拟化版本,如操作系统、存储设备和网络设备等,解决了硬件结构不可分割的限制,用户可以更好的方式来应用这些资源,通过资源整合形成强大的存储和计算能力,使用者能够方便使用、开发及维护存储的数据。主要技术有:
硬件虚拟化:在底层硬件建立虚拟化程序,主要软件有 VMware和 Virtual PC。可在单机上实现多个或多种操作系统,缺点是增加了处理器开销。
操作系统虚拟化:在操作系统层面增加虚拟服务器功能,基于共用操作系统,其架构体系比较简单。缺点是多种操作系统不能在同一机器上实现。主要软件有 Virutozzo 和 Solaris Container。
并行虚拟化:又称准虚拟化,和硬件虚拟化类似,区别在于,对操作系统的修改降低了额外开销,但其效率比硬件虚拟化要高很多,目前主要产品是开源项目 XEN。
2.2 数据存储技术
高可靠、高效率和经济性是云计算数据存储的特点,采用分布式存储方法实现[ 3 ]。在云计算中,数据的可靠性是第一位的,所采用的技术手段是冗余存储,即多个副本对应同一数据。Hadoop采用HDFS(Hadoop Distributed File System)进行文件管理,HDFS设计的基础和目标是:硬件错误是常态,因此需要冗余;大数据量的流式读写,而非OLTP;简单一次性模型,对文件采用一次性写多次性读的逻辑。
HDFS结构模型为主从(Master/Slave)结构模型,一个NameNode和若干个DateNode组成一个集群,NameNode是主服务器,管理文件系统的命名空间,记录每个文件数据块在DateNode节点上的位置和副本信息,记录命名空间的改动,协调客户对文件的访问,使用事务日志记录HDFS元数据的变化情况。DateNode负责在物理节点上的存储管理,用户数据被分成若干个数据块(默认大小是64MB),分散存储在一组DateNode节点上,一次写入多次读取,不能被修改。HDFS宿主语言是Java,任何支持Java的计算机都可以部署NameNode和DateNode,这些计算机通常运行的是GNU/Linus操作系统。HDFS体系结构如图3所示。
图3 HDFS体系结构
2.3 数据管理技术
云计算中的数据管理技术必须能够高效地管理大规模数据集[ 4 ],必须在海量数据中检索到特定的数据。HDFS通过3个重要角色进行数据文件管理,即NameNode、DateNode和Client。NameNode是分布式文件系统的管理者,DateNode是文件系统的工作节点,以块文件(Block)形式存储在文件系统中,是文件存储的基本单元,并将块的信息发送给NameNode,Client是获取分布式文件系统的应用程序。
作为分布式文件系统,HDFS在管理方面特点有:
文件写入:Client向NameNode发出文件请求;NameNode根据文件块的配置情况,返回所管理的DateNode;Client将文件划分为多个块(Block),根据DateNode的地址信息,按顺序将其写入每一DateNode中,NameNode并不参与数据的传输。
文件读取:Client向NameNode发出文件读取请求;NameNode返回文件存储的DateNode信息;Client访问DateNode获取数据。
冗余副本策略:所有数据块都有副本,可以在hdfs_site.xml中设置复制因子,指定副本数量。
机架策略:HDFS具有“机架感知”,本机架放一个副本,其它机架放其它副本,这样可以防止机架失效时数据丢失,提高带宽利用率。
心跳机制:HDFS通过心跳机制来完成主节点和从节点之间的通信,NameNode周期性接收来自DateNode的心跳信号及块报告,没有按时发送心跳的DateNode会标记为宕机,不再给它任何I/O请求。
数据校验:采用CRC32数据校验。
数据复制:HDFS能够平衡DateNode存储利用率和平衡DateNode数据交互压力,这对于新结点的加入十分有利。
2.4 编程模型技术
基于 MapReduce编程模型在Hadoop上开发并行应用程序,主要思想是对大规模数据集 “分而治之”[ 5 ],包括Map 和 Reduce两个过程。Map负责“分”,把复杂任务分解为简单的任务执行。 Reduce 对Map阶段的结果进行汇总,将大数据集分解为众多小数据集,这些小数据集由集群中的一个节点进行处理,并对生成的中间结果合并,形成最终结果。 在Map和Reduce中间有一个Shuffler过程,它可以把Map的输出按照某种KEY值,重新分割组成N份,把符合某种范围的KEY值,输出到特定的Reduce去处理,大大简化了Reduce过程。Reduce的数目由mapred-site.xml配置文件项目mapred.reduce.tasks决定,缺省为1。用户所要完成的工作就是编写Map和Reduce函数。MapReduce编程模型非常适合在大量计算机组成的大规模集群上并行运算[ 6 ],每一个Map和Reduce任务均可同时运行于一个单独的计算结点上。
2.4.1 实现机制
(1)用户程序调用MapReduce函数,把原始大数据切割成小数据M块,每块16M~64M,默认是64M。处理M块数据,就启动M个Map任务,这M个Map任务被分布在N个云平台计算机上并行运行,Reduce任务数量R则由用户指定。
(2)主控程序Master选择空闲Slave来分配这些Map或Reduce任务。
(3)一个被分配Map任务的Slave读取并处理相关的输入块信息,Map函数接收分析出的对,这些Map函数产生的中间结果对,被暂时缓冲到内存保存。
(4)被暂时缓冲到内存的中间结果对,按照设定的时间写回到本地硬盘,Master获取中间结果对在本地硬盘位置信息,这些信息被Reduce的Slave接收。
(5)Master通知Reduce的Slave有关中间对的位置信息,并调用远程过程从Map Slave的本地硬盘读取缓冲的中间结果数据,并对Key进行排序。
(6)排序后的中间数据被Reduce Slave 根据每个唯一中间Key进行遍历,并把相关的中间结果集合和Key传递给Reduce函数,Reduce函数产生的结果被定向到一个输出文件,形成最终结果。
2.4.2 具体实例分析
MapReduce编程单词计数,见图4。
图4 MapReduce
伪代码如下:
Map(string Key ,string Value) {
For each word w in Value
Collect(w,”1”);
}
Reduce(string Key,string Value [ ]) {
Int num=0
For each word v in Value [ ]
num=num+v;
Collect(Key,num);
}
(1)根据文件包含的信息分割文件,每行分为一组,共三组。
Hello→(Key,Value);Hello World→(Key,Value);
Hello Hadoop World→(Key,Value)
(2) 利用Map函数对生成后的每一对(Key,Value)进行处理,生成新的(Key,Value)对,进行Map输出,结果 如下:
< Hello ,1>;< Hello ,1> < World ,1>;< Hello ,1> < Hadoop ,1> < World ,1>
(3) Map输出后进行内部整合,结果如下:
< Hello ,1> < Hello ,1>;< World ,1> < World ,1> ;< Hadoop ,1>
(4)调用Reduce函数完成最后工作,结果如下:
;< World ,2>;< Hadoop ,1>
3 结语
Hadoop是云计算的重要组成部分,是一个能够让用户轻松架构和使用的分布式平台,并且可以充分利用集群的计算和存储能力完成海量的数据处理。Hadoop中的HDFS和MapReduce组成了Hadoop核心,HDFS具有高度的容错性和兼容性,Hadoop可以部署在低廉的计算机上,且不限于某个操作系统。Hadoop的HDFS数据管理能力和MapReduce高效的任务处理能力以及其开源特性,使其在分布式系统中大放异彩,将在众多行业和科研领域广泛应用。
参考文献参考文献:
[ 1 ] 高林,宋相倩,王洁萍.云计算及其关键技术研究[ J ].微型机与应用,2011(10) :57.
[ 2 ] 夏大文,荣卓波.Hadoop关键技术的研究与应用[ J ].计算机与现代化,2013(5):138141.
[ 3 ] 刘琨,李爱菊.基于Hadoop的云存储的研究及实现[ J ].微计算机信息,2011(7):220221.
[ 4 ] 成静静.基于Hadoop的分布式云计算/云存储方案的研究与设计[ J ].数据通信,2012(5):1013 .
[ 5 ] 陆嘉恒.Hadoop实践[ M ].第2版.北京:机械工业出版社,2014.
[ 6 ] 刘鹏.云计算[ M ] .北京:电子工业出版社,2011.
责任编辑(责任编辑:杜能钢)




随便看

 

科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。

 

Copyright © 2004-2023 puapp.net All Rights Reserved
更新时间:2025/3/15 13:42:32