您好,欢迎访问三七文档
[安装1]-基础扫盲及准备工作[君三思]2013-2-1如今的Hadoop不仅声名远扬,影响力在apache的开源项目中也占据着头把交椅,国内外已有非常的成功应用。就目前来说,我对Hadoop整个体系连个大概的了解都说不上,个人倒是老早就想深入学习这套体系,本地磁盘上的安装包更是早就下载好了,不过文件保存日期久远的我自己都不好意思看。值此新年伊始,欣喜地看到tigerfish老师第四期hadoop课程开班,我也赶紧报名参与,希望能在tigerfish老师的指导下,专心听课认真做题,争取在课程结业的时候,使自己对hadoop的了解能达到入门的水平。Hadoop如今已经成长为一套体系,包含的组件众多,要学习的知识很多,目前互联网上的各类参考资料更是浩瀚,遇到这种情况很多朋友可能都在苦恼不知道该从何开始。就我来说倒没有这方面的烦恼,从来这么多年,接触的东西也很多,但不管要学习什么,我的学习路径很像那些爱玩游戏的孩子,接触到一个感兴趣的新东西,第一件事并不翻开它的说明书,而是先拿在手里把玩一番,遇着不懂的就去找专门应对方案。等有大致了解之后,再会系统的阅读官方提供的文档。就Hadoop来说,在使用之前我们得首先有一套环境,因此这篇文章就算是我初次接触Hadoop的一个记录吧,先跟三思一起来了解到底什么是hadoop,而后我们再亲自动手,部署一套Hadoop集群出来。0、基础部分扫盲0.0关于Hadoop听说过DougCutting没,听说过Lucene没,听说过Nutch没,什么,都没听过?哎,我真不知道该如何向你解释。GOOGLE听说过没,这个总归有印象了吧。为什么要提GOOGLE呢,按照tigerfish老师所说,Hadoop就是山寨版的GOOGLE搜索。很多朋友都好奇GOOGLE/BAIDU这类搜索引擎,是怎么实现这么高效的查询速度,用的什么数据库等等,GOOGLE当然不会把自己的核心技术全面公开,即使对它最了解的非GOOGLE人士,也只能用连蒙带猜的方式推测,因此能回答这个问题的人怕是不多的。不过我想说的是,HADOOP实现了一套类似GOOGLE的解决方案,如果你了解了它,那么对于前面的问题想必也就有答案了。前面提示的Nutch/Lucene又是怎么回事儿呢,这部分内容暂不多扯,待后面我八卦些小道消息再论。如有素材欢迎提供。0.1关于Hadoop家族Hadoop的核心模块有两个:HDFS(HadoopDistributedFilesystem)和MapReduce,前者提供存储,后者负责计算,可谓珠联璧合,除此之后还有:Hbase:类似GoogleBigTable的分布式列式数据库;Hive:基于Hadoop的数据仓库工具,可以将结构化的数据文件映射成数据库表,并且提供SQL查询功能,能够将SQL语句转换成MapReduce任务运行;Pig:与Hive类似也是基于hadoop的扩展项目,据说本意是为了简化hadoop编程,提供一个高度抽象的数据处理方式,具体能够多么简化我也不知道,有机会接触了再说;ZooKeeper:分布式系统中的资源管理系统,可用于维护集群中的资源调度;其它也许还有,以后必将更多,Hadoop做为Apache基金会的顶级项目,自身也是高速发展。0.2hadoop的体系结构Hadoop集群中从大的粒度来看可以分为两种角色:Master和Slave,其中master又可以分为主master和辅助master,一个节点属于什么角色,是由其提供的服务决定的:主Master:主要提供下列服务:oNameNode:管理HDFS命名空间;oSecondaryNameNode:辅助NameNode,可视为NameNode备份,保存检查点信息,用于快速恢复NameNode;oJobTracker:任务分配器;辅助Master:SecondaryNameNode:Slave:DataNode:HDFS数据存储节点;TaskTracker:任务处理器;1、准备工作正常情况下Hadoop集群是由多个节点组成,每个节点做为其中的一个角色承担不同的任务,比如说某个节点运行namenode,某些节点运行datanode等等,不过,用户也可以将所有的应用都放在一个节点上,这种情况尽管也可以运行,其实就称不上分布式了。可是,这种模式还不算极端,Hadoop还支持一种本地模式。因此归纳一下,Hadoop集群可以分三种部署方式:LocalMode:这种模式不需要守护进程,主要用于开发阶段,本地调试MapReduce程序比较方便,可以采用这种模式,环境部署和维护各方面都简单;Pseudo-distributedMode:看名字就知道了,伪分布式嘛,这种就是前面说的,所有任务都运行在同一个节点上,但是部署的时候还是按照分布式的方式部署,这种模式比较适用个人测试,它对环境的要求会低一些;Fully-DistributedMode:标准模式,本文中的hadoop环境就是基于这种模式部署(一主两从的最小规模);1.1初始化第一个节点Hadoop运行需要JAVA环境,因此首先需要检查系统中是否安装的JavaJDK:[root@hdnode3~]#/usr/local/jdk1.7.0_09/bin/java-versionjavaversion1.7.0_09Java(TM)SERuntimeEnvironment(build1.7.0_09-b05)JavaHotSpot(TM)64-BitServerVM(build23.5-b02,mixedmode)如果没有找到java的话,需要先安装jdk。安装包可以到SUN官网进行下载,或者直接通过yum进行安装,我这里是。编译本地hosts文件:#more/etc/hosts127.0.0.1localhostlocalhost.localdomain::1localhostlocalhost.localdomain192.168.30.203hdnode1192.168.30.204hdnode2192.168.30.205hdnode3创建用户:#useraddgrid#passwdgridChangingpasswordforusergrid.Newpassword:....................解压缩hadoop安装包到指定目录下:#tarxvfz/data/software/hadoop-0.20.2.tar.gz-C/usr/local/不知道哪里下载安装包?这里瞅一瞅。修改文件夹的用户属主:#chowngrid:grid/usr/local/hadoop-0.20.2/-R生成节点间密钥,切换到grid用户下操作:[root@hdnode1~]#su-grid[grid@hdnode1~]$ssh-keygen-trsaGeneratingpublic/privatersakeypair.Enterfileinwhichtosavethekey(/home/grid/.ssh/id_rsa):Createddirectory¨/home/grid/.ssh¨.Enterpassphrase(emptyfornopassphrase):Entersamepassphraseagain:Youridentificationhasbeensavedin/home/grid/.ssh/id_rsa.Yourpublickeyhasbeensavedin/home/grid/.ssh/id_rsa.pub.Thekeyfingerprintis:b6:17:4b:7a:e1:7d:04:e6:01:49:bc:61:72:fb:b6:f3grid@hdnode1Thekey¨srandomartimageis:+--[RSA2048]----+|oo.||.*.||+++||ooo||S+...||.==o.||o=....||oo.||oE|+-----------------+而后将公钥信息保存到authorized_keys文件中:[grid@hdnode1~]$cat~/.ssh/id_rsa.pub~/.ssh/authorized_keys注意修改authorized_keys文件权限为600,否则节点间无密码访问仍有可能失败。配置grid用户环境变量:[grid@hdnode1~]$vi~/.bash_profile增加下列内容:exportJAVA_HOME=/usr/local/jdk1.7.0_09exportHADOOP_HOME=/usr/local/hadoop-0.20.2PATH=${JAVA_HOME}/bin:${HADOOP_HOME}/bin:$PATH:$HOME/bin1.2初始化第二和第三节点在hdnode2和hdnode3节点上分别重复上面的步骤。1.3配置节点间无密码访问现在咱们先将hdnode2和hdnode3两个节点的公钥信息全部输出到hdnode1的authorized_keys文件中:[grid@hdnode1~]$sshhdnode2cat~/.ssh/id_rsa.pub~/.ssh/authorized_keysTheauthenticityofhost¨hdnode2(192.168.30.204)¨can¨tbeestablished.RSAkeyfingerprintis2d:e3:a1:b8:7e:5e:06:ae:04:55:73:73:13:24:94:c8.Areyousureyouwanttocontinueconnecting(yes/no)?yesWarning:Permanentlyadded¨hdnode2,192.168.30.204¨(RSA)tothelistofknownhosts.grid@hdnode2¨spassword:[grid@hdnode1~]$sshhdnode3cat~/.ssh/id_rsa.pub~/.ssh/authorized_keysTheauthenticityofhost¨hdnode3(192.168.30.205)¨can¨tbeestablished.RSAkeyfingerprintis2d:e3:a1:b8:7e:5e:06:ae:04:55:73:73:13:24:94:c8.Areyousureyouwanttocontinueconnecting(yes/no)?yesWarning:Permanentlyadded¨hdnode3,192.168.30.205¨(RSA)tothelistofknownhosts.grid@hdnode3¨spassword:修改认证密钥文件的权限为只有属主用户可读写:[grid@hdnode1~]$chmod600.ssh/authorized_keys然后将authorized_keys文件复制到其它节点,直接执行scp命令就可以:[grid@hdnode1~]$scp~/.ssh/authorized_keyshdnode2:/home/grid/.ssh/authorized_keysgrid@hdnode2¨spassword:authorized_keys100%11821.2KB/s00:00[grid@hdnode1~]$scp~/.ssh/authorized_keyshdnode3:/home/grid/.ssh/authorized_keysgrid@hdnode3¨spassword:authorized_keys100%11821.2KB/s00:00接下来,如果有兴趣的话可以在各节点试一下ssh连接其它节点,应该不需要输入密码了:[grid@hdnode1~]$sshhdnode1dateTueJan2916:09:49CST2013[gr
本文标题:Hadoop 全
链接地址:https://www.777doc.com/doc-3177979 .html