安装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默认端口配置见文章: