基于Hadoop的云平台设计与实现

来源 :智能计算机与应用 | 被引量 : 0次 | 上传用户:hmilymemo
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:Hadoop是一个免费、可靠、高效、可扩展的开源云平台,允许在分布式集群上处理大数据的软件框架。本文以Hadoop为基础,详细介绍了虚拟机VMware、JDK、CentOS、Hadoop等技术。在伪分布式环境下搭建虚拟云平台,经过测试,本系统能正常运行MapReduce化的分布式程序,本文还针对用户权限、路径配置和使用SSH服务程序等问题进行了详细的阐述,为基于Hadoop的云平台研究和应用程序开发提供了基础。
  关键词:Hadoop;MapReduce;云平台搭建
  中图分类号:TP393 文献标识码:A
  Abstract:Hadoop is a free, reliable, efficient and scalable open source cloud platform, which allows the software framework to deal with large data on a distributed cluster. Based on Hadoop, this paper introduces the technology of CentOS, JDK, Hadoop and VMware in virtual machine. Virtual cloud platform is built in the pseudo distributed environment. After testing, the system can run the MapReduce oriented distributed program. This paper also provides a basis for the research of the SSH based cloud platform and application program based on Hadoop.
  Key words:Hadoop;MapReduce;Construct the cloud computing platform
  0 引言
  随着互联网时代信息与数据的飞速增长,科学、工程和商业等研究领域均需要处理大规模以及超大规模的数据, 对计算能力的需求已远远超出自身系统架构的承载运行限度。云计算是分布式计算、并行处理和网格计算的进一步发展,是基于互联网的计算,能够向各种互联网应用提供基础架构服务、硬件服务、软件服务、平台服务、存储服务,这就意味着计算可以作为一种商品实现流通,不仅使用方便,费用也相对低廉[1]。此外,由于传统并行编程模型应用的设计局限,客观上需要一种容易学习、使用和部署的编程框架,而Hadoop就是一个优秀的大数据处理框架,性能表现高效稳定,非常适合选择作为云计算的基础架构。
  1相关技术介绍
  Hadoop是一个可运行在大量低配硬件设备上的分布式计算框架,并且能为其中的应用程序提供可靠的接口,构建扩展性好、可靠性强、具有良好可移植性的分布式系统[2]。Hadoop云平台主要包括:HDFS分布式文件系统、MapReduce编程模型、HBase数据库和Zookeeper分布式应用程序协调服务。这刚好与Google核心技术GFS、MapReduce和BigTable类似。
  1.1分布式文件系统HDFS
  Hadoop分布式文件系统可以将信息存储在具有不同节点的设备中。具体由2部分组成,分别是:名称节点NameNode和数据节点DataNode,NameNode相当于管理者,全面管理集群内的DataNode,当用户发送请求信息后,NameNode会根据情况指定存储到哪些DataNode上,而并不存储真实的数据。原理工作流程如图1所示。
  HDFS在执行读或写的过程中,NameNode和DataNode通过心跳信息保存通信,确定DataNode不是宕机。如果发现DataNode停止了工作,就将该DataNode上的数据备份到其他节点中,并读取该备份数据,这就是HDFS的容错机制[3]。
  1.2 MapReduce 编程模型
  MapReduce提供了一个并行处理大数据集的编程模型,由Map和Reduce这2个阶段组成。只需编写map 和reduce 2个函数,即可完成简单的分布式程序的计算。map函数以key/value 对作为输入,产生另外一系列key/value 对作为中间输出写入本地磁盘[4]。MapReduce框架会自动将这些中间数据按照键值进行聚集操作,并且键值相同(可设定聚集方法,默认是对键值进行哈希取模)的数据将统一交送reduce函数进行转换处理。reduce函数以key和其对应的value列表作为输入,经合并value相同的值后,产生另外一系列key/value 对作为最终输出写入文件系统,如图2所示。
  1.3 HBase数据库
  HBase建立在HDFS上,介于NoSQL和RDBMS之间,仅能通过主键(row key)和主键的range来检索数据,理论上能够处理单行事务,但可通过Hive支持来实现多表join等复杂操作,主要用来存储非结构化和半结构化的数据。与Hadoop一样,HBase主要依靠横向扩展,通过不断增加相对廉价的商用服务器,来提升和改善计算和存储能力[5]。HBase以表的形式存储数据,Hbase表可以有上亿行,上百万列,面向列(族)的存储和权限。表有行和列组成,列划分为若干个列族(row family)控制,对于为空(null)的列,并不占用存储空间。
  1.4 Zookeeper的工作机制
  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.2 JDK的安装
  安装时,需要下载JDK1.7版本的包,解压到指定目录,同时修改properties文件配置系统环境变量,最后可以执行一次source功能,使得无需再重启机器时环境变量就能生效。
  2.3 设置SSH免密码登录
  添加一个命名为Hadoop用户,集群运行和通信均使用该用户。如果不进行SSH免密码登录,每次通信都要输入密码,这将是一个灾难性的操作[7]。而后修改hosts的文件,把集群IP地址和主机名对应起来,切换到Hadoop用户,执行ssh-keygen生成公钥与私钥,此处先不相互复制公私,虚拟机设有一克隆命令,把相同的信息都可以克隆出来,为此需要预先完成Hadoop的安装。
  2.4 Hadoop的安装
  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台就会报错。
  5)修改mapred-site.xml 配置jobTracker的端口。
  6)编辑masters文件,masters用于指定辅助名称节点(SecondaryNameNode)的主机名或主机地址,这个文件只需在master主机上实现其编辑[8]。接着克隆另外3台slave,克隆完毕之后,把每个slave关联的主机名修改成相对应的slave,在此还要注意,/etc/下的hosts文件对应的Ip要改成各个节点的Ip地址,并重新生成各个节点的公匙和私匙,再利用scp命令把公匙分发给各个节点。
  2.5 Zookeeper的安装
  下载Zookeeper-3.4并将其解压到/usr/下,修改权限,动态设定/zookeeper/conf下的zoo.cfg配置文件。将Zookeeper目录分别复制到各个slave中,创建/Hadoop/zookeeper目录,并在该目录下创建myid[6]。
  2.6 HBase的安装
  下载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.7 Hadoop文件系统格式化
  与普通文件系统一样,HDFS文件系统需要首先格式化,创建元数据数据结构以后才能使用。命令如下:[Hadoop@Master Hadoop]$ bin/Hadoop namenode –format。
  2.8 集群各个部件的启动命令
  Hadoop的启动命令是/bin/start-all.sh,Zookeeper的启动命令是zkServer.sh start。通过jps命令可以看到,此时多个进程QuorumPeermain;HBase的启动命令是/start-HBase.sh;通过jps命令查看,此时又多了一个进程HMaster。
  2.9 集群的关闭命令
  关闭集群是有顺序的,关闭HBase后,再关闭Zookeeper,而后则关闭Hadoop。具体地,关闭HBase时,进入bin目录下,执行HBase-stop.sh处理关闭Zookeeper;进入bin目录下,执行zkServer.sh stop操作,关闭Hadoop;进入bin目录下,执行stop-all.sh再测试一次jps,发现只有jps一个进程,这样集群就成功实现了关闭[9]。   3 集群测试
  在本地创建2个文件file1.txt,file2.txt,2个文件分别写入一段字符,在HDFS上创建输入文件夹input,上传file1.txt和file2.txt到input文件夹,复制Hadoop中的WordCount实例代码,在eclipse中执行Run on Hadoop命令,运行结果如图4所示。
  4结束语
  本文介绍了Hadoop的文件系统、编程模型、HBase的安装、Zookeeper的安装以及国内外研究应用情况,其中详细设计了Hadoop集群的搭建过程,包括Hadoop文件系统HDFS、计算框架MapReduce编程、Hadoop生态系统相关组件的安装、运用虚拟机技术在linux操作系统上搭建Hadoop集群等,旨在剖析云计算平台构建可能用到的技术,为企业构建公有云和私有云提供技术参考。当然本系统也有一些不足之处,如集群功能简单等,这些都需要在进化的学习和研究过程中不断深化。
  参考文献
  [1] Konstantin Shvachko, Hairong Kuang, Sanjay Radia, et al.The Hadoop Distributed File System[Z].Sunnyvale,California USA,IEEE 2010: 1-10.
  [2] 夏大文,荣卓波.Hadoop关键技术的研究与应用[J].计算机与现代化,2013(5):138-141,148.
  [3]NAMJOSHI J, GUPTE A. Service oriented architecture for cloud based travel reservation software as a service[C]//Proc Of IEEE International Conference on Cloud Computing. New York: IEEEComputer Society Press, 2009: 147-150.
  [4] DEAN J, GHEMAWAT S. MapReduce: Simplified data processing on large clusters[C]//Proc. 6Th Symp on Operating System Design and Implementation. New York:ACM Press, 2004: 137-150.
  [5] 田秀霞,周耀君,毕忠勤,等.基于Hadoop 架构的分布式计算和存储技术及其应用[J].上海电力学院学报,2011,27(1):70-74.
  [6] 崔杰,李陶深,兰红星.基于Hadoop 的海量数据存储平台设计与开发[J].计算机研究与发展,2012,49(Suppl.):12-18.
  [7] TAYLOR R C. An overview of the Hadoop /MapReduce /HBase framework and its current applications in bioinformatics [C]//BMC Bioinformatics. Washington: BMC Bioinformatics, 2010:51-57
  [8] 周锋,李旭伟.一种改进的MapReduce 并行编程模型[J].科协论坛(下半月),2009(2):65-66.
  [9] 胡光民,周亮,柯立新.基于Hadoop的网络日志分析系统研究[J].电脑知识与技术,2010,6(22):6163-6164,6185.
其他文献
黔府函[2018]153号遵义市人民政府:你市《关于审批<遵义历史文化名城保护规划(2017-2030)>的请示》(遵府呈[2018]219号)收悉。经研究,现批复如下:一、原则同意《遵义历史文化
目的运用六西格玛管理方法提高ICD编码准确率,为我院精细化管理提供支持。方法应用六西格玛管理体系中的DMAIC模式对ICD编码流程进行分析,找出ICD编码出错关键点,剖析影响ICD
【摘要】“在激烈的国际竞争中,惟创新者进,惟创新者强,惟创新者胜。科学技术推动了生产力的发展和社会的进步。”小学科学作为一门基础性、实践性、综合性的课程,对于培养学生的科学素养、创新精神都具有重要的价值。  【关键词】小学科学课堂 科学素养 敢想勤思敢做  在基础教育过程中,不管是学生科学素养、创新精神和实践能力的形成,还是让学生从孩提时代就具备向书本、向老师、向专家挑战的科学精神和探究能力,最终
贵州省人民政府办公厅文件黔府办发[2018]13号各市、自治州人民政府,贵安新区管委会,各县(市、区、特区)人民政府,省政府各部门、各直属机构:为贯彻省委、省政府决策部署,打
期刊
尽管不少语言教师以其自身的方式诠释着教学方法和教学内容,但是我国外语教育的研究大多着眼于外在的行为方面,而非教师的内在特征及个人风格。本文在相关概念鉴别和区域调查的
<正>黔府函[2017]166号铜仁市人民政府:你市《关于审批铜仁市两河口饮用水水源保护区划分方案的请示》(铜府呈[2017]78号)收悉。经研究,现批复如下:一、原则同意你市两河口集
期刊
黔府办函[2019]82号各市、自治州人民政府,贵安新区管委会,各县(市、区、特区)人民政府,省政府各部门、各直属机构:为落实中央机构改革要求,牢固树立以人民为中心的发展思想,
黔府函[2015]273号黔南布依族苗族自治州人民政府:你州《关于审批黔南州城镇体系规划的请示》(黔南府呈[2015]124号)收悉。经研究,现批复如下:一、原则同意《黔南布依族苗族自治州城镇体系规划(2015—2030年)》(以下简称《规划》)。要深入贯彻落实党的十八大、十八届五中全会、中央城镇化工作会议和省委十一届六次全会精神,牢牢守
简介张冬梅,女,白族,1970年5月出生,中共党员,大学专科,现任宾川冬梅蔬菜水果专业合作社理事长、宾川县宾杰农副产品有限责任公司董事长。先后荣获云南省劳动模范、云南省三
网上教学平台是现代教学的必要组成部分,是高职院校教学模式、人才培养等方面改革的重要载体。本文在文献调研基础上,对国内外典型网上平台进行对比分析;在此基础上,结合高职