RedHat Linux ES5上Hadoop 0.20 安装部署笔记

pengchou 2011-09-21

Hadoop部署

本文整理了在RedHat Linux ES5上部署、配置hadoop的经验。

部署环境列表:

Redhat Linux ES5两台 : 10.68.219.42  linuxidc-42; 10.68.199.165 linuxidc-165

JDK 1.6.20

Hadoop 0.20.203

1、硬件环境

    首先要确保每台机器的主机名和IP地址之间能正确解析。一个很简单的测试方法,就是使用ping命令,ping一下主机名。例如在linuxidc-42上ping linuxidc-165,如果能ping通就ok。

若不能解析,修改/etc/hosts文件。如果该机器做为Namenode ,则需要在本机hosts中

    添加集群中所有Datanode机器的IP地址及其对应的机器名;如果该机器作为Datanode,则只需要在本机hosts中添加Namenode机器的IP及其对应机器名。

    以本次安装为例:

     linuxidc-42上的hosts文件如下:

# Do not remove the following line, or various programs

# that require network functionality will fail.

::1             localhost6.localdomain6 localhost6

10.68.219.42 linuxidc-42

10.68.199.165 linuxidc-165 (注意:删除或者注释掉这项配置 127.0.0.1  localhost )(会影响hadoop正常运作)

 

linuxidc-165上的hosts文件如下:

# Do not remove the following line, or various programs

# that require network functionality will fail.

10.68.219.42  linuxidc-42

 

      对于hadoop来说,在HDFS看来,节点分为Namenode和Datanode,其中Namenode只有一个(现在增加了secondNamenode),Datanode可以很多;在MapReduce看来,节点又分为Jobtracker和Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。

      我将Namenode和jobtracker部署在linuxidc-42上,linuxidc-165作为datanode和tasktracker。

      当然linuxidc-42本身也作为一个datanode和tasktracker。

 

  【用户和目录】

   在linuxidc-42、linuxidc-165上均创建用户hadoop,密码hadoop;

   创建hadoop的安装目录,并把目录拥有者改成 hadoop(已创建的用户);

    本次安装中,我把hadoop 安装到了/usr/install/hadoop; ($chown /usr/install/hadoop hadoop)  

2、SSH设置

      在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个节点上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。

     对于SSH服务来说,linuxidc-42就是SSH客户端,而linuxidc-165则是SSH服务端,因此在linuxidc-165上需要确定sshd服务已经启动。简单的说,在linuxidc-42上需要生成一个密钥对,即一个私钥,一个公钥。将公钥拷贝到linuxidc-165上,这样,比如当linuxidc-42向linuxidc-165发起ssh连接的时候,linuxidc-165上就会生成一个随机数并用linuxidc-42的公钥对这个随机数进行加密,并发送给linuxidc-42;linuxidc-42收到这个加密的数以后用私钥进行解密,并将解密后的数发送回linuxidc-165,linuxidc-165确认解密的数无误后就允许linuxidc-42进行连接了。这就完成了一次公钥认证过程。

    首先要保证每台机器上都装了SSH服务器,且都正常启动。

【配置】

        配置linuxidc-42

$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa  (创建公钥与密钥)

$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys

(追加到本机authorized_keys末尾,如果没有authorized_keys这个文件,直接cp就可以)

$chmod 644 authorized_keys 

(这一步非常关键,必须保证authorized_keys只对其所有者有读写权限,其他人不允许有写的权限,否则SSH是不会工作的)          

        配置linuxidc-165

[hadoop@linuxidc-42:.ssh]$scp authorized_keys linuxidc-165:/home/hadoop/.ssh/

此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,即linuxidc-165机器上hadoop帐户的密码,当然,你也可以用其他方法将authorized_keys文件拷贝到其他机器上

[hadoop@linuxidc-165:.ssh]$chmod 644 authorized_keys

【测试】

至此各个机器上的SSH配置已经完成,可以测试一下了,比如dbrg-1向dbrg-2发起ssh连接。

[hadoop@linuxidc-42:~]$ssh  liunx-165

如果ssh配置好了,就会出现以下提示信息

The authenticity of host [linuxidc-165] can't be established.

Key fingerprint is 1024 5f:a0:0b:65:d3:82:df:ab:44:62:6d:98:9c:fe:e9:52.

Are you sure you want to continue connecting (yes/no)?

OpenSSH告诉你它不知道这台主机,但是你不用担心这个问题,因为你是第一次登录这台主机。键入“yes”。这将把这台主机的“识别标记”加到“~/.ssh/know_hosts”文件中。第二次访问这台主机的时候就不会再显示这条提示信息了。

然后你会发现不需要输入密码就可以建立ssh连接了,恭喜你,配置成功了

不过,别忘了测试本机ssh  linuxidc-42

3、配置hadoop

首先解压安装hadoop到 /usr/install/haoop

A、 配置 conf/hadoop-env.sh

把JAVA_HOME设置为java安装的根路径

B、 配置 conf/masters  (Namenode节点)

如下:

[hadoop@linuxidc-42 ~]# vi /usr/install/hadoop-0.20.203.0/conf/masters

linuxidc-42

C、 配置conf/slaves  (DataNode节点)

如下:

[hadoop@linuxidc-42 ~]# vi /usr/install/hadoop-0.20.203.0/conf/slaves

linuxidc-42

linuxidc-165

D、 配置conf/core-site.xml

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

 <property>

         <name>fs.default.name</name>

         <value>hdfs://linuxidc-42:9000</value>

     </property>

</configuration>

E、  配置 conf/hdfs-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

<property>

         <name>dfs.replication</name>

         <value>1</value>

</property>

<property>

        <name>dfs.data.dir</name>

        <value>/usr/install/datanodespace</value>

</property>  <!—data blokc的存放位置  -->

</configuration>

F、  配置 conf/mapred-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>

 <property>

         <name>mapred.job.tracker</name>

         <value>linuxidc-42:9001</value>

     </property>

</configuration>

在hadoop旧的版本中,只有一个配置文件hadoop-site.xml。新版本中,拆成了三个配置文件。

G、 配置datanode机器,linuxidc-165

前面讲的这么多Hadoop的环境变量和配置文件都是在linuxidc-42这台机器上的,现在需要将hadoop部署到其他的机器上,保证目录结构一致。

[hadoop@linuxidc-42:~]$scp  -r  /usr/install/hadoop linuxidc-165:/usr/install/hadoop

至此,可以说,Hadoop已经在各个机器上部署完毕了下面就让我们开始启动Hadoop吧

4、启动Hadoop

【格式化namenode】启动之前,我们先要格式化namenode,先进入/usr/install/hadoop目录,执行下面的命令

[hadoop@linuxidc-42:hadoop]$bin/hadoop  namenode  -format

不出意外,应该会提示格式化成功。如果不成功,就去hadoop/logs/目录下去查看日志文件

【启动】下面就该正式启动hadoop啦,在bin/下面有很多启动脚本,可以根据自己的需要来启动。

* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack

* stop-all.sh 停止所有的Hadoop

* start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack

* stop-mapred.sh 停止Map/Reduce守护

* start-dfs.sh 启动Hadoop DFS守护.Namenode和Datanode

* stop-dfs.sh 停止DFS守护

在这里,简单启动所有守护

[hadoop@linuxidc-42:hadoop]$bin/start-all.sh

同样,如果要停止hadoop,则

[hadoop@linuxidc-42:hadoop]$bin/stop-all.sh

5、测试

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

NameNode - http://linuxidc-42:50070/

JobTracker - http://linuxidc-42:50030/

相关推荐