环境如下:
ubuntu-12.04.2-server-amd64
hadoop-1.0.4
VirtualBox
1、在VBox中安装Ubuntu Server,用户名和密码都是hadoop,安装完成后,克隆两份,这样就有三台机器,一台master,两台slave。克隆后的slave打开不能上网,原因是克隆的时候,“重新初始化所有网卡的MAC地址”,而Ubuntu系统中网卡缓存中的MAC地址也新的MAC地址不一致,解决方法是在克隆后的机器中删除一个文件,使用如下命令:
sudo rm /etc/udev/rules.d/70-persistent-net.rules
然后重启,机器就能连网了。
2、安装jdk,使用如下命令:
sudo apt-get install openjdk-6-jdk
master和slave都要安装。
3、修改机器名称,编辑/etc/hostname,把master机器修改成master.Hadoop,slave机器修改成slave1.Hadoop和slave2.Hadoop。
4、修改机器网络配置,编辑/etc/network/interfaces。master的网络配置如下:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.0.40
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8
slave1和slave2的配置只需要修改IP地址,分别是192.168.0.41和192.168.0.42。
5、配置master和slave的hosts文件,编辑/etc/hosts,在文件中追加如下内容:
192.168.0.40 master.Hadoop
192.168.0.41 slave1.Hadoop
192.168.0.42 slave2.Hadoop
三台机器的hosts配置相同。
6、配置master无密码登录所有slave
在master上执行:
ssh-keygen -t rsa -P ''
这个命令用于生成无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对为id_rsa和id_rsa.pub,默认存储在/home/hadoop/.ssh目录下。接着在master上做如下配置,把id_rsa.pub追加到授权的key里:
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
修改权限:authorized_keys的权限和.ssh目录的权限,使用如下命令:
chmod 600 .ssh/authorized_keys
chmod 700 .ssh
在slave机器上创建.ssh目录,使用如下命令:
mkdir .ssh
把authorized_keys复制到slave1机器的/home/hadoop/.ssh中,使用如下命令:
scp .ssh/authorized_keys slave1.Hadoop:/home/hadoop/.ssh/authorized_keys
修改权限,同master上的权限配置,在slave2上做同样的操作。
7、在master上安装hadoop
解压hadoop-1.0.4.tar.gz:
tar -zxvf hadoop-1.0.4.tar.gz
8、配置hadoop
编辑conf/hadoop-env.sh,修改JAVA_HOME的值:
export JAVA_HOME=/usr/lib/jvm/java-1.6.0-openjdk-amd64/
编辑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>http://master.hadoop:9001</value>
</property>
</configuration>
编辑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.name.dir</name>
<value>/home/hadoop/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
编辑conf/core-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>fs.default.name</name>
<value>hdfs://master.Hadoop:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-1.0.4/tmp</value>
</property>
</configuration>
编辑conf/masters,删除localhost,添加内容:
master.Hadoop
编辑conf/slaves,删除localhost,添加内容:
slave1.Hadoop
slave2.Hadoop
9、把master的hadoop-1.0.4拷贝到slave
在master上执行:
scp -r hadoop-1.0.4 slave1.Hadoop:/home/hadoop/
scp -r hadoop-1.0.4 slave2.Hadoop:/home/hadoop/
10、在master上格式化HDFS文件系统,使用如下命令:
hadoop-1.0.4/bin/hadoop namenode -format
11、启动所有结点
在master上执行:
hadoop-1.0.4/bin/start-all.sh
在master上执行jps命令,输出如下:
1974 JobTracker
2101 Jps
1602 NameNode
1893 SecondaryNameNode
说明master上hadoop正常启动。
在slave上执行jps命令,输出如下:
2007 Jps
1423 DataNode
1636 TaskTracker
说明slave上hadoop正常启动。
也可以在浏览器中打开192.168.0.40:50030或者192.168.0.40:50070查看master和slave是否正常启动。
12、关闭所有节点
在master上执行:
hadoop-1.0.4/bin/stop-all.sh