hadoop开发环境搭建培训教材利用Cloudera实现Hadoop.docx
- 文档编号:28511166
- 上传时间:2023-07-18
- 格式:DOCX
- 页数:15
- 大小:22.08KB
hadoop开发环境搭建培训教材利用Cloudera实现Hadoop.docx
《hadoop开发环境搭建培训教材利用Cloudera实现Hadoop.docx》由会员分享,可在线阅读,更多相关《hadoop开发环境搭建培训教材利用Cloudera实现Hadoop.docx(15页珍藏版)》请在冰豆网上搜索。
hadoop开发环境搭建培训教材利用Cloudera实现Hadoop
hadoop开发环境搭建教程:
利用Cloudera实现Hadoop
安装并配置hadoop可以参考:
ClouderaHadoop4实战课程
hadoop开发教程学习地址:
1.1前言
Hadoop是一个实现了MapReduce计算模型的开源分布式并行编程框架。
MapReduce的概念来源于Google实验室,它是一个简化并行计算的编程模型,适用于大规模集群上的海量数据处理,目前最成功的应用是分布式搜索引擎。
随着2007年底该模式Java开源实现项目ApacheHadoop的出现,使得程序员可以轻松地编写分布式并行程序,并将其运行于计算机集群上,完成海量数据的计算。
近两年尤其是今年国内外采用MapReduce模型的应用也逐渐丰富起来,如像NTTKDDI和中国移动这类的电信公司采用该模型分析用户信息,优化网络配置;美国供电局采用该模型来分析电网现状;包括VISA和JP摩根在内的金融公司采用该模型来分析股票数据;包括Amazon和ebay在内的零售商和电子商务公司也开始采用该模型;甚至部分生物公司也采用该模型来进行DNA测序和分析。
然而Hadoop安装、部署、管理的难度非常大,这使用很多用户对Hadoop望而却步,好在这种情况不久就得到了改善,Cloudera提供了非常简单的Hadoop的发布版本,能够十分方便地对Hadoop进行安装、部署和管理,这导致目前大约有75%的Hadoop新用户使用Cloudera。
1.2规划
1.2.1运行模式
Hadoop有三种运行模式:
单机(非分布)运行模式、伪分布运行模式和分布式运行模式。
其中前两种运行模式体现不了Hadoop分布式计算的优势,并没有什么实际意义(当然它们对程序的测试及调试还是很有帮助的),因此在这里还是采用实际环境中使用的分布式运行模式来部署。
1.2.2主机规划
在这里拟采用三台主机搭建Hadoop环境,由于后期还需要测试增删主机及跨网段主机对Hadoop环境的影响,特将Hadoop主机规划如下:
Hadoop-0110.137.253.201
Hadoop-0210.137.253.202
Hadoop-0310.137.253.203准备后期加入的测试主机
Hadoop-0410.137.253.204
Firehare-30310.10.3.30准备后期加入的跨网段测试主机
1.2.3Hadoop环境规划
对于Hadoop来说,最主要的是两个内容,一是分布式文件系统HDFS,一是MapReduce计算模型。
在分布式文件系统HDFS看来,节点分为NameNode和DataNode,其中NameNode只有一个,DataNode可以是很多;在MapReduce计算模型看来,节点又可分为JobTracker和TaskTracker,其中JobTracker只有一个,TaskTracker可以是很多。
因此在实际的Hadoop环境中通常有两台主节点,一台作为NameNode(I/O节点?
?
),一台作为JobTracker(管理节点?
?
),剩下的都是从节点,同时当做DataNode和TaskTracker使用。
当然也可以将NameNode和JobTracker安装在一台主节点上。
由于测试机数量有限,所以在这里是让Hadoop-01做为Namenode和Jobtracker,其它主机则作为DataNode和TaskTracker(如果Hadoop环境中主机数量很多的话,还是建议将Namenode和JobTracker部署到不同的主机,以提高计算的性能)。
具体规划如下:
HDFS:
Hadoop-01NameNode
Hadoop-02DataNode
Hadoop-03DataNode
Hadoop-04DataNode
Firehare-303DataNode
MapReduce:
Hadoop-01JobTracker
Hadoop-02TaskTracker
Hadoop-03TaskTracker
Hadoop-04TaskTracker
Firehare-303TaskTracker
1.3安装
规划好了就开始安装Hadoop,如前言中所说使用Cloudera的Hadoop发布版安装Hadoop是十分方便的,首先当然是在每台主机上一个干净的操作系统(我用的是Ubuntu8.04,用户设为Hadoop,其它的版本应该差不多),然后就是安装Hadoop了(这样安装的是Hadoop-0.20,也可以安装Hadoop-0.18的版本,反正安装步骤都差不多。
注意,不能同时启用Hadoop-0.20和Hadoop-0.18)。
由于每台机器安装步骤都一样,这里就写出了一台主机的安装步骤,主要分为以下几个步骤:
1.3.1设置Cloudera的源
生成Cloudera源文件(这里采用的是Hadoop-0.20版本,源信息可能过时,最新信息请参见官方文档:
):
sudovi/etc/apt/sources.list.d/cloudera.list
#稳定版(Hadoop-0.18)
#debhardy-stablecontrib
#deb-srchardy-stablecontrib
#测试版(Hadoop-0.20)
debhardy-testingcontrib
deb-srchardy-testingcontrib
生成源的密钥:
sudoapt-getinstallcurl
curl-s|sudoapt-keyadd-
1.3.2安装Hadoop
更新源包索引:
sudoapt-getupdate
sudoapt-getdist-upgrade
安装Hadoop:
sudoapt-getinstallhadoop-0.20hadoop-0.20-conf-pseudo
1.4部署
安装好这几台主机的Hadoop环境之后,就要对它们进行分布式运行模式的部署了,首先是设置它们之间的互联。
1.4.1主机互联
Hadoop环境中的互联是指各主机之间网络畅通,机器名与IP地址之间解析正常,可以从任一主机ping通其它主机的主机名。
注意,这里指的是主机名,即在Hadoop-01主机上可以通过命令pingHadoop-02来ping通Hadoop-02主机(同理,要求这几台主机都能相互Ping通各自的主机名)。
可以通过在各主机的/etc/hosts文件来实现,具体设置如下:
sudovi/etc/hosts
127.0.0.1localhost
10.x.253.201hadoop-01hadoop-01
10.x.253.202hadoop-02hadoop-02
10.x.253.203hadoop-03hadoop-03
10.x.253.204hadoop-04hadoop-04
10.x.3.30firehare-303firehare-303
将每个主机的hosts文件都改成上述设置,这样就实现了主机间使用主机名互联的要求。
注:
如果深究起来,并不是所有的主机都需要知道Hadoop环境中其它主机主机名的。
其实只是作为主节点的主机(如NameNode、JobTracker),需要在该主节点hosts文件中加上Hadoop环境中所有机器的IP地址及其对应的主机名,如果该台机器作Datanode用,则只需要在hosts文件中加上本机和主节点机器的IP地址与主机名即可(至于JobTracker主机是否也要同NameNode主机一样加上所有机器的IP和主机名,本人由于没有环境,不敢妄言,但猜想是要加的,如果哪位兄弟有兴趣,倒是不妨一试)。
在这里只是由于要作测试,作为主节点的主机可能会改变,加上本人比较懒,所以就全加上了。
:
)
注意2:
ubuntu原有的/etc/hosts文件中有将本机计算机名解析为127.0.1.1的字段,例如:
127.0.1.1hadoop-01
请务必删除,否则会由于绑定ip不正确导致namenode和jobtracker无法连接的问题。
1.4.1.1主机互联的可选方法(配置复杂并不推荐)
如果各个主机使用dhcp动态分配地址且不具有网络管理员权限,或者由于/etc/hosts文件的修改量过大,对于同一子网中的主机可以同过架设一个WINS服务或使用网络中有的WINS服务来解决互联问题。
相关的包可以通过运行tasksel命令,安装sambaclient包获得,安装之后还需要修改/etc/samba/smb.conf架设或设置WINS服务,并修改/etc/nsswitch.conf添加机器名的解析方式。
1.4.2计算帐号设置
Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同用户名的帐户。
由于这里采用的是Cloudera发布的Hadoop包,所以并不需要这方面的设置,大家了解一下即可。
1.4.3SSH设置
在Hadoop分布式环境中,主节点(NameNode、JobTracker)需要通过SSH来启动和停止从节点(DataNode、TeskTracker)上的各类进程。
因此需要保证环境中的各台机器均可以通过SSH登录访问,并且主节点用SSH登录从节点时,不需要输入密码,这样主节点才能在后台自如地控制其它结点。
可以将各台机器上的SSH配置为使用无密码公钥认证方式来实现。
Ubuntu上的SSH协议的开源实现是OpenSSH,缺省状态下是没有安装的,如需使用需要进行安装。
1.4.3.1安装OpenSSH
安装OpenSSH很简单,只需要下列命令就可以把openssh-client和openssh-server给安装好:
sudoapt-getinstallssh
1.4.3.2设置OpenSSH的无密码公钥认证
首先在Hadoop-01机器上执行以下命令:
hadoop@hadoop-01:
~$ssh-keygen-trsa
Generatingpublic/privatersakeypair.
Enterfileinwhichtosavethekey(/home/hadoop/.ssh/id_rsa):
Enterpassphrase(emptyfornopassphrase):
(在这里直接回车)
Entersamepassphraseagain:
(在这里直接回车)
Youridentificationhasbeensavedin/home/hadoop/.ssh/id_rsa.
Yourpublickeyhasbeensavedin/home/hadoop/.ssh/id_rsa.pub.
Thekeyfingerprintis:
9d:
42:
04:
26:
00:
51:
c7:
4e:
2f:
7e:
38:
dd:
93:
1c:
a2:
d6hadoop@hadoop-01
上述命令将为主机hadoops-01上的当前用户hadoop生成其密钥对,该密钥对被保存在/home/hadoop/.ssh/id_rsa文件中,同时命令所生成的证书以及公钥也保存在该文件所在的目录中(在这里是:
/home/hadoop/.ssh),并形成两个文件id_rsa,id_rsa.pub。
然后将id_rsa.pub文件的内容复制到每台主机(其中包括本机hadoop-01)的/home/hadoop/.ssh/authorized_keys文件的尾部,如果该文件不存在,可手工创建一个。
注意:
id_rsa.pub文件的内容是长长的一行,复制时不要遗漏字符或混入了多余换行符。
1.4.3.3无密码公钥SSH的连接测试
从hadoop-01分别向hadoop-01,hadoop-04,firehare-303发起SSH连接请求,确保不需要输入密码就能SSH连接成功。
注意第一次SSH连接时会出现类似如下提示的信息:
Theauthenticityofhost[hadoop-01]can'tbeestablished.Thekeyfingerprintis:
c8:
c2:
b2:
d0:
29:
29:
1a:
e3:
ec:
d9:
4a:
47:
98:
29:
b4:
48Areyousureyouwanttocontinueconnecting(yes/no)?
请输入yes,这样OpenSSH会把连接过来的这台主机的信息自动加到/home/hadoop/.ssh/know_hosts文件中去,第二次再连接时,就不会有这样的提示信息了。
1.4.4设置主节点的Hadoop
1.4.4.1设置JAVA_HOME
Hadoop的JAVA_HOME是在文件/etc/hadoop/conf/hadoop-env.sh中设置,具体设置如下:
sudovi/etc/hadoop/conf/hadoop-env.sh
exportJAVA_HOME="/usr/lib/jvm/java-6-sun"
1.4.4.2Hadoop的核心配置
Hadoop的核心配置文件是/etc/hadoop/conf/core-site.xml,具体配置如下:
xmlversion="1.0"?
>
xml-stylesheettype="text/xsl"href="configuration.xsl"?
>
--
//localhost:
8020
-->
//hadoop-01:
8020
1.4.4.3设置Hadoop的分布式存储环境
Hadoop的分布式环境设置主要是通过文件/etc/hadoop/conf/hdfs-site.xml来实现的,具体配置如下:
xmlversion="1.0"?
>
xml-stylesheettype="text/xsl"href="configuration.xsl"?
>
--
-->
--specifythissothatrunning'hadoopnamenode-format'formatstherightdir-->
1.4.4.4设置Hadoop的分布式计算环境
Hadoop的分布式计算是采用了Map/Reduce算法,该算法环境的设置主要是通过文件/etc/hadoop/conf/mapred-site.xml来实现的,具体配置如下:
xmlversion="1.0"?
>
xml-stylesheettype="text/xsl"href="configuration.xsl"?
>
--
8021
-->
8021
1.4.4.5设置Hadoop的主从节点
首先设置主节点,编辑/etc/hadoop/conf/masters文件,如下所示:
hadoop-01
然后是设置从节点,编辑/etc/hadoop/conf/slaves文件,如下所示:
hadoop-02
hadoop-03
hadoop-04
firehare-303
1.4.5设置从节点上的Hadoop
从节点上的Hadoop设置很简单,只需要将主节点上的Hadoop设置,复制一份到从节点上即可。
scp-r/etc/hadoop/confhadoop-02:
/etc/hadoop
scp-r/etc/hadoop/confhadoop-03:
/etc/hadoop
scp-r/etc/hadoop/confhadoop-04:
/etc/hadoop
scp-r/etc/hadoop/conffirehare-303:
/etc/hadoop
1.5启动Hadoop
1.5.1格式化分布式文件系统
在启动Hadoop之前还要做最后一个准备工作,那就是格式化分布式文件系统,这个只需要在主节点做就行了,具体如下:
/usr/lib/hadoop-0.20/bin/hadoopnamenode-format
1.5.2启动Hadoop服务
启动Hadoop可以通过以下命令来实现:
/usr/lib/hadoop-0.20/bin/start-all.sh
注意:
该命令是没有加sudo的,如果加了sudo就会提示出错信息的,因为root用户并没有做无验证ssh设置。
以下是输出信息,注意hadoop-03是故意没接的,所以出现Noroutetohost信息。
hadoop@hadoop-01:
~$/usr/lib/hadoop-0.20/bin/start-all.sh
namenoderunningasprocess4836.Stopitfirst.
hadoop-02:
startingdatanode,loggingto/usr/lib/hadoop-0.20/bin/../logs/hadoop-hadoop-datanode-hadoop-02.out
hadoop-04:
startingdatanode,loggingto/usr/lib/hadoop-0.20/bin/../logs/hadoop-hadoop-datanode-hadoop-04.out
firehare-303:
startingdatanode,loggingto/usr/lib/hadoop-0.20/bin/../logs/hadoop-hadoop-datanode-usvr-303b.out
hadoop-03:
ssh:
connecttohosthadoop-03port22:
Noroutetohost
hadoop-01:
secondarynamenoderunningasprocess4891.Stopitfirst.
jobtrackerrunningasprocess4787.Stopitfirst.
hadoop-02:
startingtasktracker,loggingto/usr/lib/hadoop-0.20/bin/../logs/hadoop-hadoop-tasktracker-hadoop-02.out
hadoop-04:
startingtasktracker,loggingto/usr/lib/hadoop-0.20/bin/../logs/hadoop-hadoop-tasktracker-hadoop-04.out
firehare-303:
startingtasktracker,loggingto/usr/lib/hadoop-0.20/bin/../logs/hadoop-hadoop-tasktracker-usvr-303b.out
hadoop-03:
ssh:
connecttohosthadoop-03port22:
Noroutetohost
这样Hadoop就正常启动了!
正常启动之后,可以在master主机上通过以下网址检视hadoop运行状况:
http:
//localhost:
50070/,检视分布式文件系统状况,其中LiveNodes字段应当显示为正常运行并连接到namenode服务器的datanode个数。
http:
//localhost:
50030/,检视集群运转状况,其中Nodes字段应当显示正常运行并连接到jobtracker的tasktracker个数。
1.5.3通过cloudera提供的服务包实现服务的自启动(可选)
通过安装cloudera提供的服务包,可以实现每次开机之后,hadoop服务自动启动。
首先,在master对应的机器上安装hadoop-0.20-jobtracker和hadoop-0.20-namenode包。
sudoapt-getinstallhadoop-0.20-jobtrackerhadoop-0.20-namenode
在slave对应机器上安装hadoop-0.20-tasktracker和hadoop-0.20-datanode包
sudoapt-getinstallhadoop-0.20-tasktrackerhadoop-0.20-datanode
重新启动这些机器,可以通过上节提到的两个网址检视系统运行状况。
1.6测试Hadoop
Hadoop架设好了,接下来就是要对其进行测试,看看它是否能正常工作,具体代码如下:
hadoop@hadoop-01:
~$hadoop-0.20fs-mkdirinput
hadoop@hadoop-01:
~$hadoop-0.20fs-put/etc/hadoop-0.20/conf/*.xmlinput
hadoop@hadoop-01:
~$hadoo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hadoop 开发 环境 搭建 培训教材 利用 Cloudera 实现