您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 基于Hadoop的云平台设计与实现
龙源期刊网的云平台设计与实现作者:秦东霞韦家骥齐迎春来源:《智能计算机与应用》2016年第04期摘要:Hadoop是一个免费、可靠、高效、可扩展的开源云平台,允许在分布式集群上处理大数据的软件框架。本文以Hadoop为基础,详细介绍了虚拟机VMware、JDK、CentOS、Hadoop等技术。在伪分布式环境下搭建虚拟云平台,经过测试,本系统能正常运行MapReduce化的分布式程序,本文还针对用户权限、路径配置和使用SSH服务程序等问题进行了详细的阐述,为基于Hadoop的云平台研究和应用程序开发提供了基础。关键词:Hadoop;MapReduce;云平台搭建中图分类号:TP393文献标识码:AAbstract:Hadoopisafree,reliable,efficientandscalableopensourcecloudplatform,whichallowsthesoftwareframeworktodealwithlargedataonadistributedcluster.BasedonHadoop,thispaperintroducesthetechnologyofCentOS,JDK,HadoopandVMwareinvirtualmachine.Virtualcloudplatformisbuiltinthepseudodistributedenvironment.Aftertesting,thesystemcanruntheMapReduceorienteddistributedprogram.ThispaperalsoprovidesabasisfortheresearchoftheSSHbasedcloudplatformandapplicationprogrambasedonHadoop.Keywords:Hadoop;MapReduce;Constructthecloudcomputingplatform0引言随着互联网时代信息与数据的飞速增长,科学、工程和商业等研究领域均需要处理大规模以及超大规模的数据,对计算能力的需求已远远超出自身系统架构的承载运行限度。云计算是分布式计算、并行处理和网格计算的进一步发展,是基于互联网的计算,能够向各种互联网应用提供基础架构服务、硬件服务、软件服务、平台服务、存储服务,这就意味着计算可以作为一种商品实现流通,不仅使用方便,费用也相对低廉[1]。此外,由于传统并行编程模型应用的设计局限,客观上需要一种容易学习、使用和部署的编程框架,而Hadoop就是一个优秀的大数据处理框架,性能表现高效稳定,非常适合选择作为云计算的基础架构。1相关技术介绍Hadoop是一个可运行在大量低配硬件设备上的分布式计算框架,并且能为其中的应用程序提供可靠的接口,构建扩展性好、可靠性强、具有良好可移植性的分布式系统[2]。Hadoop云平台主要包括:HDFS分布式文件系统、MapReduce编程模型、HBase数据库和Zookeeper分布式应用程序协调服务。这刚好与Google核心技术GFS、MapReduce和BigTable类似。龙源期刊网分布式文件系统可以将信息存储在具有不同节点的设备中。具体由2部分组成,分别是:名称节点NameNode和数据节点DataNode,NameNode相当于管理者,全面管理集群内的DataNode,当用户发送请求信息后,NameNode会根据情况指定存储到哪些DataNode上,而并不存储真实的数据。原理工作流程如图1所示。HDFS在执行读或写的过程中,NameNode和DataNode通过心跳信息保存通信,确定DataNode不是宕机。如果发现DataNode停止了工作,就将该DataNode上的数据备份到其他节点中,并读取该备份数据,这就是HDFS的容错机制[3]。1.2MapReduce编程模型MapReduce提供了一个并行处理大数据集的编程模型,由Map和Reduce这2个阶段组成。只需编写map和reduce2个函数,即可完成简单的分布式程序的计算。map函数以key/value对作为输入,产生另外一系列key/value对作为中间输出写入本地磁盘[4]。MapReduce框架会自动将这些中间数据按照键值进行聚集操作,并且键值相同(可设定聚集方法,默认是对键值进行哈希取模)的数据将统一交送reduce函数进行转换处理。reduce函数以key和其对应的value列表作为输入,经合并value相同的值后,产生另外一系列key/value对作为最终输出写入文件系统,如图2所示。1.3HBase数据库HBase建立在HDFS上,介于NoSQL和RDBMS之间,仅能通过主键(rowkey)和主键的range来检索数据,理论上能够处理单行事务,但可通过Hive支持来实现多表join等复杂操作,主要用来存储非结构化和半结构化的数据。与Hadoop一样,HBase主要依靠横向扩展,通过不断增加相对廉价的商用服务器,来提升和改善计算和存储能力[5]。HBase以表的形式存储数据,Hbase表可以有上亿行,上百万列,面向列(族)的存储和权限。表有行和列组成,列划分为若干个列族(rowfamily)控制,对于为空(null)的列,并不占用存储空间。1.4Zookeeper的工作机制ZooKeeper是一个开放源码的分布式应用程序协调服务,其中包含一个简单的原语集。基于此,分布式应用程序可以实现同步服务,配置维护和命名服务等[6]。Zookeeper是Hadoop的一个子项目。在分布式应用中,由于不能有效地使用锁机制,以及基于消息的协调机制不适合在某些场合中使用,因此需要有一种可靠的、分布式的、可扩展的、可配置的协调机制来统一系统的状态,Zookeeper应运而生。其完整工作机制如图3所示。2集群搭建龙源期刊网云平台的搭建是一个复杂的过程,包括虚拟机和操作系统的安装,JDK的安装,设置SSH免密码登录、Hadoop的安装、Zookeeper的安装、HBase的安装、Hadoop文件系统格式化以及集群部件的启动和关闭命令设置等步骤。2.1虚拟机、操作系统安装先安装VMware10.0虚拟机,宿主机是Win8.1系统,由于Hadoop在类Unix系统上才能运行,为此则选择了Linux系统和免费开源版的CentOS6.5版本。2.2JDK的安装安装时,需要下载JDK1.7版本的包,解压到指定目录,同时修改properties文件配置系统环境变量,最后可以执行一次source功能,使得无需再重启机器时环境变量就能生效。2.3设置SSH免密码登录添加一个命名为Hadoop用户,集群运行和通信均使用该用户。如果不进行SSH免密码登录,每次通信都要输入密码,这将是一个灾难性的操作[7]。而后修改hosts的文件,把集群IP地址和主机名对应起来,切换到Hadoop用户,执行ssh-keygen生成公钥与私钥,此处先不相互复制公私,虚拟机设有一克隆命令,把相同的信息都可以克隆出来,为此需要预先完成Hadoop的安装。2.4Hadoop的安装Hadoop的安装分为以下几个步骤:1)首先配置Master机器,下载Hadoop的安装包,解压到/usr/目录下,文件夹重命名为Hadoop。2)修改配置文件,首先修改Hadoop-env.sh,添加Hadoop需要的JDK信息,配置JAVA_HOME环境变量、为Hadoop的JVM指定某特征选项、指定日志文件所在的目录路径以及master和slave文件的位置等。3)修改core-site.xml,定义系统级别的参数,可作用于全部进程及客户端,Hadoop.tmp.dir属性用于定义Hadoop的临时目录,其默认为/tmp/Hadoop-${username}。HDFS进程的许多目录默认均在此目录中。需要注意的是,要保证运行Hadoop进程的用户对其具有全部访问权限。4)修改hdfs-site.xml文件,对HDFS进行如下参数设置:文件副本的个数、块大小及是否使用、强制权限等,同时将replication默认值设置为3,如果不修改,datanode少于3台就会报错。龙源期刊网)修改mapred-site.xml配置jobTracker的端口。6)编辑masters文件,masters用于指定辅助名称节点(SecondaryNameNode)的主机名或主机地址,这个文件只需在master主机上实现其编辑[8]。接着克隆另外3台slave,克隆完毕之后,把每个slave关联的主机名修改成相对应的slave,在此还要注意,/etc/下的hosts文件对应的Ip要改成各个节点的Ip地址,并重新生成各个节点的公匙和私匙,再利用scp命令把公匙分发给各个节点。2.5Zookeeper的安装下载Zookeeper-3.4并将其解压到/usr/下,修改权限,动态设定/zookeeper/conf下的zoo.cfg配置文件。将Zookeeper目录分别复制到各个slave中,创建/Hadoop/zookeeper目录,并在该目录下创建myid[6]。2.6HBase的安装下载HBase-0.94.8.tar.gz,并解压到/usr/中,同时使用mv修改其目录名为HBase,修改conf/HBase-env.sh,添加HBase所需要的jdk信息,Hadoop的配置文件路径和Zookeeper的信息[6]。修改HBase-site.xml,把/usr/Hadoop/conf/hdfs-site.xml文件拷贝至HBase的conf文件夹下,把/usr/zookeeper/conf/zoo.cfg拷贝至/usr/Hadoop/conf/文件夹下,在conf/regionservers中添加所有的datanode节点—所有的slave删除/HBase-0.94.8/lib/Hadoop-core-1.0.3.ja,拷贝/Hadoop/lib/Hadoop-1.0.3-core.jar到/HBase/lib/。在此基础上,把配置完成的HBase拷贝到其它节点。2.7Hadoop文件系统格式化与普通文件系统一样,HDFS文件系统需要首先格式化,创建元数据数据结构以后才能使用。命令如下:[Hadoop@MasterHadoop]$bin/Hadoopnamenode–format。2.8集群各个部件的启动命令Hadoop的启动命令是/bin/start-all.sh,Zookeeper的启动命令是zkServer.shstart。通过jps命令可以看到,此时多个进程QuorumPeermain;HBase的启动命令是/start-HBase.sh;通过jps命令查看,此时又多了一个进程HMaster。2.9集群的关闭命令关闭集群是有顺序的,关闭HBase后,再关闭Zookeeper,而后则关闭Hadoop。具体地,关闭HBase时,进入bin目录下,执行HBase-stop.sh处理关闭Zookeeper;进入bin目录下,执行zkServer.shstop操作,关闭Hadoop;进入bin目录下,执行stop-all.sh再测试一次jps,发现只有jps一个进程,这样集群就成功实现了关闭[9]。龙源期刊网,file2.txt,2个文件分别写入一段字符,在HDFS上创建输入文件夹input,上传file1.txt和file2.txt到input文件夹,复制Hadoop中的WordCount实例代码,在eclipse中执行RunonHadoop命令,运行结果如图4所示。4结束语本文介绍了Hadoop的文件系统、编程模型、H
本文标题:基于Hadoop的云平台设计与实现
链接地址:https://www.777doc.com/doc-4035631 .html