以前在单机环境下搭好过Hadoop开发环境,这几天试着搭建了一个集群环境。使用设备是我们学校机房的两台电脑,master 作为Namenode节点,另外一个(slave1)作为Datanode,之后又搭建了六台,步骤基本差不多,这里把搭建两台的步骤贴上,防止以后有需要。
IP地址分配为:
master:192.168.0.100,Ubuntu 11.10,运行Namenode,SecondaryNamenode,JobTracker
slave1:192.168.0.101,Ubuntu 11.10,运行Datanode,TaskTracker
1.使用ping命令看看两台机器是否能ping通,例如在master上输入以下命令:
ping 192.168.0.101
2.其次是配置java环境,这个略去(见单机配置)~~~~
3.把master上已有的hadoop压缩文件拷贝slave1的相同目录下,注意一定是相同目录,而且登录这2台机器
的用户名必须相同,我试验用的是用户名为cloud,hadoop的压缩文件放在/home/cloud/下。
拷贝可以使用 $scp /home/cloud/hadoop0.20.2.tar.gz slave1:/home/cloud/
4.将hadoop压缩文件解压
$tar xzf hadoop0.20.2
5.修改三台机器的/etc/hosts,
# vi /etc/hosts 或者 #sudo gedit /etc/hosts
192.168.0.100 master
192.168.0.101 slave1
6.修改hadoop安装目录下的master文件的内容为master(namenode的主机名),slaves文件的内容为
slave1(datanode的主机名,如果有多台datanode则都将其主机名加入)
7.设置namenode以ssh免密码方式连接datanode
a)先在namenode上设置ssh免密码登录:
$ ssh-keygen -t dsa -P '' -f /home/cloud/.ssh/id_dsa
此时可以在 /home/cloud/.ssh中看到生成的私钥和公钥(.ssh文件是隐藏的,使用ctrl+h组合键就
可以查看哦)
b)再使用以下命令生成authorized_keys,主要是为了将它发给各个datanode,从而namenode访问
datanode时就不再需要密码了
$ cat id_rsa.pub >> authorized_keys
然后,再把master的/home/.ssh/authorized_keys文件拷贝到slave1的/home/.ssh/下。
8.所有节点上修改配置文件,可以砸master上面修改,然后在copy到各个datanode上
a)修改conf/hadoop-env.sh,添加java_home的路径,这个可以根据各个节点自行配置
export JAVA_HOME=/usr/lib/.........
b)修改conf/core-site.xml,加入
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>这里写想存放HDFS文件系统的位置</value>
</property>
c)修改conf/mapred-site.xml,加入
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>这里写想存放临时文件的位置</value>
</property>
d)修改conf/hdfs-site.xml,加入
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
记住复制到各个datanode上哦
例如:$scp /home/cloud/hadoop0.20.2/conf/core-site.xml
cloud@slave1:/home/cloud/hadoop0.20.2/conf/core-site.xml
9.配置完成,在master上格式化Namenode,
$ bin/hadoop namenode -format
10.然后通过$bin/hadoop start-all.sh启动hadoop的守护进程,运行各个节点。
11.可以在namenode和datanode上分别使用$jps命令查看各自运行的任务
12.最后可以使用$bin/hadoop stop-all.sh停止各个节点
IP地址分配为:
master:192.168.0.100,Ubuntu 11.10,运行Namenode,SecondaryNamenode,JobTracker
slave1:192.168.0.101,Ubuntu 11.10,运行Datanode,TaskTracker
1.使用ping命令看看两台机器是否能ping通,例如在master上输入以下命令:
ping 192.168.0.101
2.其次是配置java环境,这个略去(见单机配置)~~~~
3.把master上已有的hadoop压缩文件拷贝slave1的相同目录下,注意一定是相同目录,而且登录这2台机器
的用户名必须相同,我试验用的是用户名为cloud,hadoop的压缩文件放在/home/cloud/下。
拷贝可以使用 $scp /home/cloud/hadoop0.20.2.tar.gz slave1:/home/cloud/
4.将hadoop压缩文件解压
$tar xzf hadoop0.20.2
5.修改三台机器的/etc/hosts,
# vi /etc/hosts 或者 #sudo gedit /etc/hosts
192.168.0.100 master
192.168.0.101 slave1
6.修改hadoop安装目录下的master文件的内容为master(namenode的主机名),slaves文件的内容为
slave1(datanode的主机名,如果有多台datanode则都将其主机名加入)
7.设置namenode以ssh免密码方式连接datanode
a)先在namenode上设置ssh免密码登录:
$ ssh-keygen -t dsa -P '' -f /home/cloud/.ssh/id_dsa
此时可以在 /home/cloud/.ssh中看到生成的私钥和公钥(.ssh文件是隐藏的,使用ctrl+h组合键就
可以查看哦)
b)再使用以下命令生成authorized_keys,主要是为了将它发给各个datanode,从而namenode访问
datanode时就不再需要密码了
$ cat id_rsa.pub >> authorized_keys
然后,再把master的/home/.ssh/authorized_keys文件拷贝到slave1的/home/.ssh/下。
8.所有节点上修改配置文件,可以砸master上面修改,然后在copy到各个datanode上
a)修改conf/hadoop-env.sh,添加java_home的路径,这个可以根据各个节点自行配置
export JAVA_HOME=/usr/lib/.........
b)修改conf/core-site.xml,加入
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>这里写想存放HDFS文件系统的位置</value>
</property>
c)修改conf/mapred-site.xml,加入
<property>
<name>mapred.job.tracker</name>
<value>master:9001</value>
</property>
<property>
<name>mapred.local.dir</name>
<value>这里写想存放临时文件的位置</value>
</property>
d)修改conf/hdfs-site.xml,加入
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
记住复制到各个datanode上哦
例如:$scp /home/cloud/hadoop0.20.2/conf/core-site.xml
cloud@slave1:/home/cloud/hadoop0.20.2/conf/core-site.xml
9.配置完成,在master上格式化Namenode,
$ bin/hadoop namenode -format
10.然后通过$bin/hadoop start-all.sh启动hadoop的守护进程,运行各个节点。
11.可以在namenode和datanode上分别使用$jps命令查看各自运行的任务
12.最后可以使用$bin/hadoop stop-all.sh停止各个节点