在 Ubuntu 上安装Hadoop 教程
实践环境 :
U buntu8.04+jdk1.6+hadoop-0.20.1 ( 三台实体机 )
机器名        IP                          作用
Ubuntu01    192.168.0.4        NameNode 、 master 、 jobTracker
Ubuntu02    192.168.0.3        DataNode 、 slave 、 taskTracker
1 、 安装 ubuntu8.04
更新源修改
2 、安装 jdk1.6
sudo  apt-get install sun-java6-jdk
(
物理机可能安装不上,直接下载jdk安装
jdk-1_5_0_14-linux-i586.bin文件安装
# chmod a+x jdk-1_5_0_14-linux-i586.bin        ← 使当前用户拥有执行权限
# ./jdk-1_5_0_14-linux-i586.bin                ← 选择yes直到安装完毕
)
安装后,添加如下语句到 /etc/profile 中:
export JAVA_HOME=/usr/lib/jvm/java-6-sun
export JRE_HOME=/usr/lib/jvm/java-6-sun/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
注意:每台机器的 java 环境最好一致。安装过程中如有中断,切换为 root 权限来安 装 。
(7 、安装 hadoop
下载 hadoop-0.20. :
$ wget labs.xiaonei/apache-mirror/hadoop/core/hadoop-0.20.2/hadoop-0.20.
解压:
$ tar -zvxf hadoop-0.20.
把 Hadoop 的安装路径添加到 /etc/profile 中 :
export HADOOP_HOME=/home/wl826214/hadoop-0.20.2
export PATH=$HADOOP_HOME/bin:$PATH
8 、配置 hadoop
hadoop 的主要配置都在 hadoop-0.20. 2 /conf 下。
(1) 在 conf/hadoop-env.sh 中配置 Java 环境 (namenode 与 datanode 的配置相同 ) :
$ gedit hadoop-env.sh
$ export JAVA_HOME=/usr/lib/jvm/java-6-sun
(3) 配置 l, l 及 l( 简单 配
置, datanode 的配置相同 )
l:
ubuntu安装教程<configuration>
<property>
<name&p.dir</name>
<value>/home/wl826214/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://192.168.0.61:9000</value>
</property>
</configuration>
l :( replication 默认为 3 ,如果不修改, datanode 少于三台就会报错 )
<configuration>
<property>
<name&plication</name>
<value>1</value>
</property>
</configuration>
l:
<configuration>
<property>
<name>acker</name>
<value>192.168.0.61:9001</value>
</property>
</configuration>
)
(4 、开启 ssh 服务
安装 openssh-server : $ sudo apt-get install openssh-server)
3 修改机器名:
sudo vi /etc/hostname
在 /etc/hosts 中添加机器名和相应的 IP :
4 、开启 ssh 服务
安装 openssh-server : $ sudo apt-get install openssh-server
5 、建立 ssh 无密码登录
(1) 在 NameNode 上实现无密码登录本机:
$ ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
直接回车,完成后会在 ~/.ssh/ 生成两个文件: id_dsa 和 id_dsa.pub 。这两个是成对
出现,类似钥匙和锁。
再把 id_dsa.pub 追加到授权 key 里面 ( 当前并没有 authorized_key s文件 ) :
$ cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys 。
完成后可以实现无密码登录本机:
$ ssh localhost 。
(2) 实现 NameNode 无密码登录其他 DataNode :
把 NameNode 上的 id_dsa.pub 文件追加到 dataNode 的 authorized_keys 内 ( 以
192.168.0.3 节点为例 ) :
a. 拷贝 NameNode 的 id_dsa.pub 文件:
$ scp id_dsa.pub wl826214@192.168.0.191:/home/wl826214/
scp -r X user@B_IP:Y(拷整个文件夹)
b. 登录 192.168.0.3 ,执行 $ cat id_dsa.pub >> .ssh/authorized_keys
其他的 dataNode 执行同样的操作。
注意: 如果配置完毕,如果 namenode 依然不能访问 datanode ,可以修改 datanode 的
authorized_keys :
$ chmod 777 authorized_keys 。
6 、关闭防火墙
$ sudo ufw disable
注意:这步非常重要。如果不关闭,会出现不到 datanode 问题。
7 配置每个Datanode无密码登录Namenode
(0)原理:
Namenode连接datanode时namenode是客户端,需要将namenode上的公钥复制到datanode上,那么,如果datanode主动连接namenode,datanode是客户端,此时需要将datanode上的公钥信息追加到namenode中的authorized_keys之中。(此时,由于namenode中已经存在authorized_keys文件,所以这里是追加)。
如果进一步需要datanode之间实现公钥无密码验证,则同样需要相互之间追加公钥信息
(1) 将各个datanode上的id_rsa.pub追加到namenode的authorized_keys
在所有datanode上依次执行如下命令:
/.ssh$ scp id_rsa.pub namenode ip地址:/home/zkl/.ssh/datanode ip地址.id_rsa.pub
这将datanode上之前产生的公钥id_rsa.pub复制到namenode上的.ssh目录中,并重命名为
datanode ip地址.id_rsa.pub,这是为了区分从各个datanode上传过来的公钥。
复制完毕,在namenode上执行以下命令,将每个datanode的公钥信息追加:
zkl@zkl-ubuntu:~/.ssh$ cat datanode ip地址.id_rsa.pub >> authorized_keys
这样,namenode和datanode之间便可以相互ssh上并不需要密码......
注意:整个过程中只涉及到创建密钥,复制公钥,添加公钥内容,没有更改配置文件,实际上配置文件/etc/ssh/sshd_config中开启了公钥验证
{ RSAAuthentication yes
PubkeyAuthentication yes
}
(2)SSH配置完毕
至此,namenode能无密码验证登陆每个datanode。每个datanode也能无密码验证SSH登陆到namenode。
8 、安装 hadoop
下载 hadoop-0.20. :
$ wget labs.xiaonei/apache-mirror/hadoop/core/hadoop-0.20.2/hadoop-0.20.
解压:
$ tar -zvxf hadoop-0.20.
把 Hadoop 的安装路径添加到 /etc/profile 中 :
export HADOOP_HOME=/home/wl826214/hadoop-0.20.2
export PATH=$HADOOP_HOME/bin:$PATH
9 、配置 hadoop
hadoop 的主要配置都在 hadoop-0.20. 2 /conf 下。
(1) 在 conf/hadoop-env.sh 中配置 Java 环境 (namenode 与 datanode 的配置相同 ) :
$ gedit hadoop-env.sh