电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

Hadoop云计算

来源:开心麻花作者:开心麻花2025-09-181

Hadoop云计算(精选8篇)

Hadoop云计算 第1篇

1 什么是云计算

云计算是一种基于因特网的超级计算模式, 在远程的数据中心里, 成千上万台电脑和服务器连成一片电脑云, 甚至可以让你体验每秒10万亿次的计算能力, 拥有这么强大的计算能力可以模拟核爆炸、预测气候变化和市场发展趋势。用户通过电脑、笔记本、手机等方式接入数据中心, 按自己需求进行运算。

云计算分为狭义的云计算和广义的云计算, 狭义的云计算是指IT基础设施的交付和使用模式, 指通过网络以按需、易扩展的方式获得所需的资源, 这些资源包括硬件、平台和软件。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的, 并且可以随时获取, 按需使用, 随时扩展, 按使用付费。这种特性经常被称为像水电一样使用IT基础设施。广义的云计算是指服务的交付和使用模式, 指通过网络以按需、易扩展的方式获得所需的服务。这种服务可以是IT和软件、互联网相关的, 也可以是其他的服务。

2 什么是Hadoop

Hadoop的核心设计就是HDFS和Map Reduce, HDFS是一个分布式文件系统, Map Reduce则是用于并行处理大数据集的软件框架。因此, Hadoop是一个能够对大量数据进行分布式处理的软件框架, 它是一种技术的实现。

Hadoop是Apache基金会下的一款开源软件, 它实现了包括分布式文件系统HDFS和Map Reduce框架在内的云计算软件平台的基础架构, 并且在其上整合了包括数据库、云计算管理、数据仓储等一系列平台, 其已成为工业界和学术界进行云计算应用和研究的标准平台。Hadoop现在已经广泛应用于包括国外的Face Book, Twitter, Yahoo!等公司, 国内的百度, 阿里等, Hadoop运行在数以千计的服务器和数以万计的CPU的集群上。

通俗的说Hadoop是一套开源的、基础是Java的、目前能够让数千台普通、廉价的服务器组成一个稳定的、强大的集群, 使其能够对pb级别的大数据进行存储、计算。已经具有了强大稳定的生态系统, 也具有很多使用的延伸产品。比如做查询的Pig, 做分布式命名服务的Zoo Keeper, 做数据库的Hive等。

基于Hadoop, 用户可编写处理海量数据的分布式并行程序, 并将其运行于由成百上千个结点组成的大规模计算机集群上。Hadoop已被全球几大IT公司用作其“云计算”环境中的重要基础软件, 如:雅虎正在开发基于Hadoop的开源项目Pig, 这是一个专注于海量数据集分析的分布式计算程序。亚马逊公司则基于Hadoop推出了Amazon S3, 提供可靠, 快速, 可扩展的网络存储服务。因此, Hadoop是云计算中一部分技术的实现, 而不是全部。

3 关于Map Reduce

Map Reduce是Google提出的一个软件架构, 用于大规模数据集 (大于1TB) 的并行运算。当前的软件实现是指定一个Map (映射) 函数, 用来把一组键值对映射成一组新的键值对, 指定并发的Reduce (化简) 函数, 用来保证所有映射的键值对中的每一个共享相同的键组。

在函数式语言里, map表示对一个列表 (List) 中的每个元素做计算, reduce表示对一个列表中的每个元素做迭代计算。它们具体的计算是通过传入的函数来实现的, map和reduce提供的是计算的框架。不过从这样的解释到现实中的Map Reduce还太远, 仍然需要一个跳跃。再仔细看, reduce既然能做迭代计算, 那就表示列表中的元素是相关的, 比如我想对列表中的所有元素做相加求和, 那么列表中至少都应该是数值吧。而map是对列表中每个元素做单独处理的, 这表示列表中可以是杂乱无章的数据。这样看来, 就有点联系了。在Map Reduce里, Map处理的是原始数据, 自然是杂乱无章的, 每条数据之间互相没有关系;到了Reduce阶段, 数据是以key后面跟着若干个value来组织的, 这些value有相关性, 至少它们都在一个key下面, 于是就符合函数式语言里map和reduce的基本思想了。

4 Hadoop和云计算的关系

Hadoop是一个能够对大量数据进行分布式处理的软件框架, 它是一种技术的实现, 是云计算技术中重要的组成部分, 云计算的概念更广泛且偏向业务而不是必须拘泥于某项具体技术, 云计算的存在只是一种新的商业计算模型和服务模式。

5 用Hadoop来做什么

⑴数据备份/文件归档, 这利用了hadoop海量数据的存储能力。⑵数据仓库/数据挖掘:分析web日志, 分析用户的行为 (如:用户使用搜索时, 在搜索结果中点击第2页的概率有多大) 。⑶搜索引擎:设计hadoop的初衷, 就是为了快速建立索引。⑷云计算:中国移动的大云, 就是基于hadoop的。⑸研究:hadoop的本质就是分布式计算, 又是开源的。

参考文献

[1] (美) Tom White.Hadoop权威指南 (第2版) .清华大学出版社, 2011.7.

[2] (美) Chuck Lam.Hadoop实战.人民邮电出版社, 2011.10.

Hadoop云计算 第2篇

关键词:HADOOP校园云存储 海量数据

1 云计算概述

回顾IT的历史发展,从1960年到现在,集成电路计算机出现、微型计算机出现、20年前Internet网络普及、10年前GOOLE、AMAZON等开创了云计算的商业化应用,实现了It能力的远距离传输。现在云计算的应用是否会成为人类社会的核心力量,有了云计算的人类社会将会有怎么样精彩的生活。云计算(cloud computing)是以Internet为基础,在此基础上会增加、使用相关服务,其中关键技术就是利用互联网提供动态易扩展的虚拟化资源。云计算是分布式计算、并行计算、效用计算、网络存储、负载均衡等传统计算机和网络技术发展融合的产物。

2 Hadoop计算模型

Hadoop是Apache软件基金会组织下的一个开源项目,Hadoop以分布式计算为基础提供可靠、扩展的软件。降低硬件成本是Hadoop最大的一个特色,Hadoop可以利用普通的硬件架设大规模的集群系统,Hadoop是现在云计算、大数据存储最热门的方法之一。Hadoop由分布式文件系统HDFS(Hadoop Distributed File System)和映射/简化引擎(MAPReduce)两个部分构成。

2.1 分布式文件系统(HDFS) HDFS一个是基于Hadoop框架中Java编写的分布式、可扩展的文件系统。每个Hadoop实例都有一个单独的命名空间节点(singlenamenode),该命名空间节点是HDFS文件系统的中心,它保存着系统中所有文件的目录树,可以追踪HDFS集群中数据保存的位置,但它并不保存数据本身。数据节点的集群组成HDFS集群。通常一个数据节点就是一个计算机,它来管理对应节点的存储。依靠TCP/IP协议文件中的数据被分割成很多块并存放在每个数据节点中,它们互相之间通过远程过程调用(RemoteProcedure Call)来相互调用数据。

2.2 映射/简化引擎(Map Reduce) 映射/简化引擎是一种数据集中并行计算的编程模型,由Map映射和Reduce简化两个部分组成。Map是指映射函数,它在不改变原数据的基础上调用映射函数达到对相关数据进行指定操作。每个数据元素都是独立的,映射后数据不会有所改变,并且创建了一个新的数据集来保存答案。例如,将所有同学期末成绩和平时成绩进行百分比计算,那么可以定义一个“百分比计算的”映射函数,将结果重新计算出来。Reduce是化简操作,它转换数据在内存中的表现形式(marshaling列集),它可以简化大规模数据操作,例如,计算所有同学的总分,可以将相邻数据进行相加赋值最后简化为一个数据。MapReduce提供数据冗余和高容错性。

3 系统分析与设计

3.1 系统原型设计 硬件部署:Hardoop采用版本0.16.3.tar.gz版本,操作系统使用Ubuntu10.10,共使用5台台式机,ip地址规划分配为192.168.3.1,192.168.3.2,192.

168.3.3,192.168.3.4,192.168.3.5.

在hadoop@master下安装JDK安装包master(64位),在/et/profile下配置环境变量,同时安装slave机(32位)安装包和环境变量,安装路径与Master完全一样。通过测试后进行配置NameNode和DataNode.utuntu10.10系统默认的hosts文件内容如下:127.0.0.1localhost,192.168.3.1为master,192.168.3.2,192.168.3.3,192.168.

3.3,192.168.3.4,192.168.3.5为slave.安装配置Ssh。首先在每台主机安装Ssh。然后在每台主机夹下新建一个名为.ssh的目录。在Master机上生成密钥对。随后将密钥复制到所有Slave机上,以实现master无密码访问Slave机。然后,进入所有机器的.SSH目录,修改每台机器上改变authorized_keys文件许可。安装为hadoop后,配置hadoop环境变量在/etc/profile下添加export HADOOP_

HOME="/home/hadoop/hadoop-0.20.203.0",export PATH

="$PATH:$HADOOP_HOME/bin",修改HADOOP-ENV.SH,# export JAVA_HOME=/usr/lib/j2sdk1.5-sun为:#

The java implementation to use.Required.export JAVA_

HOME="/usr/lib/jvm/jdk1.6.0_29".mapred-site.xml和hdfs

-site.xm也要进行配置,最后使用scp命令将hadoop安装目录从master机复制到所有slave机上。配置完毕之后测试使用hadoop,格式化hdfs,并可以启动hadoop。

3.2 系统设计 ①本系统设计主要使用BROWSER/SERVER三层架构模式,采用web页面访问向系统服务器发送请求,服务器对用户进行身份验证通过HTTP协议把所需的信息返回客户端,客户端接受信息,将它显示在浏览器上。管理可以通过执行相应的所有应用程序与底层集群进行连接,然后集群负责处理用户提交的数据并返回为Web,Web再传回客户端。最后hadoop集群作为系统的底层基础设施为系统提供计算和存储。②用户管理页面:用户管理页面,账号密码用户登录凭证,用户身份注册,信息维护和权限管理。③任务维护模块:用户任务请求,资源申请,信息反馈,返回处理结果。④资源管理模块:包括资源上传和下载。⑤底层hadoop集群管理:周期动态的显示集群工作状态和任务工作进度。

4 总结

HADOOP云计算平台缓解了学校服务器不能定时更新和查询的问题。通过HADOOP基础部署和系统的设计实现了一个用户处理海量数据的校园云计算系统。系统的功能目前比较单一,计算和存储还需要紧密耦合,这个是我们下面将来要解决的问题之一。

参考文献:

[1]Hadoop官方网站.2010. http://hadoop.apache.org.

[2]HDFS Architecture 2010. http://hadoop.apache.org/common/docs/current/hdfs_desing.html.

[3]曹风兵等.2011年《基于Hadoop的校园云计算系统》计算机系统应用.

基金项目:

基于Hadoop云计算模型探究 第3篇

云计算(Cloud Computing)是一种新兴的商业计算模型。它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和各种软件服务。云计算是网格计算(Grid Computing)、分布式计算(Distributed Computing)、并行计算(Parallel Computing)、效用计算(Utility Computing)、网络存储(Network Storage Technologies)、虚拟化(Virtualization)、负载均衡(Load Balance)等传统计算机技术和网络技术发展融合的产物。

它的数据存储是采用分布式存储方式实现的,这就可以保证高可靠性、高可用性和经济性,数据存储的高可靠性是采用冗余存储的方式来保证的,用可靠的软件来弥补硬件的不足,从而提供廉价可靠的海量分布式存储服务和计算服务。另外,数据存储技术必须具有高吞吐率和高传输率的特点,这样云计算系统就可同时满足大量用户的需求,才能为大量用户并行地提供服务。云计算的数据存储系统最著名的是谷歌研发的非开源系统GFS(Google File System)和Hadoop开发团队开发的开源系统HDFS(Hadoop Distributed File System)。

1. Map Reduce编程模型

并行计算技术是云计算的核心技术,也是最具战性的技术之一。Map Reduce是Google公司的核心计算模型,名字源于函数式编程模型中的两项核心操作:Map和Reduce操作。Map操作独立地对每个元素进行操作,且操作没有副作用;Reduce操作对N个Map结果进行归约,也就是Map[1,2,,N]的结果是Reduce操作的参数。在一个指令式语言中求值顺序是确定的,每个函数都有可能会变更或依赖于外部状态,所以必须有序地执行这些函数。在Map Reduce编程模型中,只要没有函数修改或依赖于全局变量,N个Map操作的执行顺序可以是无序的,这种特性使得Map Reduce模型适合于对大规模数据进行并行处理。

在Map Reduce计算模型中,有两个关键过程:映射过程Map和聚集过程Reduce。因此需要用户提供两个关键函数,映射(Map)函数和聚集(Reduce)函数,这两个函数对一组输入的键值对(key/value)进行计算,得出另一组输出键值对,即有:

在不同的应用中,Map和Reduce的输入参数和输出结果是不相同的。Map的输入参数in_key和in_value,给定了Map函数要处理的是哪些数据。每个Map函数计算完毕后输出结果一组键/值对,它们是经过Map任务执行完成后所返回的中间结果。系统在执行Reduce任务之前,先检查前面Map任务返回的中间结果,根据Key值进行分类处理,把相同key值所对应的value合并在一起,把它们送给同一个Reduce任务进行处理,从而可以看出,Reduce的输入参数是(key,[value1,,valuem])。Reduce任务主要对这些有着相同key值所对应的value值进行归并处理,在Reduce任务执行完成后输出(key,final_value)的结果。一个key值对应了一个Reduce任务,把所有Reduce任务执行的结果合并连接在一起就形成了最终的输出结果。

典型的Map Reduce计算过程如图1。

(1)用户程序调用Map Reduce库,把输入的大数据集分成M个数据片段;

(2)由master分配程序进行分配,有M个Map任务和R个Reduce任务将被分配,master将一个Map任务或Reduce任务分配给一个空闲的工作站点;

(3)被分配了Map任务的工作站点读取一个数据片段,从中解析出key/value对,用户自定义的Map函数接受一个输入的key/value对值,然后产生一个中间key/value对值的集合;

(4)Map Reduce库把所有具有相同中间key值I的中间value值集合在一起后传递给reduce函数;

(5)用户自定义的Reduce函数接受一个中间key的值I和相关的一个value值的集合。Reduce函数将这些value值合并成一个较小的value值的集合。正常的,每次Reduce函数调用只产生0或1个输出value值。可以通过一个迭代器把中间value值提供给Reduce函数,这样就可以处理无法全部放入内存中的大量的value值的集合。

2. Hadoop框架的工作机制

Hadoop是Apache软件基金会(Apache Software Foundation)组织下的一个开源项目,提供分布式计算环境下的可靠、可扩展软件。Hadoop平台拥有自己的分布式文件系统(HDFS),具体实现采用Map Reduce模式。Hadoop采取文件备份的方式,为每份数据制作若干拷贝,拥有较高的安全可靠性。作为一个开源的分布式系统平台,Hadoop除了拥有开源所带来的更新速度快、应用广泛等优势外,还具有以下一些其它分布式云计算框架所共有的优点:高度的可扩展性、经济实用性、高速有效性、高可靠性。

HDFS采用Master/Slave架构,一个HDFS集群由一个命名节点(Name Node)和一组数据节点(Data Node)组成。命名节点是一个中心服务器,负责管理文件系统的名字空间(Name Space)以及客户端对文件的访问。在集群系统中,一般在一个节点上运行一个数据节点,负责管理它所在节点上的数据存储,并负责处理文件系统客户端的读写请求,在命名节点的统一调度下进行数据块的创建、删除和复制。Hadoop还实现了Google的Map Reduce分布式计算模型,Map Reduce把应用程序的总任务分割成许多子任务,每个子任务可以在任何集群节点(数据节点,通常也作为计算节点)上并行处理。HDFS创建了多份数据块(Data Blocks)的副本(Replicas),以保证各个子任务节点计算的可靠性(Reliability)。由于采用了分布式文件系统和Map Redace模型,因此Hadoop框架具有高容错性及对数据读写的高吞吐率,能自动处理失败节点。图2是Hadoop集群系统架构的示意图。

由图2可知,HDFS是由一个命名节点和多个数据节点组成的。数据节点存储着文件系统的元数据,它的作用就像是文件系统的总指挥,维护文件系统命名空间、规范客户对于文件的存取和提供对于文件目录的操作;数据节点中存储着实际的数据,负责管理存储节点上的存储空间和来自客户的读写请求。数据节点也执行块创建、删除和来自命名节点的复制命令。

3. 算法实例

3.1 实验环境

(1)硬件环境配置

根据上面分析的Hadoop架构体系,Hadoop集群可以分成两大类角色:Master和Slave,前者主要配置Name Node和Job Tracker节点;后者配置Data Node和Task Tracker节点。例如在我们的实验中,配置Hadoop集群一共有4台PC,一台部署为Name Node和Job Tracker,另外两台部署为Data Node和Task Tracker。使用的操作系统为Fedora 8Linux,Java环境为jdk-1.6.0-14,Hadoop版本为Hadoop0.20,并在各节点的/etc/hosts文件中添加节点IP及对应机器名。

如果该台机器作Name Node节点用,则需要在hosts文件中加上集群中所有机器的IP地址及其对应的机器名,例如在我们的实验中,Name Node节点的/etc/hosts文件内容如下:

如果该台机器作Data Node节点用,则只需要在hosts文件中加上本机IP地址和Name Node节点的IP地址,如:

(2)建立SSH受信证书

在Hadoop启动以后,Namenode通过SSH(Secure Shell)来启动和停止各个节点上的各和守护进程,这就需要在节点之间执行指令的时候是不需要输入密码的方式,所以我们需要配置SSH使用无密码公钥认证的方式。

(3)Hadoop平台搭建

(1)将Hadoop部署至其它主机。

(2)在Hadoop上格式化一个新的分布式文件系统。

(3)在Hadoop上启动Hadoop进程。

(4)启动完成之后,运行ps-ef命令应该可以看到Hadoop上启动了2个新的java进程(Name Node,Job Tracker),同时,我们可以到Hadoop2等机器上用ps–ef查看,这些机器上应该已经启动了2个新的java进程(Data Node,Task Tracker)。

(4)运行Hadoop程序

1)编写完成Map任务的程序,处理输入的Key Value对,输出中间结果。

2)编写完成Reduce任务的程序,对中间结果进行规约,输出最终结果。

3)定义Input Format和Output Format,Input Format的主要职责是验证输入的类型是否符合配置类型;Output Format的职责是验证输出目录是否已经存在和输出结果类型是否符合配置类型,如果都成立,则输出Reduce汇总后的结果。

3.2 实验结果分析

本实验所用的节点均为同等配置,各节点名分别为master,slave01,slave02,s1ave03,master作为Name Node和Job Tracker也参与了计算,所以它也作为Data Node和Task Tracker,而slave01-slave03既作为Data Node也作为Task Tracker。在搭建的Hadoop集群系统上运行了本文开发的并行随机数发生器,实验中线性比作为一个重要的衡量标准,定义如公式3-1:

结果数据如表1所示。

从上表的分析表明:

(1)单机计算数据规模较大时,算法性能呈现明显的下降趋势。随着输入数据的成倍增长,单机提取算法处理这些输入数据所消耗的时间以更快的速度增长。这是因为单机上随着输入数据的增长,机器上内存等资源消耗过大,致使机器性能明显下降,因而出现算法性能变“慢”的现象。

(2)输入数据量小时,Hadoop集群上并行化算法的处理效率低于单机上非并行化算法的处理效率。这是因为Hadoop集群的启动和交互需要消耗一定的资源。随着输入数据量的增大,Hadoop集群运行速度比单机运行速度明显加快。这是因为随着输入数据量的增大,集群启动与交互的消耗相对于实际业务逻辑的消耗比率大大降低,但是单机资源消耗过快,出现速度瓶颈。

(3)由此可见,Map Reduce模型适用于解决具有高度内在并行性的数据密集型并行计算问题。用户只需分解出单个节点应完成的计算单元,按传统串行算法写出计算函数和数据收集函数,在Hadoop平台下就可方便地进行并行计算。Hadoop平台无需用户掌握复杂的消息传递机制的并行程序设计方法,显著简化了并行计算的软件开发难度,有助于普及并行计算。

4. 结束语

本文介绍了云计算的定义和关键技术,对云计算环境下的Map Reduce并行编程模式进行了研究,分析了Map Reduce的编程思想,编程原理和步骤。研究了在架构Hadoop集群的数据分配方式,提出一种基于计算比率的数据分配机制,以提高Map Reduce在架构Hadoop集群中的性能。研究为数据挖掘领域相关算法提供了可行的Map Reduce化方案,实验结果证明了上述方案的切实有效性。

参考文献

[1]WeissA.Computing inClouds[J].ACM Networker,2007,11(4):18-25.

[2]Buyya R,Yeo C S,Venugopal S.Market-Oriented Cloud Computing Vision,Hype,and Reality for Delivering IT Services as Computing Utilities[C]∥Proceedings of the200810th IEEE International Conference on High Performance Computing and Communications.[s..l]:[s.n.],2008:5-13.

[3]Hadoop[EB/OL].http://hadoop.apache.org/core/,2008.12.16.

[4]万至臻.基于MapReduce模型的并行计算平台的设计与实现[D].杭州:浙江大学计算机科学与技术学院,2008.

[5]朱珠.基于Hadoop的海量数据处理模型研究和应用[D].北京:北京邮电大学,2008.

Hadoop云计算 第4篇

2000年, Saa S兴起。2004年, Map Reduce论文由Google提出并发布。Google提出Hadoop平台采用集群系统的开源项目, 主要研究HDFS和Map/Reduce。Hadoop随即成了一款非常优秀的分布式系统基础架构。2006年, “消费云”计划[1]Google发布出来。2009年Google公司推出的Google Chrome浏览器也依托于云计算平台建立起来。随后, 虚拟计算环境联盟由VMware与思科联合建立起来。VMware也推出云操作系统VMware v Sphere 4。Google又升级了Google Chrome浏览器推出Chrome OS操作系统。2010年, HP和微软联合提供完整的云计算解决方案。

2 云计算下Hadoop平台搭建与实践

目前有很多开源云计算平台:Abi Cloud、Hadoop、Eucalyptus、Mongo DB、Enomalism、Nimbus等。其中Hadoop是完全模仿Google体系架构做的一个开源项目, 主要包括Map/Reduce分布式框架和HDFS文件系统。Hadoop平台作为云计算中一种海量数据处理时最优秀的平台, 能够减少很多开销和时间。

2.1 Hadoop概述

Hadoop是由Apache基金会开发的一种分布式系统基础架构[2], 利用分布式集群的威力高速运算和存储。Hadoop主要有两个主要部分:Map/Reduce框架和分布式文件系统HDFS (Hadoop Distributed File System) 。Hadoop可以在低端硬件上构建云计算环境的基础服务和接口API (Application Program Interface, 应用程序编程接口) 。主要特点是:扩容能力 (Scalable) 、成本低 (Economical) 、高效率 (Efficient) 、可靠性 (Reliable) 。Hadoop采用Java开发可以架设在很多操作系统中。

HDFS具有高容错性和平台迁移两个主要特点[3]。HDFS在处理高维数据时可以一次读取多次存储。它是主从 (Master/Slave) 结构, 一个HDFS集群包括2个节点Name Node (管理文件的命名空间和调节客户端访问文件的主服务器) 和数据节点Data Nodes (管理存储) 。Name Node以及Data Node具有内置的Web服务器, 能检测到当前集群的状态信息。

Map/Reduce是一个用于处理海量数据的分布式计算框架[4]。这个框架解决了诸如数据分布、工作调度、容错、机器间通信等复杂问题, Map/Reduce采用“分而治之”的思想, 将计算任务抽象成Map和Reduce两个计算过程, “分散运算—合并结果”。Map/Reduce任务把输入数据分割成不相关的若干键/值对 (Key/Value) 集, 由多个Map任务来并行地处理。Map/Reduce会对Map的输出进行排序, 将一个键 (Key) 的值 (Value) 组合在一起作为Reduce任务的输入, 由Reduce任务计算出最终结果并输出。基本流程如下:

2.2 Hadoop平台安装与配置

准备多台服务器, 安装5台虚拟机VMware机。统一将VMware Workstation安装在D盘, 分配磁盘空间时统一分配。一台作为Master机, 另四台台作为Slave机。新建虚拟机, 加载Linux系统Ubuntu的iso镜像文件, 并在VMware环境下安装Ubuntu系统。软件统一安装在虚拟机系统VMware上, Linux系统采用Ubuntu, jdk使用jdk1.6.0版, Hadoop使用hadoop-0.20.2版本。第一台服务器作为Master机, 主机名:master.hadoop.com, IP:10.0.0.1, 第二~五台的配置是一样的作为Slave机, 主机名分别为Slave01~Slave04:IP地址:10.0.0.2~5。在liunx系统配置yum源便于安装软件包, 安装java的软件包, 建立master机和slave机之间的信任关系, 添加一个运行hadoop的普通用户。以超级用户身份打开environment文件, 在其中添加两个环境变量:CLASSPATH及JAVA_HOME并设置路径值。在每台机器上新建一个超级用户, 取名均为Hadoop, 并建立SSH Key用来远程登录。配置$HADOOP_HOME/conf/路径下的3个文件hadoop-env.sh (导入JAVA_HOME环境变量值) 、core-site.xml (指定默认文件系统名) 和mapred-site.xml (tracker默认路径端口) 。SSH建立Master与Slave之间信任关系并安装工具软件配置、修改和测试yum源, 具体操作如下:

root创建一个目录/mnt/redhat用于挂在linux的系统盘, 命令如下:

在所有机器上创建用户:#useradd boys和#passwd boys。在Master机器上的Boys账户下执行命令:$ssh-Keygen-t rsa。在/home/boys/.ssh目录下查看密钥对id_rsa., id_rsa.pub, 其中前者为私钥, 后者为公钥。然后将id_rsa.pub的内容复制到/home/boys/.ssh/authorized_Keys文件中并执行命令:$cp id_rsa.pub authorized_Keys。若机器中有authorized_Keys这个文件则执行命令:

$cat id_rsa.pub﹥﹥authorized_Keys, 就可将id_rsa.pub中内容加在authorized_Keys这个文件末尾。进入到Salve机中用命令$ssh-Keygen-t rsa产生密钥, 把刚产生的.ssh目录的权限由775改为711, 使用命令:chmod 711~/.ssh。把Master机.ssh目录下的id_rsa.pub的内容拷贝到Salve机.ssh目录下的authorized_Keys文件末尾中。做法类似第二步。然后把Authorized_Keys的访问权限修改成644。现在由Master机到Slave机的认证关系建立好了, 可以在Master机器下用Ssh命令访问Slave机器进行测试, 若访问成功且不需要密码, 从Master访问Slave机的信任关系就设置好了。同理可以设置从Slave机访问Master机的信任关系。

2.3 Hadoop集群的搭建和部署

对于Hadoop不同的系统会有不同的节点划分方式。Name Node和Job Tracker部署时根据自己的需要, 几台都行。Master机 (主服务器) 主要部署Name Node或Job Tracker, 其它的是Slave机 (从服务器) 。我们这里将Name Node和Job Tracker部署在一台机器上, Date Node和Task Tracker的部署在其余的四台机器上, 详细的配置:boys的用户下解压Hadoop安装包, 使用最近的安装包hadoop-1.0.2.tar.gz, 把安装包解压到当前的目录下:$tar–zxvf/home/boys/hadoop-1.0.2.tar.gz–O./hadoop。

编辑/home/boys/hadoop/conf/hadoop-env.sh文件, 把JAVA_HOME设置为Java安装的跟路径, 文件内容如下:

配置所有机器的主机名和IP地址之间能正确的解析, 用root账户修改每台机器的/etc/hosts文件, 修改如下:

在所有的机器上配置Hadoop, 主要是配置*.xml文件, 具体操作如下:

在master.hadoop.com机器上编辑/home/boys/hadoop/conf/目录下的core-site.xml、hdfs-site.xml、mapred-site.xml、masters、slaves文件。

把Hadoop安装文件复制到其他机器上:

$scp–r/home/boys/hadoop slave01~04.hadoop.com:/home/boys/

编辑所有机器的conf/hadoop-env.sh文件, 将JAVA_HOME变量设置成为各自的java安装的根目录。

Hadoop运行格式化分布式文件系统, 操作的命令代码:

Hadoop云计算平台, Hadoop平台安装、配置和测试, 搭建linux系统, 为用户在处理海量数据时算法的测试提供了良好的集成环境。

参考文献

[1]Barroso LA, Dean J, Holzle U.Web search for a planet:The Google cluster architecture[J].IEEE Micro, 2003, 23 (2) :22-28.

[2]Chunru Dong, Patrick P K Chan, Wing WY ng, et al.2-Stage instance selection algorithm for KNN based on Nearest unlike Neighbors[J].International Conference on Machine Learning and Cybernetics (ICMLC 2010) , 2010, 1:134-140.

[3]Jeffrey Dean, sanjay Ghemawat.Map Reduce:Simplified Data Processing on Large Clusters Communications of the ACM[J].2008, 9:107-113.

Hadoop云计算 第5篇

随着信息技术的不断发展, 海量文本信息数据集已经达到TB和PB, 甚至更大规模, 传统的数据处理分析架构已经不能适应当前海量文本数据存储和处理分析的应用需求, 因此如何能够有效完成对海量文本数据的处理分析成为一个具有挑战性的问题[1]。这一问题最主要的解决方法就是对数据进行分布式并行处理, 然而基于高性能计算集群的MPI并行计算技术在海量数据处理方面也遇到了I / O等网络带宽瓶颈问题[2], 并且可靠性和可扩展性较差。云计算为这一问题提供了新的解决思路, 开源Hadoop云计算平台提供了一个可靠的共享存储和分析系统, 分布式文件系统HDFS实现存储, 分布式并行处理框架MapReduce实现分析处理[1], 从而为大规模非结构化的文本数据的分布式并行处理提供了新的技术途径。

1 Hadoop云计算平台介绍

云计算的基本原理是将计算、存储及软硬件等服务分布在大量非本地的计算机构成的资源池上, 用户通过网络获得相应的服务, 从而有效提高资源利用率, 更好利用现有信息系统的硬件能力[3]。开源云计算平台Hadoop最核心的技术就是分布式并行计算框架MapReduce和分布式文件系统HDFS, 分别代表了云计算最基本的计算能力和存储能力[4]。

HDFS在集群上实现了分布式文件系统, 在Ma- pReduce任务处理过程中提供了文件操作和存储等支持, MapReduce在集群上实现了分布式计算和任务处理, 二者相互作用, 完成了Hadoop集群的主要任务。

Hadoop作为开源的云计算模型, 它模仿和实现了Google云计算的主要技术, 并且使用Java语言编写, 可移植性强, 为个人和企业进行云计算方面的研究和应用奠定了基础, 基于Hadoop云计算平台, 使用MapReduce模型进行大规模数据分析目前已经成为一个重要的研究领域。

1. 1 HDFS及HBase概念

分布式文件系统HDFS作为Hadoop云计算平台的核心技术之一, 是Hadoop框架的底层基础。 HDFS采用了主从 ( Master / Slave ) 结构模型, 一个HDFS集群是由一个Name Node和若干个Data Node组成的。其中Name Node作为主服务器, 管理文件系统的命名空间和客户端对文件的访问操作; 集群中的Data Node管理存储的数据。HDFS允许用户以文件的形式存储数据。Name Node执行文件系统的命名空间操作, 比如打开、关闭、重命名文件或目录等, 也负责数据块到具体Data Node的映射。Data N- ode负责处理文件系统客户端的文件读写请求, 并在Name Node的统一调度下进行数据块的创建、删除和复制工作。

HBase是一个在HDFS上开发的面向列的分布式数据库, 是为大规模的可伸缩的分布式处理设计的。HBase自底向上地进行构建, 能够简单地通过增加节点来达到线性扩展, 适合于实时的随机读/写超大规模数据集。因此, 可以用HBase存储检索索引, 提高实时检索的反馈响应时间。

1. 2 MapReduce基本原理

MapReduce作为云计算平台的基础计算模型[5], 是一种在超大集群下处理海量数据的分布式并行编程模式, 这种分布式并行计算框架特别适用于处理单一功能性的大型数据, MapReduce的优势就在于处理大规模数据集, 随着海量数据处理分析需求的出现, MapReduce已经成为使用最为广泛的分布式并行编程模型之一。

MapReduce分布式并行计算框架为海量数据的分析和处理提供了解决方案, 存储与计算结合, 能够有效应对海量数据的读写瓶颈问题。同时, MapRe- duce将简单的业务逻辑从复杂的实现细节中分离出来, 屏蔽底层的实现细节, 只需要考虑如何使用MapReduce模型描述具体问题, 然后通过框架提供的简单而强大的接口实现大规模的计算任务分布和并行的执行[6], 提高对海量数据的处理和分析能力。

在Hadoop的体系结构中, 基于MapReduce软件框架可以将任务分发到由上千台商用机器组成的集群上, 并以一种高容错的方式并行处理大量的数据集, 实现Hadoop的并行任务处理功能[7]。数据集的处理过程被MapReduce高度抽象为2个函数: Map函数和Reduce函数, MapReduce计算模型的核心部分就是这2个函数, Map负责把任务分解成多个子任务, Reduce负责把分解后多个子任务的处理结果汇总起来, 而这2个函数的具体功能由用户根据需要自己设计实现[8]。

2基于MapReduce框架的海量文本处理

2. 1文本预处理

中文文本处理要解决的首要问题是中文分词, 中文分词是进行中文信息检索的基础[9]。选用NLPIR开源中文分词开发包, NLPIR的前身是ICTCLAS, 是由中科院计算所开发的中文分词软件。 分词预处理的关键就是如何将NLPIR中文分词开发包在Hadoop云计算环境中进行部署运行, 本文的演示系统采用Eclipse工具进行开发, 因此将中文分词开发包在环境各节点进行部署的最有效简洁的方法就是将NLPIR开发包的jar包解压缩, 然后将其与开发的源程序的类文件打包到同一个jar包中, 这种分发实现方法的可移植性更强[10]。

中文分词作为建立索引的前置预处理步骤, 如果将其以单独的MapReduce作业实现虽然也可以达到目的, 但是由于增加了MapReduce任务, 将增加整个作业的处理周期, 而且还会增加很多I/O操作, 因而处理效率不高。因此, 可以将中文分词预处理实现为一个辅助的Map过程, 将其与建立索引的核心Map和Reduce过程合并为一个链式的MapRe- duce任务, 从而完成整个作业。

2. 2文本索引的MapReduce实现

文本索引的建立是文本处理的核心环节, 传统内存式的索引建立方法, 由于内存大小的限制, 并不适用于与大规模的数据集的处理。对于海量规模数据集, 数据大都存储在分布式的集群上, 面对大量用户的亚秒级处理响应需求, 超越了单机的处理能力[11]。一个较好的解决办法就是通过集群进行分布式检索, 这就要求建立分布式索引。

MapReduce非常适合处理功能单一的批处理操作, 而建立索引的主要任务, 如词条化、归一化和建立倒排表等, 都是逻辑上比较简单的批出来操作, 所以, 索引的建立很适合采用MapReduce编程模型来实现, 与此同时, 通过MapReduce建立的分布式索引存放在分布式系统上, 为后续的分布式检索提供方便。

建立倒排索引表是索引的关键问题, 将经过文本预处理Map辅助任务后的输出作为索引建立MapReduce任务的Map输入, 建立索引的Map任务的输出是每个中文词汇的字符串, 索引词与文档的相关度以及在文档中的位置。索引词字符串和其在文档中的未知可以通过分词软件包获取, 索引词与文档的相关度计算不是本文的重点, 不做详细描述。 建立索引过程的Reduce任务负责将Map任务的输出信息进行整合, 从而形成倒排索引表文件。 MapReduce建立倒排表的流程如图1所示。

2. 3文本检索的实现

文本的中文分词预处理及建立索引的最终目的都是为文本检索服务, 性能良好的文本检索才能充分实现数据的信息价值。海量的文本数据集规模不合适使用RDBMS, 而检索的查询延时决定了不能直接使用HDFS, HBase就成了最佳选择。HBase使用HDFS的方式与MapReduce使用HDFS的方式截然不同, 在HBase中, 数据文件在启动中就被打开, 并在处理过程中始终保持打开状态, 因此更适合于实时检索。

通过编写MapReduce作业将索引文档加载到HBase分布式数据库, 在实验中, 并没有直接将原始的文档导入HBase, 因为系统不是从网络上不间断的获取数据, 而是每隔一段时间才会增加文本数据集, 所以对索引文档进行检索, 这可以进一步提高检索的效率。

3实验环境及结果分析

3. 1实验环境

硬件环境: DELL Power Edge R710服务器3台, 每台服务器2颗4核2.4 Ghz CPU, 32 G内存, 300 G × 2 SAS硬盘; DELL商用台式机1台, 用作管理端。

软件环境: 3台DELL服务器安装Citrix Xen- Serve云计算环境虚拟服务器生成软件, 3台服务器构成一个资源池; 管理端台式机安装Citrix Xen- Center用于管理3台服务器。

通过Citrix Xen软件在3台服务器各生成5台虚拟机, 虚拟机操作系统为Cent OS Linux, 并在操作系统中安装部署Hadoop 0. 2, 安装配置HBase, 15台虚拟机成为一个Hadoop集群。系统架构如图2所示。

3. 2实验分析

实验在15台虚拟机集群上搭建Hadoop云计算平台, 实现了对1 G的文本数据集的分布式并行处理, 文本数据集中包含1 001 278篇文档, 文档大小在0. 8 K ~ 2 K之间, 主要是从互联网采集新闻报道, 存储于HDFS系统中, 完成了基于MapReduce原理的文本预处理和建立索引倒排表, 通过分布式数据库HBase达到实时检索需求。

利用MapReduce软件框架实现文本预处理和建立索引表的分布式并行化, 与传统的并行处理方法相比, 既能缩短并行程序的开发周期, 又加快了对同一数据集的处理时间响应; 以分布式数据库HBase存储关键词提高了检索响应效率。同时, 实验中分别开启5台、10台、15台虚拟机, 处理数据集的时间线性减少, 表明Hadoop集群对大规模数据集的处理具有可伸缩性。

4结束语

Hadoop体系结构的特点决定了它是为实现MapReduce机制而存在, 因此基于Hadoop云计算平台进行海量文本数据集的处理, 并行设计中的各种复杂问题, 如分布式存储、工作调度、负载均衡、容错处理以及网络通信等, 均由MapReduce框架负责处理, 并行设计大大简化。通过将传统架构的文本处理方法进行MapReduce分布式并行化的移植实现, 文本处理速度得到很大提高。因此, 采用Hadoop云计算框架可以有效解决海量文本数据集带来的存储与密集计算问题。将Hadoop云计算平台应用于海量数据处理是很好的选择。

参考文献

[1]WHITE T.Hodoop权威指南[M].周敏奇, 译.北京:清华大学出版社, 2011.

[2]郑文武, 李先绪, 黄执勤.云计算中的并行计算技术分析[J].电信科学, 2011 (12) :31-37.

[3]王鹏.云计算的关键技术与应用实例[M].北京:人民邮电出版社, 2010.

[4]李珺.基于Hadoop云计算模型探究[J].信息安全与技术, 2011 (6) :30-32.

[5]YANG Gai-zhen.The Application of MapReduce in the Cloud Computing[J].International Symposium on Intelligence Information Processing and Trusted Computing, 2011:154-155.

[6]李成华, 张新访, 金海, 等.MapReduce:新型的分布式并行计算编程模型[J].计算机工程与科学, 2011, 33 (3) :129-131.

[7]DUAN Ai-Ling.Research and Application of Distributed Parallel Search Hadoop Algorithm[C]∥International Conference on Systems and Informatics, 2012:2462-2464.

[8]郎为民, 杨德鹏.云计算中的MapReduce技术[J].电信快报, 2012 (3) :3-4.

[9]陈勇, 张佳骥, 戎纪光.面向机构的智能文本分析系统的研究[J].无线电工程, 2007, 37 (2) :31-33.

[10]张研, 许云峰, 张立全.基于云计算的中文分词研究[J].河北科技大学学报, 2012, 33 (3) :266-268.

Hadoop云计算 第6篇

1 云计算的关键技术

1.1 数据存储技术

云计算采用分布式存储的方式来存储大量用户数据和资料, 且通过冗余存储的方式保证数据存储安全性, 规避数据泄露和丢失, 一定程度保证了较高的可用性、经济性等, 且能有效满足不同用户群体的需求, 提供更加优质的服务。

1.2 数据管理技术

云计算系统能对大量数据进行处理和存储, 通过分布式存储方式, 极大程度上避免用户数据和资料丢失, 安全可靠性得到充分发挥。云计算系统收集大量数据和资料并进行分析, 为用户提供更加优质的服务, 来满足用户日益增长的需要[2]。云计算系统最大的特点是大量数据存储, 而数据管理技术要求统一收集和整理大量数据, 读取后进行分析, 由此看来, 云计算中数据管理是一种读优化的数据管理, 其必然朝着未来主流数据存储系统趋势发展。

1.3 编程模型技术

云计算大量数据的传输和存储功能, 自其诞生以来就广受欢迎, 并在其发展过程中, 不断创新和优化, 完善云计算系统的各项功能, 以求为用户提供更加优质和完善的服务, 用户以简单的程序模型为基础, 设计简单的程序, 来满足其各项需求[3]。用户为满足自身需求, 采用简单的编程技术是必然选择。而在所有云计算编程模型中, Map Reduce是目前最主流的云计算编程模型, 其可分为Input阶段、Map阶段、Reduce阶段及Output阶段。其中, Input阶段是把大文件分成很多小块, 分别放在不同节点中;Map阶段是在本地节点处理数据;Reduce阶段对Map阶段得出结果进行整理、集合, 汇聚到大数据表中进行处理;Output阶段是输出上一级得到的数据。

2 Hadoop云计算平台的数据挖掘

基于Hadoop的云计算平台的数据挖掘, 在实际应用中取得了较好成效, 主要是以分布存储为基础的云计算系统平台, 利用大量计算机设备集群, 进而形成海量数据的分布存储计算平台, 是一种完全开放源代码的体系结构, 一方面, 不收取相关费用, 完全免费;另一方面, 有助于系统程序的再次开发利用, 定制专属平台。

2.1 Hadoop云计算平台的工作机制

从图1能清晰了解到, Map Reduce整个工作过程大致可以分成10个步骤。第一, 程序员编写Map Reduce程序, 在client中提交作业;第二, Jobclient收到job后, 会与jobtracker联系, 并申请一个job ID;第三, Jobclient收到job ID后, 会把作业送到HDFS的各个Data Node上;第四, Jobclient向jobtracker提交作业;第五, Jobtracker开始初始化工作, 如在内存中建立一系列数据结构来记录job的运行情况等;第六, Jobtracker向HDFS的Name Node询问相关数据存放在哪些文件和Data Node里;第七, Jobtracker和tasktracker每分钟间进行心跳联系, 明确参与计算的tasktracker;第八, Tasktracker从HDFS中取出第1步中由程序员编写的用于处理数据的业务逻辑代码;第九, Tasktracker启动java虚拟机;第十, 开始执行工作。

2.2 Hadoop云平台建设

对云计算平台的数据挖掘设计, 可以采用分层的办法, 来设计看似独立的分层, 实际上是为更容易地对系统进行开发和完善[4]。

第一, 交互层主要是用户和系统间的桥梁, 为用户提供良好的图形界面, 用户能通过系统定制的各项业务, 来满足自身需要, 保存各项数据的输出结果。交互层中主要包括用户管理模块、业务模块、展示模块, 每个模块提供的服务和功能不同, 相互协调, 更加全面的满足用户对业务的需求。

第二, 业务应用层主要通过不同业务之间的逻辑, 对业务流程及时进行调整和控制, 通过数据挖掘办法在不同模块间完成交互层提供的业务需求, 将最终处理的结果返还到交互层。

第三, 数据挖掘平台层是整个系统的核心, 主要是将各项任务并行化, 提交给Hadoop进行计算, 将最终结果返还到应用层。其中包含的模块主要有结果存储模块、数据加载模块及评估模块等, 对所需要的数据进行挖掘、处理和加载, 对产生的模式进行评估。

3 结语

云计算是目前主流的网络数据处理和存储技术, 能以最简单的方式最大化配置所需资源, 而Hadoop云计算平台则是针对大量数据的高效处理, 将数据挖掘并行编程模型化。此系统能有效完成复杂数据的挖掘任务, 以完善计算系统, 为用户提供更加完善的服务。

参考文献

[1]蒋宁, 李文, 李鸿彬.基于Hadoop的云计算辅助教学平台研究[J].中国远程教育, 2012 (9) :79-82.

[2]张学亮, 陈金勇, 陈勇.基于Hadoop云计算平台的海量文本处理研究[J].无线电通信技术, 2014 (1) :54-57.

[3]朱为盛, 王鹏.基于Hadoop云计算平台的大规模图像检索方案[J].计算机应用, 2014 (3) :695-699.

Hadoop云计算 第7篇

(1) 数据存储技术

为保证较高的可用性、可靠性和经济性,云计算采用分布式存储的方式来存储数据,采用冗余存储的方式来保证存储数据的可靠性,满足了大量用户的需求,并为其提供服务。

(2) 数据管理技术

云计算系统对大数据集进行处理、分析并向用户提供高效的服务。数据管理技术必须能够高效地管理大数据集,对海量的数据存储读取后进行分析,云计算中的数据管理是一种读优化的数据管理。

(3) 编程模型技术

为了使用户能轻松的享受云计算带来的服务,让用户能够利用程序模型编写简单的程序来实现用户所要达到的目的,就必须采用编程技术,其中较为流行的云计算编程模型就是MapReduce。

2 Hadoop云计算平台的数据挖掘

Hadoop是以分布存储和并行计算为基础的云计算平台,利用低成本的PC设备组成大型集群,构建下一代高性能的海量数据分布式计算平台,属于完全开放源代码的体系架构,不仅属于完全免费模式,更是便于二次开发和平台定制。其凭借着高容量和低成本的双重优势,已成为大数据行业发展背后的驱动力,是目前应用最广泛的云计算平台,在比如YAHOO、淘宝、FACEBOOK、中国移动、中国电信等均有成功应用。

云计算可以为海量数据处理和分析提供一种高效的计算平台,而基于Hadoop云平台的数据挖掘可以简单理解为将海量数据分解为相同大小、分布存储,然后采用MapReduce模型进行并行化编程。

2.1 Hadoop云计算平台设计思想

充分利用Hadoop的集群特征,将数据挖掘系统中需要的各个模块扩展到Hadoop的各个节点上,利用集群的并行计算和存储功能与数据处理的理论相结合便可以在海量的云中进行数据挖掘,实现数据挖掘的Hadoop云计算平台。

Hadoop是一种分布式系统基础架构,与MapReduce编程模式相结合,用户可以对分布式程序进行开发,对集群快速高效的数据运算和数据存储充分利用。因此,本文想要搭建的Hadoop云计算平台希望在处理数据过程中能体现如下特点:

(1) 在Hadoop的存储和处理过程中,数据可以通过建立多个副本的方式对丢失的或错误的数据进行快速及时的恢复。MapReduce可以将集群的整体最大计算资源进行调用,Hadoop分布式文件系统可调用集群的最大存储资源,根据计算和存储任务来增加集群的节点。

(2) 编程人员不需要关心每处数据的细节,只需将MapReduce作为统一的数据处理接口,用户对处理任务和处理结果的收集过程是透明的。子问题与子问题之间的数据交互可由MapReduce组织管理,在数据处理过程中可以根据节点与数据的特点进行适当修改MapReduce接口来提高数据处理的效率。

(3) Hadoop云平台结合MapReduce改进关联规则的算法,可以实现数据操作并行执行,提高了传统关联算法的效率。

2.2 Hadoop平台组件介绍

Core:分布式系统和通用IO组件和接口 (序列化、JAVA远程调用等) ;

Avro:支持跨语言过程调用,持久数据存储的数据序列化系统;

MapReduce:分布式数据处理模型和运行环境,是Hadoop的关键组成部分;

HDFS:分布式文件系统,是Hadoop强大的另一关键组成部分;

Pig:处理海量数据集的高级编程语言和运行环境,运行在HDFS和MapReduce之上;

Hbase:高性能、高可靠性的分布式开源数据库;

ZooKeeper:提供分布式、高效的协作服务,来构建分布式应用;

Hive:分布式数据仓库,提供类似SQL语言的数据查询;

Chukwa:分布式数据采集和分析系统,使用HDFS存储数据,使用MapReduce输出分析报告。

其中,HDFS和Map Reduce是Hadoop的两大核心。而整个Hadoop的体系结构主要通过HDFS实现对分布式存储的底层支持,并且它会通过Map Reduce来实现对分布式并行任务处理的程序支持。

2.3 Hadoop云平台建设

Hadoop框架的MapReduce计算模型为海量数据的复杂计算问题提供了简单的编程模型。

2.3.1 MapReduce原理

MapReduce是一种高效的适用于海量数据处理的分布式编程模型。MapReduce的工作过程可以分为两个阶段:Map阶段和Reduce阶段。用户定义一个Map函数来处理原始数据,得到的输出结果是一组键值对 (key/value) ,再定义一个Reduce函数将所有拥有相同key值的中间结果进行合并。

先将输入文件划分为若干相互独立的小任务交给Map函数进行处理,得到一个键值对,中间结果暂存到内存,然后通过Shuffle将Map输出转化为Reduce的输入过程,Map输出的中间结果可以用Hadoop自带的合并器进行初步合并,Map只要有一个任务结束,Reduce就开始复制其输出,这就是Reduce任务的copy阶段,Reduce任务有若干个复制线程,因此可以并行地获取Map输出,所有Map输出被复制期间,Reduce任务进入排序阶段,这个阶段将合并Map输出,维持其按顺序进行排列,这一过程将循环进行。最后是Reduce阶段,直接把数据输入Reduce函数进行合并。

2.3.2 HDFS系统搭建

HDFS是Hadoop框架中的分布式并行文件系统,它实现了数据的分布式存储及管理与高吞吐量访问的功能。

HDFS由一个名字节点NameNode和若干个数据节点DataNode的组成。NameNode负责存储文件系统中的元数据和控制外部客户的访问,DataNode用来存放实际的数据。每个文件都被划分成若干64 M的数据块,这些数据块会被分散地存储到各个DataNode上,HDFS为了保证数据的安全性,还会为数据进行备份,默认情况下,每个数据块会有三个副本分别存放在不同的机器上。用户从NameNode那里获取数据的位置信息后,直接与存放数据块的DataNode进行通信。

2.3.3 基于Hadoop云平台的数据挖掘设计

结合上述的搭建思路与典型的数据模型,采用分层的思想,自上而下每层都透明的调用下层接口,如图1所示。使用分层的方法,使各个层之间变得看似独立,这样更易于系统的扩展与完善。

(1) 交互层:提供系统和用户之间的接口。交互层通过提供具有良好表现形式的图形界面,使得用户可以登录系统定制各种细粒度的业务,进行查看或者保存各种输出结果。

交互层主要包含的模块:

用户管理模块:可以实现用户身份的识别与相应权限的设置,包括用户登录注销等日常管理工作。

业务模块:实现细粒度的用户业务需求的提交,且提交的各种业务通过本模块得到完成。

展示模块:实现用户对业务结果的查看、分析、保存等功能,将系统的返回结果展示给用户。

(2) 业务应用层:在本层中提供了各种业务逻辑并实现了对各种业务流程的控制和调度,通过调用数据挖掘算法层的多个模块完成交互层提交的业务,并返回结果到交互层。也就是说,这一层是对用户提交的业务进行处理、控制与调度。除此,业务应用层还对数据挖掘平台的各个模块的执行进行控制和调度。

业务应用层主要包含的模块:

业务响应模块:对完成业务所需的子业务进行调用和管理,通过调用底层模块完成任务。

工作流模块:对业务状态进行监控和管理,将信息返回给另一模块业务响应模块。

(3) 数据挖掘平台层:本层为业务应用层提供数据挖掘阶段业务流需要的各个模块。这一层是整个系统的核心,主要的任务在于实现各种任务过程中算法的并行化,并将任务提交到Hadoop分布计算层进行运算,并将结果返回给业务应用层。本层具有较细的粒度诸如数据预处理、模式评估、结果展示与数据挖掘等功能的组件。

数据挖掘平台主要包含以下模块:

并行数据挖掘算法模块:是整个系统中最重要的模块,包含了一个能提供各种基于Hadoop进行并行数据挖掘算法的库,可以完成各种数据挖掘的任务。

结果存储模块:相当于知识库,主要存放挖掘产生的各种模式。

数据加载模块:将数据挖掘所需的数据进行注册并存放到系统的HDFS文件系统中。

并行ETL模块:对数据进行预处理,为数据挖掘过程进行数据清理、提取、转换与加载。

模式评估模块:本模块可以被并行数据挖掘模块调用,对产生的模式进行评估。

(4) 分布式计算层:使用Hadoop框架实现集群存储、计算。Hadoop提供了分布式文件系统的运行模式,同时实现了对分布式系统的管理。

3 结语

云计算是一种资源利用模式,能以简便的途径和按需的方式通过网络访问配置并快速部署的计算资源。Hadoop云平台模式可以对海量数据预处理、对海量数据挖掘采用并行算法MapReduce化。其设计了支持复杂数据挖掘任务服务化的中间化系统,最终实现复杂数据分析任务的按需服务。

摘要:通过阐述Hadoop平台下的HDFS分布式文件系统数据存储及处理功能和MapReduce核心架构的数据处理模式, 结合Hadoop云平台数据操作机制, 探讨与分析了基于云计算平台的数据挖掘设计。

关键词:云计算,数据挖掘,Hadoop平台

参考文献

高勋.基于云计算的Web结构挖掘算法研究[D].北京:北京交通大学, 2010:18-19.

姜淼.Hadoop云平台下调度算法的研究[D].长春:吉林大学通信工程学院, 2012:9-13.

Hadoop云计算 第8篇

以往的以物理节点而设立的数据中心正在面临变革, 在上个世纪诞生的被用于大型机的虚拟化技术, 正在被逐渐部署到廉价通用硬件构成的基于X86的PC服务器上。和以往的物理机器不同, 虚拟机中的中间层操作系统和上层的应用不会直接和底层硬件进行交互, 而是需要通过VMM层和hypervisor才能和底层的硬件接触。通过在传统的数据中心中应用虚拟化技术, 能够有效分配计算资源, 催化了云计算服务在今天的广泛应用。本文研究了一个由虚拟机节点和物理机节点混合而成的异构云平台, 并且在平台中实施了Hadoop的性能测试, 分析了Hadoop在物理机和虚拟机混合环境下读写数据的实际性能, 探究了在Hadoop集群中两种节点的性能差别, 并且阐述了接下来需要开展的工作。

2 虚拟化技术和云平台

虚拟化技术能够实现虚拟机从当前的节点上向另一个节点无缝迁移, 同时确保在实际迁移的过程中, 相关机器中的程序还可以正常运行。虚拟化技术会在数据中心形成一个较大的资源池, 这样相关的用户则是根据动态调整, 进行资源的整合。在这个前提下, 如果一个数据中心接入了互联网并且应用虚拟化技术, 就能够为外部用户提供必要的租赁资源服务项目, 也就是公共云服务。早在2006年, 国际上著名的在线商务平台亚马逊公司就研发了弹性云计算服务 (Elastic Cloud computing) , 通过虚拟机来为用户提供数据中心的相关计算资源。用户根据时间的长短和需求的不同来租用计算资源, 并且支付租金。用户则是可以利用互联网将个人数据进行传输, 将其传输到云平台上, 这样将会对最终的结果进行计算。

除了公共云, 云服务也考虑到了数据的可靠性和隐私性, 将一些数据以及应用有效储存在企业的数据中心, 同时对外界进行有效的服务, 对于该服务模式则是为私有云服务。

3 实验异构的平台的设计

3.1 虚拟平台的设计

实验平台主要包括4台PC, 其中包括1台1U尺寸的Dell R410抽屉式服务器, 还有3台是组装机。服务器配置:3块300G的SAS硬盘, 1颗2.13G主频的四核Intel Xeon E5506 CPU, 8G内存;组装机配置:4块容量2T的5900转Seagate SATA硬盘以及1块80GB的Inter固态硬盘, 1颗主频2.8G四核Inter i5 760CPU, 内存8GB。4台机器通过一个24口TP-Link的交换机连接而成, 进而组成一个小型的局域网络。

在软件选择方面, 使用Xen 3.0版本的整体虚拟化方案当作虚拟化软件, 使用1台组装机来建设虚拟机VM, 并且为这台虚拟机配置500GB硬盘空间、7G内存以及4个VCPU, 使其具有和物理节点相同的底层IO资源和计算资源。所有VM运行和物理节点都是Centos 5.5 2.6.18内核的64bits操作系统, 使用0.20.2版本的Hadoop, 块的副本数是3, HDFS中文件块大小是64MB。在Hadoop架构中的Master节点是Dell服务器。Slaves节点是虚拟机VM和2台物理组装机[1]。

3.2 具体实验设计

虚拟化将会导致IO的开销较大, 这样就必须要对Hadoop集群中虚拟机节点和物理机节点等磁盘读写性能进行有效的测试, 从而对其性能进行有效的对照。另外, 对于dd命令来说, 在每次进行设计的过程中, 写入设计的容量为32M。而后连续写入100次, 达到3.2G的总写入数据量。在这个过程中, 同时也要有效保证dd命令的附加参数conv等于fdatasync, 这样将会让最终的数据无法写入到内存缓存就返回, 而是被写入到磁盘中。所有节点都需要连续进行6次速度测试。

为了有效保证磁盘读写性能的真实性, 必须要运用hdparmt命令 (dd命令测试得到的并不是实际的磁盘读速度) 。同时也要对每个阶段进行多次的测试工作, 以此来保证测试结果的稳定性。

现今在Hadoop平台中, 有效运用Test DFSIO和sort这两个典型的benchmark进行平台性能测试。关于Test DFSIO benchmark, 是利用Map Reduce中单个作业的方式来进行HDFS文件系统多文件的读写性能测试。读写每一个文件都是通过单独的map任务来实现。在实验过程中, 设计一次读写文件的容量大小为1000MB, 同时检测map数也就是并发文件数为8、6、3时的集群HDFS IO性能。关于sort benchmark, 是利用HDFS文件系统里的相关二进制数据集来排序, 并且在HDFS系统中写入经过排序的数据集。这里的sort代表在Hadoop中的特殊应用, 具体地说, 是输入数据集记录大小和内容不变, 但是经过洗牌过程后, 每个记录之间的位置根据顺序再次排列。在实验过程中, 首先使用Hadoop中的randomwriter作业来生成2G和27G的两种大小不同的随机二进制文件, 当作sort的输入。首先, 执行sort benchmark (对于27G的数据集) , 而后记录虚拟机节点和物理机节点VMs的reduce和map阶段的实际处理时间, 再连续执行3次Sort benchmark (对于2G的输入文件) 。

4 实验结果分析

4.1 磁盘的读写性能测试

对于Hadoop的数据密集型应用来说, 其中数据的处理性能与相关的底层节点数据读写速度之间存在较大的关系。因此在进行集群性能的测试前, 必须要对每个节点的读写性能进行有效的检测。对于读速度来说, VM在经过一定的预热之后, 其读速度稳定在80MB/s左右, 大概是PMs读速度的75%左右。对于写速度来说, 虚拟机节点VM的性能大大落后于物理机节点PMs, 前者的速度是后者的23%左右。相应的实验结果证明, 读性能的开销要远远小于写性能的开销。在写性能方面, VM和PM的差距较大, 会让应用Hadoop的过程中, 数据写入频率较大[2]。

4.2 HDFS文件系统的吞吐量测试

要想有效对整个集群的IO性能进行检测, 其中最为重要的是吞吐量的指标。在海量数据的应用中, 其底层文件系统必须具备一定的吞吐量, 从而发挥其优点。

在进行实验的过程中, 要对每个阶段的数据量进行有效分配。而且在写数据的执行过程中, Test DFS中的相关任务没有被正常备份执行, 类似于木桶效应, 总的完成时间和写速度最慢的节点的最终完成时间密切相关。虚拟机阶段VM点的写性能不理想, 大约为17MB/S。因此整个集群的吞吐量也和VM节点的写速度相关。实验测得集群的实际写吞吐量在13MB到18MB之间, 这验证了相关的推测。

相应地, 最后一个完成写任务的节点的读速度和集群的读吞吐量密切相关。后续的磁盘读写性能测试结果中, 虚拟机节点VM和物理机节点PMs的读速度平均是80MB/s和110MB/s。而集群的度吞吐量大概在70MB/s左右, 和磁盘的读写性能相符。实验得出, 如果任务数是3, 那么测试吞吐量最小。如果任务数是8, 那么测试吞吐量最大[3]。

4.3 sort benchmark

在实验过程中, 排序随机产生的数据集, 并且记录相应的时间, 因为这是测试大规模分布式、高性能计算系统的核心指标。首先运行数据量为27G的sort benchmark, 实验得出, 如果数据量小, 在内存中进行完整的sort排序过程, 没有产生磁盘往返IO;如果数据量大, 而且内存缓存区不能进行储存, 就会产生大量的磁盘往返IO。物理机节点PMs写速度远远大于虚拟机节点VM写速度, 所以VM在sort阶段需要花费更多时间。为了验证相关的推测, 又执行了数据量为2G的sort benchmark, 重复三次执行, 实验得出, 在sort阶段, VM和PMS的执行时间基本没有差别 (处理时间都是0) 。

5 结语

随着Map Reduce在处理密集型数据方面的广泛应用以及云计算服务的全面流行, 怎样在云平台上应用Map Reduce来处理云平台中的大规模数据已经成为了一项研究热点。本文研究了一个由虚拟机节点和物理机节点混合而成的异构云平台, 并且在平台中实施了相关的基于Hadoop的性能测试, 其中包括各节点的HDFS文件系统吞吐量和读写性能, 还有sort benchmark (基于Map Reduce) , 进而分析了虚拟机的应用所导致的性能测试中的各种问题。希望能够为Hadoop平台的研究者提供有益的借鉴和参考。

摘要:针对当前云服务发展中遇到的数据量急速增加为后台数据中心带来的数据处理问题, 本文实施了Hadoop的性能测试。首先对云计算异构环境的Hadoop性能进行了描述, 其次对Hadoop集群中两种节点的性能差别进行了分析, 并给出了实验异构的平台的设计和实验结果。

关键词:云计算,异构环境,Hadoop

参考文献

[1]张密密.Map Reduce模型在Hadoop实现中的性能分析及改进优化[D].成都:电子科技大学, 2010.

[2]邓自立.云计算中的网络拓扑设计和Hadoop平台研究[D].合肥:中国科学技术大学, 2009.

[3]张涛.基于网格计算经济模型的资源调度算法研究[D].无锡:江南大学, 2006

Hadoop云计算

Hadoop云计算(精选8篇)Hadoop云计算 第1篇1 什么是云计算云计算是一种基于因特网的超级计算模式, 在远程的数据中心里, 成千上万台电...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部