



下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1Hadoop简介ApacheHadoop是一款支持数据密集型分布式应用并以Apache2.0许可协议发布的开源软件框架。它支持在商品硬件构建的大型集群上运行的应用程序。Hadoop是根据Google公司发表的MapReduce和Google文件系统的论文自行实现而成。1.1Hadoop基本构成Hadoop是一个能够对大量数据进行分布式处理的软件框架,Hadoop实现了一个分布式文件系统(HadoopDistributedFileSystem),简称HDFS。hadoop的集群是基于master/slave模式Hadoop基本运行结构图如下:其中master和slave1、slave2、slave3、slave4分别为五台主机,NameNode、DataNode等为运行在主机上的进程。进程的作用如下:(一)NameNode是HDFS的守护程序,负责记录文件是如何分割成数据块的,以及这些数据块分别被存到那些数据节点上,主要功能是对内存及I/O进行集中管理(是个单点,发生故障将使集群崩溃)(二)DataNode这个后台程序负责把HDFS数据块读写到本地的文件系统,当客户端要读写某个数据时候,先由NameNode告诉客户端去哪个DataNode进行具体的读/写操作,然后客户端直接与这个DataNode服务器上的后台程序进行通讯,并且对相关的数据块进行读/写操作。(三)SecondaryNameNode:是一个用来监控HDFS状态的辅助后台程序,就像NameNode一样,每个集群都有一个SecondaryNameNode,不接收或记录任何实时的数据变化,但是,他会与NameNode进行通信,以便定期的保存HDFS元数据的快照,如果Name发生问题,SecondaryNameNode可以及时的作为备用NameNode。(四)JobTracker:用来连接应用程序与Hadoop,用户代码提交到集群以后,由JobTracker决定那个文件将被处理,并且为不同的task分配节点,同时,他还监控所有运行的task一旦某个task失败了JobTacker就会自动重新开启task。每个集群只有唯一一个JobTracker,位于Master节点(五)TaskTracker:与负责存储的DataNode结合,JobTracker负责分配Tasker,管理各自节点上的task。每个节点只有一个TaskTracker,但一个TaskTracker可以启动多个JVM,用于并行执行map或reduce任务1.2Hadoop版本演进Hadoop经历了从Hadoop1.x到Hadoop2.x的演变,其中Hadoop1.X中的NameNodes只可能有一个,虽然可以通过SecondaryNameNode与NameNode进行数据同步备份,但是总会存在一定的时延,如果NameNode挂掉,但是如果有部分数据还没有同步到SecondaryNameNode上,还是可能会存在着数据丢失的问题。其架构图如下:Hadoop2相比较于Hadoop1.x来说,HDFS的架构与MapReduce的都有较大的变化,且速度上和可用性上都有了很大的提高,Hadoop2中有两个重要的变更:(1)HDFSNameNodes可以以集群的方式布署,增强了NameNodes的水平扩展能力和可用性;(2)MapReduce将JobTracker中的资源管理及任务生命周期管理(包括定时触发及监控),拆分成两个独立的组件,并更名为YARN(YetAnotherResourceNegotiator)。Hadoop2.x架构图如下:2Hadoop开发环境搭建Hadoop是一个开放源代码的大数据处理平台,既可以在windows系统下运行,也可以在linux系统下运行,但是由于其开源特性及系统性能等方面的原因,目前主要应用是在linux系统下,因此学习使用Hadoop开发,一定要熟悉linux系统的一些必要知识。2.1应用系统之linux系统Linux是一种自由和开放源代码的类UNIX操作系统。Linux本身只是一个内核。在加上用户空间的应用程序之后,成为Linux操作系统。Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU通用公共许可证,任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。大多数Linux系统还包括像提供GUI的XWindow之类的程序。除了一部分专家之外,大多数人都是直接使用Linux发行版,而不是自己选择每一样组件或自行设置。目前常用的Linux发行版本比较多,常用的有:一、RedHat又称为小红帽,在国内,乃至是全世界的Linux用户所最熟悉、最耳闻能详的发行版。目前RedHat分为两个系列:由RedHat公司提供收费技术支持和更新的RedHatEnterpriseLinux,以及由社区开发的免费的FedoraCore。FedoraCore的定位是桌面用户。它的版本更新周期也非常短,仅六个月。因此服务器上大多数不用FedoraCore。适用于服务器的版本是RedHatEnterpriseLinux,而由于这是个收费的操作系统。于是,国内外许多企业或空间商选择CentOS。CentOS可以算是RedHatEnterpriseLinux的克隆版,但它最大的好处是免费!因此目前的服务器便采用的CentOS系统。由于CentOS是开源的,可以到官网去下载安装CentOS系统。目前我们使用的Linux系统也正是CentOS6.5系统。二、Ubuntu系统,这是比较常用的桌面发行版系统,Ubuntu的安装非常的人性化,只要按照提示一步一步进行,安装和Windows同样简便!并且,Ubuntu被誉为对硬件支持最好最全面的Linux发行版之一,许多在其他发行版上无法使用,或者默认配置时无法使用的硬件,在Ubuntu上轻松搞定。并且,Ubuntu采用自行加强的内核(kernel),安全性方面更上一层楼。并且,Ubuntu默认不能直接root登陆,必须从第一个创建的用户通过su或sudo来获取root权限(这也许不太方便,但无疑增加了安全性,避免用户由于粗心而损坏系统)。Ubuntu的版本周期为六个月,弥补了Debian更新缓慢的不足。优点:人气颇高的论坛提供优秀的资源和技术支持,固定的版本更新周期和技术支持,可从DebianWoody直接升级缺点:还未建立成熟的商业模式。Ubuntu系统安装简单,使用界面友好,适合入门使用。三、SUSE是德国最著名的Linux发行版,在全世界范围中也享有较高的声誉。SUSE自主开发的软件包管理系统YaST也大受好评。SUSE于2003年年末被Novell收购。SUSE之后的发布显得比较混乱,比如9.0版本是收费的,而10.0版本(也许由于各种压力)又免费发布。这使得一部分用户感到困惑,也转而使用其它发行版本。但是,瑕不掩瑜,SUSE仍然是一个非常专业、优秀的发行版。优点:专业,易用的YaST软件包管理系统缺点:FTP发布通常要比零售版晚1~3个月。四、DebianGNU/Linux,Debian最早由IanMurdock于1993年创建。可以算是迄今为止,最遵循GNU规范的Linux系统。Debian系统分为三个版本分支(branch):stable,testing和unstable。截至2005年5月,这三个版本分支分别对应的具体版本为:Woody,Sarge和Sid。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而Woody一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。dpkg是Debian系列特有的软件包管理工具,它被誉为所有Linux软件包管理工具(比如RPM)最强大的!配合apt-get,在Debian上安装、升级、删除和管理软件变得异常容易。优点:遵循GNU规范,100%免费,优秀的网络和社区资源,强大的apt-get缺点:安装相对不易,stable分支的软件极度过时在对linux的学习时,初步应该学习linux系统常用的命令。如cd命令、ls命令等,参考网址(/ljianhui/article/details/11100625)对于命令的学习比较有效的方法是自已安装一个linux系统,然后我使用这些命令进行操作。2.2开发IDE之eclipseEclipse是著名的跨平台开源集成开发环境(IDE)。最初主要用来Java语言开发,目前亦有人通过插件使其作为C++、Python、PHP等其他语言的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持,使得Eclipse拥有较佳的灵活性,所以许多软件开发商以Eclipse为框架开发自己的IDE。目前我们是在eclipse集成开发环境下,安装hadoop插件进行对hadoop程序的开发。插件下载时注意下载linux版本的。同时应该熟悉linux的安装命令等。2.3开源hadoop源代码下载由于hadoop是开源平台代码和源程序可以自由下载,官网提供两种源码,一种是源代码主要是未编译的源代码,可以进行源码学习,自行编译等,如hadoop2.6的源代码下载地址:(/dist/hadoop/common/hadoop-2.6.5/hadoop-2.6.5-src.tar.gz)。另一种是编译好的二进制程序,二进制程序可以直接放在系统上使用。如hadoop2.6的二进制程序下载地(/dist/hadoop/common/hadoop-2.6.5/hadoop-2.6.5.tar.gz)。2.4安装hadoop平台环境在centos下安装hadoop平台参考(/install-hadoop-in-centos/)主要步骤包括:(一)创建hadoop用户,创建hadoop用户的命令为useradd,此命令需要有root用户权限(要知道root用户的密码,或者使用su命令进行权限切换)。(二)安装SSH、配置SSH无密码登陆,由于hadoop是分布式平台,所以需要各主机无密码登陆。(三)安装Java环境,这个参考Java安装教程即可,注意配置环境变量。(四)安装Hadoop2.6,目前使用的版本为Hadoop2.6,下载地址如2.3节所示。(五)Hadoop配置文件配置,配置文件的配置参考这个(/yangjl38/article/details/7583374)。2.5安装eclipse开发环境目前用的开发环境是在eclipse下安装hadoop插件,Hadoop插件的安装参考如下网址(/a/1190000002676066),插件安装后需要对主机和端口进行配置,具体看教程。3Hadoop基本模块学习Hadoop2.6项目有四大基本模块,分别是HadoopCommon、HDFS(HadoopDistributedFileSystem)、HadoopYarn云的操作系统、HadoopMapreduce。HadoopCommon:为了支持其他模块的一些公共类,和框架;HDFS(HadoopDistributedFileSystem)Hdfs提供高吞吐量的访问能力,用来存储数据。具有高容错性,高伸缩性的优点,允许用户将hadoop部署在廉价的硬件上,构建分布式系统;HadoopYarn云的操作系统:给部署在yarn上的应用,分配资源,管理资源。(任务调度)job/application调度;HadoopMapreduce:Mapreduce担当并行的计算分析任务。允许用户在不了解分布式系统底层细节的情况下开发并行,分布式的应用程序。Map和reduce,map是映射,reduce是规约。我用自己的理解方式说,Map就是一种映射计算,让我们知道数据块的位置属性等,Reduce就是一种各种数据块分别求和的方式。4Hadoop之HelloWorld通过一个简单的统计输入文本的例子来学习hadoop编程。这个源码实现的功能是统计输入文件中每个单词出现的次数,并且将单词以及这个单词出现的次数写入文件作为输出。源码如下,其中最主要是重新实现了一下标红的两个函数map/reduce函数。同时要学习hadoop特有的类,比如字符串类StringTokenizer,整数类型IntWritable等。这些基础知识的学习的网址(/docs/stable/api/),对源码中重要语句功能添加了注释。注释写在了每行语句的下面。/*****************************************************************************/packagewordcount;importjava.io.IOException;importjava.util.StringTokenizer;importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.Path;importorg.apache.hadoop.io.IntWritable;importorg.apache.hadoop.io.Text;importorg.apache.hadoop.mapreduce.Job;importorg.apache.hadoop.mapreduce.Mapper;importorg.apache.hadoop.mapreduce.Reducer;importorg.apache.hadoop.mapreduce.lib.input.FileInputFormat;importorg.apache.hadoop.mapreduce.lib.output.FileOutputFormat;importorg.apache.hadoop.util.GenericOptionsParser;//以上为导入程序需要用的包和相关类publicclassCWordCount{ publicstaticclassTokenizerMapperextends Mapper<Object,Text,Text,IntWritable>{ privatefinalstaticIntWritableone=newIntWritable(1); //one初始值为1表示单词出现的次数初始为1 privateTextword=newText();publicvoidmap(Objectkey,Textvalue,Contextcontext)//重写了map函数,注意前两个参数和上面Mapper<Object,Text,Text,IntWritable>中前两个类型对应 throwsIOException,InterruptedException{ StringTokenizeritr=newStringTokenizer(value.toString());//value变量存储的是输入文件的内容,要了解StringTokenizer类及成员函数 while(itr.hasMoreTokens()){ word.set(itr.nextToken()); context.write(word,one);//将单词及出现的次数(默认值1)写入上下文 System.out.println("mapmessage:"+word+"/"+one); } } } publicstaticclassIntSumReducerextends Reducer<Text,IntWritable,Text,IntWritable>{ privateIntWritableresult=newIntWritable();publicvoidreduce(Textkey,Iterable<IntWritable>values,Contextcontext)//参数含义key-单词,values是一个整型的数组,里存放了此单词每行出现的次数throwsIOException,InterruptedException{ intsum=0; for(IntWritableval:values){ sum+=val.get();//遍历数组,将这个单词出现的次数求和,最后sum变量存放就是这个单词出现总数 } result.set(sum); context.write(key,result);//将这个单词及出现的次数写入上下文(最后会输出到文件) System.out.println("reducemessage:"+key+"/"+result); } } publicstaticvoidmain(String[]args)throwsException{//main函数中的以下用法一般相对固定,具体含义参考hadoop使用手册 Configurationconf=newConfiguration(); String[]otherArgs=newGenericOptionsParser(conf,args).getRemainingArgs(); if(otherArgs.length!=2){ System.err.println("Usage:wordcount<in><out>"); System.exit(2); } Jobjob=newJob(conf,"wordcount"); job.setJarByClass(CWordCount.class); jo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 租赁合同设计方案
- 长尾医疗市场在2025年医保支付改革中的机遇与挑战报告
- 2025年特色小镇特色小镇生态环保设施资金申请项目评估报告
- 高考录取大学专业协议书
- 花草绿化管理合同协议书
- 济南救护车采购合同范本
- 签定珠宝展活动合同协议
- 电商供应商合同协议模板
- 自愿现金赠与协议书模板
- 网约车替班司机合同范本
- 负压吸引器的使用课件
- 食品安全员考试题库带答案
- DB37-T 3776-2020 社区居家养老服务质量评估规范-(高清版)
- 2009年《四川省建设工程工程量清单计价定额》
- 每日防火巡查情况记录表【范本模板】
- 水利工程管理单位定岗标准(试点)
- 妇幼保健院高危儿童管理方案
- GB∕T 16895.21-2020 低压电气装置 第4-41部分:安全防护 电击防护
- 实验室生物安全手册(完整版)资料
- Soul app用户体验分析市场调研分析报告PPT模板
- 《工程项目成本管控与核算》PPT讲义
评论
0/150
提交评论