环境
操作系统:Ubuntu11.04
Hadoop版本:1.03
Java版本:1.6.0_35
为了方面配置,我在每台机器上都使用了root用户来操作,但不清楚这是不是最好的,但这样做的确够方便。
结点信息:
机器名 | IP | 作用 |
master | 192.168.56.159 | NameNode |
slave-1 | 192.168.56.160 | DataNode |
slave-2 | 192.168.56.168 | DataNode |
slave-3 | 192.168.56.169 | DataNode |
slave-4 | 192.168.56.191 | DataNode |
安装jdk
首先Hadoop运行需要Java的支持,所以必须在集群中所有的节点安装JDK,最好是Sun公司的JDK。安装JDK的方法参考:http://blog.sina.com.cn/s/blog_3fe961ae01013eka.html。注意:最好将集群中的JDK都安装在同一目录下,便于配置。实践中,笔者一般将JDK安装在/usr/java这个目录,但并不是必须的。
配置host
修改集群中所有机器的/etc/hosts,添加:
192.168.56.159
192.168.56.160
192.168.56.168
192.168.56.169
192.168.56.191
注意:这里的master、slave-1、slave-2等等,指的是机器的机器名(使用命令hostname可以查看本机的机器名),切记,如果不是机器名的话会出问题的,并且集群中所有结点的机器名都应该不一样(一样的情况笔者没有试过,个人认为会出一些莫名其妙的问题,尽量避免吧)。另外,/etc/hosts文件中,要避免同一个hostname对应不同的IP。
建立SSH无密码登录
首先操作系统上必须安装ssh,并且保证sshd处于运行状态,Hadoop使用ssh来通信。如果没有安装ssh的话,
使用以下命令来安装:
$
$
在Hadoop启动以后,namenode是通过SSH(Secure
namenode生成密钥:
$
会在~/.ssh/目录下生成
如果slave结点的~/.ssh/authorized_keys这个文件不存在,可以直接将~/.ssh/id_dsa.pub文件复制过去并重命名为authorized_keys:
$
也可以先将master结点的~/.ssh/id_dsa.pub文件复制到slave结点的~/.ssh/目录下,例如:
$
或用
$
然后在slave结点上执行下面的命令:
$
验证:在master结点上使用ssh连接slave结点,例如:
$
如果未提示输入密码直接登录,则表明设置成功。
安装Hadoop
下载Hadoop稳定版,http://hadoop.apache.org/releases.html。
下载Hadoop
$
方便起见,可以重命名一下解压后的文件夹,
$
配置hadoop
1.修改conf/hadoop-env.sh,添加JDK支持:
export
如果不知道你的JDK目录,使用命令echo
2.修改conf/core-site.xml,增加下面内容:
<property>
</property>
<property>
</property>
3.修改conf/hdfs-site.xml,增加下面内容:
<property>
</property>
<property>
</property>
<property>
</property>
4.修改conf/mapred-site.xml,增加下面内容:
<property>
</property>
5.
master
6.修改conf/slaves,这个是所有datanode的机器,例如:
slave-1
slave-2
slave-3
slave-4
7.将master结点上配置好的hadoop文件夹拷贝到所有的slave结点上,以slave-1为例:
$
启动Hadoop
1.格式化HDFS文件系统的namenode
$
2.启动hadoop集群
$
3.测试
将输入文件复制到分布式文件系统中:
$
运行自带的示例文件:
$
查看输出:
将输出文件从分页式文件系统中复制到本地,然后再查看:
$
$
或者直接查看分布式文件系统中的输出结果:
$
4.停止hadoop集群
$