Ubuntu筹建hadoop集群(完全分布式模式)

Ubuntu搭建hadoop集群(完全分布式模式)
在搭建集群之前需要作如下准备工作,
1 在所有要使用的机器上建立相同的用户名和密码(用户级别即可),这里我的用户名和密码都是用hadoop。
2 保证所有的系统都安装了ssh,没安装的话,使用sudo  apt-get  instal  openssh命令即可。
3保证所有的系统都安装了JDK,应该是1.6以上版本
4 在所有要使用的机器上,进入他们的 /etc/hosts 目录,添加所有集群的电脑的IP以及电脑名字;如下:(假设集群中共有4台电脑)
IP1    NAME1
IP2    NAME2
IP3    NAME3
IP4    NAME4
注意,集群中用到的所有电脑都要添加,每个电脑的IP和名字占一行。

以上是准备工作,下面开始搭建集群:
1选择一台机器作为namenode(比如选择NAME1),以hadoop用户身份进入NAME1,进入到 ~ 目录,在该目录下建立文件夹.ssh,命令为
~$ mkdir  .ssh
接着生成密钥对
~$ssh-keygen  -t   rsa
然后执行命令
~$cd  ~/.ssh
~/.ssh$cp  idrsa.pub  authorized_keys
接着讲authorized_keys复制到集群中所有其他的机器(这里为NMAE2,NMAE3,NMAE4)
~/.ssh$scp  authorized_keys  NAME2:/home/hadoop/.ssh
~/.ssh$scp  authorized_keys  NAME3:/home/hadoop/.ssh
~/.ssh$scp  authorized_keys  NAME4:/home/hadoop/.ssh
2接着,进入所有机器的~/.ssh目录,改变authorized_keys的权限:
~/.ssh$chmod  644  authorized_keys

3接着,还是回到namenode所在的NAME1电脑,在~目录下建立hadoop目录
~$mkdir  hadoop
将下载的hadoop压缩包(格式为.tar.gz,见附录)移动到刚建立的hadoop文件夹,用如下命令解压缩:
~/hadoop$tar -zxvf  hadoop-020.tar.gz
(假设解压后的文件夹名称为hadoop-020)
然后进入解压缩后的文件夹下:
~/hadoop$cd  hadoop-020
继续进入到conf文件夹下:
~/hadoop/hadoop-020/$cd conf
在该文件夹下,修改core-site.xml   hdfs-site.xml    mapred-site.xml   如下:
Core-site.xml:
<configuration><property>
<name>fs.default.name</name>
<value>hdfs:NAME1//:9000</value>(此处的NAME1为namenode节点的主机名)
</property></configuration>

Hdfs-site.xml:
<configuration><property>
<name>dfs.replication</name>
<value>3</value>
</property></configuration>

mapred-site.xml:
<configuration><property>
<name>mapred.job.tracker</name>
<value>hdfs:NAME1//:9001</value>(此处的NAME1为namenode节点的主机名)
</property></configuration>
上面的三个文件修改完毕后保存退出。

接着修改当前目录下的masters和slaves文件
具体为masters中写入你的namenode节点的主机名,slaves写入你的所有slaves节点的主机名。这里为(每个主机名一行)
Masters:
  NAME1
Slaves:
  NAME2
  NAME3
  NAME4
保存后退出。

4将~/hadoop文件夹复制到其他所有机器上,位置与当前机器相同:
~$scp -r hadoop  NAME2:/home/hadoop
~$scp -r hadoop  NAME3:/home/hadoop
~$scp -r hadoop  NAME4:/home/hadoop
其中NAME2,NAME3,NAME4为主机名,hadoop为之前建立的用户名
5最后,打开每个机器的~/hadoop/hadoop-020/conf/hadoop-env.sh文件,在末尾添加当前及其的JAVA_HOME
内容为
export  JAVA_HOME=JDK的绝对地址
如果jdk是使用sudo apt-get install安装的话,内容应改为
export JAVA_HOME=/usr
6至此,Hadoop已经部署完毕。如果要添加或则删除节点,仅仅需要修改NameNode的Masters和Slaves即可。


7现在,在namenode节点上进入到~/hadoop/hadoop-020目录下,执行命令:
~/hadoop/hadoop-020$bin/hadoop  namenode -format
~/hadoop/hadoop-020$bin/start-all.sh
好了,hadoop已经跑起来了。
在所有机器节点上执行jps命令
namenode节点应该显示:(进程号允许不同)
31768 SecondaryNameNode
955 Jps
31840 JobTracker
31594 NameNode
Slave节点应该显示:(进程号允许不同)
1871 TaskTracker
1771 DataNode
2965 Jps

如果是如上结果,hadoop已经成功安装。