现在的位置: 首页 > 综合 > 正文

Hadoop集群配置

2013年08月04日 ⁄ 综合 ⁄ 共 4381字 ⁄ 字号 评论关闭

     hadoop
的单机配置在hadoop的文档中已经有了详细的介绍,当然,集群的配置也有详细描述(Hadoop的中文文
档:http://www.hadoop.org.cn/document/cn/r0.18.2/)。但在集群配置中必然会遇到各种问题,下面我就描述
下我配置Hadoop集群的过程和遇到的问题,其中解释不清楚或者不正确的地方,还请谅解。

   

一.Hadoop的配置:




      首先,是准备工作,就是在各个节点安装相应的软件。


     
1.本次配置中,使用VMware虚拟出三个虚拟机(Ubuntu
8.04TL),三个节点的用户名都是hadoop,使用桥接,这样各节点跟主机使用相同的IP段,可以通过外界访问namenode。三个节点的主机名
分别是一个namenode节点:NameNode(ip:125.216.227.**1),两个datanode节
点:DataNode1(ip:125.216.227.**2)和DataNode2(125.216.227.**3)。然后在网络中配置好各节点的
名称。


   
  
2.本次配置采用截至到现在最稳定的0.18版本的Hadoop,将Hadoop解压到Hadoop部署目录结构如下:/home/hadoop
/HadoopInstall,所有的hadoop版本放在这个目录中。将hadoop0.18.0压缩包解压至HadoopInstall中,为了方便
以后升级,建议建立一个链接指向要使用的hadoop版本,不妨设为hadoop:$ln -s hadoop0.18.0 hadoop


      
3.在各节点安装好jdk和ssh,jdk需加入环境变量。因为在Hadoop启动以后,Namenode是通过SSH(Secure
Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认
证的方式。该认证对于hadoop的集群配置只需单向认证即可,方法如下:

        (1)在namenode节点下通过如下命令:

        $
scp authorized_keys (slave ip):/home/username/.ssh           #把slave的授权文件拷贝到master
        $
cat id_dsa.pub >>authorized_keys   

        $chmode 644 authorized_key

        (2)在datanode节点下:
        $chmode 644 authorized_key


       4.现在开始配置hadoop的conf目录下的配置文件:先配置环境配置文件:hadoop-env.sh,具体配置请查看Hadoop文档。在此贴出我的部分配置信息(其他默认)如下,以供参考:


# The java implementation to use.  Required.
export

JAVA_HOME=/usr/lib/jvm/java-6-sun-1.6.0.07
export

HADOOP_HOME=/home/hadoop/HadoopInstall/hadoop


export




HADOOP_CONF_DIR=$HADOOP_HOME/conf


export



HADOOP_PID_DIR=/home/hadoop/HadoopInstall/PID


export



PATH=$PATH:$HADOOP_HOME/bin
# Extra Java CLASSPATH elements.  Optional.
#export HADOOP_CLASSPATH=

 

再配置hadoop-site.xml。具体配置同样查看文档,代码:

(1)NameNode的配置:



 

(2)DataNode的配置信息:

 



(3)配置slave和master文件,slave文件保存了datanode的ip信息,而master则保存了namenode的ip信息。

 


然后是查看hadoop是否配置成功,并启动hadoop。

 

配置好后先在/home/hadoop

/HadoopInstall下建立/tmp目录。然后在
hadoop的bin目录下:

$jps

会返回该节点的配置信息,如下:

20198 NameNode

20318 SecondaryNameNode

20684 Jps

20383 JobTracker

同样,在datanode也会返回该datanode解嗲的信息:

14784 TaskTracker

17044 Jps

14683 DataNode


然后进入hadoop目录下:

$bin/hadoop namenode -format         #在NameNode格式化一个新的分布式文件系统
$bin/start-dfs.sh                              #启动namenode上的hadoop

$bin/start-mapred.sh                        #启动JobTracker
$netstat -tnl                                     #查看50070,54310,50090端口是否启动


        浏览NameNode和JobTracker的网络接口,它们的地址默认为:

        最后将配置好的Hadoop打包发送到各个slave:


$cd /home/hadoop/HadopInstall
$tar -cvf hadoop-0.18.0.tar.gz hadoop-0.18.0/

$scp -r hadoop-0.18.0.tar.gz hadoop@slave1:/home/hadoop

/HadopInstall

$scp -r hadoop-0.18.0.tar.gz hadoop@slave2:/home/hadoop
/HadopInstall

 

二.遇到的问题

 

(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.sh
stopping jobtracker
125.216.227.**2: stopping tasktracker
125.216.227.**3: stopping tasktracker
stopping namenode
125.216.227.

**
2: no datanode to stop
125.216.227.

**
3: no datanode to stop
125.216.227.

**
1: stopping secondarynamenode

 

以后有问题继续添加,希望大家予以指教。

抱歉!评论已关闭.