本节和大家学习一下Hadoop集群配置以及在配置过程中遇到的一些问题,相信通过本节的介绍大家对Hadoop的配置有新的认识,让我们一来学习Hadoop集群配置吧。
Hadoop集群配置
hadoop的单机配置在hadoop的文档中已经有了详细的介绍,当然,集群的配置也有详细描述(Hadoop的中文文档:http://www.hadoop.org.cn/document/cn/r0.18.2/)。但在集群配置中必然会遇到各种问题,下面我就描述下我配置Hadoop集群的过程和遇到的问题,其中解释不清楚或者不正确的地方,还请谅解。
一.Hadoop配置:
p=vu<xXtD
首先,是准备工作,就是在各个节点安装相应的软件。
GU\}}j]
1.本次Hadoop集群配置中,使用VMware虚拟出三个虚拟机(Ubuntu8.04TL),三个节点的用户名都是hadoop,使用桥接,这样各节点跟主机使用相同的IP段,可以通过外界访问namenode。三个节点的主机名分别是一个namenode节点:NameNode(ip:125.216.227.**1),两个datanode节点:DataNode1(ip:125.216.227.**2)和DataNode2(125.216.227.**3)。然后在网络中配置好各节点的名称。
sHx>UvN6
2.本次Hadoop集群配置采用截至到现在最稳定的0.18版本的Hadoop,将Hadoop解压到Hadoop部署目录结构如下:/home/hadoop/HadoopInstall,所有的hadoop版本放在这个目录中。将hadoop0.18.0压缩包解压至HadoopInstall中,为了方便以后升级,建议建立一个链接指向要使用的hadoop版本,不妨设为hadoop:$ln-shadoop0.18.0hadoop
>Q+Bw"W<
3.在各节点安装好jdk和ssh,jdk需加入环境变量。因为在Hadoop启动以后,Namenode是通过SSH(SecureShell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。该认证对于hadoop的集群配置只需单向认证即可,方法如下:
(1)在namenode节点下通过如下命令:
$scpauthorized_keys(slaveip):/home/username/.ssh#把slave的授权文件拷贝到master3>Ts7wM
$catid_dsa.pub>>authorized_keys
$chmode644authorized_key
(2)在datanode节点下:&R:$h*Wt|
$chmode644authorized_key
V)CS,w
4.现在开始配置hadoop的conf目录下的配置文件:先配置环境配置文件:hadoop-env.sh,具体配置请查看Hadoop文档。在此贴出我的部分配置信息(其他默认)如下,以供参考:
2`qO'V3Q
#Thejavaimplementationtouse.Required.[hE09W
exportJAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.07e)kN%JqW
exportHADOOP_HOME=/home/hadoop/HadoopInstall/hadoop?z>7&
exportHADOOP_CONF_DIR=$HADOOP_HOME/conf5(0f"zY
exportHADOOP_PID_DIR=/home/hadoop/HadoopInstall/PID@~v|t{G
exportPATH=$PATH:$HADOOP_HOME/bind?G~k[C!a
#ExtraJavaCLASSPATHelements.Optional.m%Ah]x;
#exportHADOOP_CLASSPATH=
再配置hadoop-site.xml。具体配置同样查看文档,代码:
(1)NameNode的配置:
(2)DataNode的配置信息:
(3)配置slave和master文件,slave文件保存了datanode的ip信息,而master则保存了namenode的ip信息。
tHlKo0S$0
然后是查看Hadoop集群配置是否配置成功,并启动hadoop。
配置好后先在/home/hadoop/HadoopInstall下建立/tmp目录。然后在hadoop的bin目录下:
$jps
会返回该节点的配置信息,如下:
20198NameNode
20318SecondaryNameNode
20684Jps
20383JobTracker
同样,在datanode也会返回该datanode解嗲的信息:
14784TaskTracker
17044Jps
14683DataNode
CG!/Lbd
然后进入hadoop目录下:
$bin/hadoopnamenode-format#在NameNode格式化一个新的分布式文件系统thWQU"z4
$bin/start-dfs.sh#启动namenode上的hadoop
$bin/start-mapred.sh#启动JobTracker^MJTlRUb
$netstat-tnl#查看50070,54310,50090端口是否启动
@]$qJFXx
浏览NameNode和JobTracker的网络接口,它们的地址默认为:
NameNode-http://localhost:50070/
JobTracker-http://localhost:50030/
最后将配置好的Hadoop打包发送到各个slave:
xlQl1lOX
$cd/home/hadoop/HadopInstallHZ$q`e
$tar-cvfhadoop-0.18.0.tar.gzhadoop-0.18.0/0Y7b$~n'Y
$scp-rhadoop-0.18.0.tar.gzhadoop@slave1:/home/hadoop/HadopInstallL@>+iZSO
$scp-rhadoop-0.18.0.tar.gzhadoop@slave2:/home/hadoop/HadopInstall
二.Hadoop集群配置中遇到的问题
(1)在重新格式化一个新的分布式文件时,需要将你NameNode上所配置的dfs.name.dir这一namenode用来存放NameNode持久存储名字空间及事务日志的本地文件系统路径删除,同时将各DataNode上的dfs.data.dir的路径DataNode存放块数据的本地文件系统路径的目录也删除。如本此配置就是在NameNode上删除/home/hadoop/NameData,在DataNode上删除/home/hadoop/DataNode1和/home/hadoop/DataNode2。
这是因为Hadoop在格式化一个新的分布式文件系统时,每个存储的名字空间都对应了建立时间的那个版本(可以查看/home/hadoop/NameData/current目录下的VERSION文件,上面记录了版本信息),在重新格式化新的分布式系统文件时,最好先删除NameData目录。必须删除各DataNode的dfs.data.dir。这样才可以使namedode和datanode记录的信息版本对应。
否则会出现能够启动datanode,但无法访问,也无法结束的错误,如下:
hadoop@HadoopHost:~/HadoopInstall/hadoop$bin/stop-all.sho(iv=(o
stoppingjobtrackerlLD-QO}/
125.216.227.**2:stoppingtasktrackerUO%VuC5B
125.216.227.**3:stoppingtasktracker@R+bR<}]
stoppingnamenodey>+xdD0+
125.216.227.**2:nodatanodetostoprN3i5.*/t
125.216.227.**3:nodatanodetostop7/*a
125.216.227.**1:stoppingsecondarynamenode
以后有问题继续添加,希望大家予以指教。本节有关Hadoop集群配置方面的内容介绍到这里。
【编辑推荐】