安装Hadoop至少需要2台机器,本次安装使用一个物理机器和一个虚拟机,软件环境都为Ubuntu 12.04 LTS 32位系统 。

hadoop安装步骤:

        1、到Oracle官网下载Java SE jdk安装包,我这里下载的是jdk1.7.0_51,解压后,move到/usr目录下。


        2、关闭系统防火墙:sudo ufw disable;


        3、配置hosts文件,设置机器名(假设为ubuntu-K50ID和ubuntu1-VirtualBox)到ip地址的对应关系,打开/etc/hosts文件,添加以下内容:


192.168.1.104 ubuntu-K50ID


192.168.1.107 ubuntu1-VirtualBox


注意:去掉127.0.1.1对于到机器名的记录行。确保测试"ping (机器名)" 完全正常。


       4、在2台机器上分别建立hadoop的运行帐号ubuntu,所有机器的运行hadoop的用户名必须一样,这里设置为ubuntu。


       5、配置机器到所有机器的免密码ssh,下面以2台机器为例:


             以ubuntu用户执行“ssh (其他机器名)”,并登陆成功,执行ssh-keygen -t rsa,中间提示信息统一采用默认,直接回车即可。执行完后,在/home/ubuntu/.ssh/目录下有公钥id_rsa.pub和私钥id_rsa文件,将公钥文件id_rsa.pub拷贝到其他机器上的对应目录保存为authorized_keys.执行“ssh (本机器名)”,并登陆成功后,将本机器的公钥文件追加到authorized_keys文件后,测试确保机器到集群的所有机器都是免密码ssh。


       6、到hadoop.apache.org下载hadoop-1.2.1,下载路径:http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-1.2.1/hadoop-1.2.1-bin.tar.gz ,下载解压后放置到/home/ubuntu目录下。


       7、配置/home/ubuntu/hadoop-1.2.1/conf下的hadoop-env.sh脚本,设置java路径:export JAVA_HOME=/usr/jdk1.7.0_51。


配置core-site.xml文件的configuration字段如下:


<configuration> 

 <property> 

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

 <value>hdfs://ubuntu-K50ID:9000</value>           <!--监听ubuntu-K50ID的9000端口--> 

 </property> 


 <property> 

 <name>hadoop.tmp.dir</name> 

 <value>/home/ubuntu/hadoop/tmp</value>            <!--设置hadoop的临时文件路径--> 

 </property> 

 </configuration> 

 配置hdfs-site.xml文件的configuration字段如下: 

 <configuration> 

 <property> 

 <name>dfs.replication</name>                      <!--设置hdfs的复制因子--> 

 <value>1</value> 

 </property> 


 </configuration> 

 配置mapred-site.xml文件的configuration字段如下: 

 <configuration> 

 <property> 

 <name>mapred.job.tracker</name>                   <!--设置jobtracker的监听地址和端口--> 

 <value>ubuntu-K50ID:9001</value> 

 </property> 

 </configuration>


配置masters文件内容如下:


ubuntu-K50ID                                      <!--设置masters对应的机器-->


配置slaves文件内容如下:


ubuntu1-VirtualBox                  <!--设置slaves对应的机器-->



备注:masters:ubuntu-K50ID(192.168.1.104)


slaves:ubuntu1-VirtualBox(192.168.1.107)


       8、将hadoop-1.2.1拷贝到其他机器的对应目录,每个机器上的hadoop目录内容是完全一样的。


       9、在masters机器的hadoop-1.2.1的目录下执行: bin/hadoop namenode -format


看到/home/ubuntu/hadoop/tmp/dfs/name has been successfully formatted.表示格式化成功。


      10、启动hadoop, 在hadoop-1.2.1下执行:bin/start-all.sh ,日志记录在log目录下。


      11、检查hadhoop进程是否启动:/usr/jdk1.7.0_51/bin/jps, masters上看到如下显示:


ubuntu@ubuntu-K50ID:~/hadoop-1.2.1$ /usr/jdk1.7.0_51/bin/jps 

 25174 SecondaryNameNode 

 25263 JobTracker 

 25366 Jps 

 24911 NameNode 

 slaves上看到: 

 ubuntu@ubuntu1-VirtualBox:~/hadoop-1.2.1$ /usr/jdk1.7.0_51/bin/jps 

 5643 DataNode 

 5834 TaskTracker 

 5880 Jps



如果启动不正常,请查看对应机器上的logs下的日志;如果要重新启动,需要将对应进程杀掉后再重新启动。

hadoop默认端口配置见文章: