不少新手在刚接触Hadoop时,第一次安装、配置、部署、使用等方面或多或少的遇到过一些问题。本文既是自己的一个测试总结,也是为大多数新手提供一个参考(当然,网上以及有很多相关资料)。
硬件环境
共有2台机器,一台(作为masters),一台机器使用VM安装两套系统(作为slaves),三系统均使用的Ubuntu 11.04 系统,Java使用的是jdk1.6.0_25。IP配置如下:
vm网络连接方式:均为‘桥接’
frank-1(主机名:即hostname):192.168.0.100 masters-----namenode
frank-2(主机名:即hostname):192.168.0.102 slaves-------datanode
frank-3(主机名:即hostname):192.168.0.103 slaves-------datanode
关于linux下修改hostname主机名:
不能简单的使用:
$ hostname 主机名 // 这样设置只是临时修改,重启系统,会恢复为原主机名
网上说使用smit ---好像不是linux命令(没细查)
最简单最笨的方法--直接修改:/etc/hostname
另外有一点这里有一点需要强调的就是,务必要确保每台机器的主机名和IP地址之间能正确解析。
一个很简单的测试办法就是ping一下主机名,比如在frank-1上ping frank-2,如果能ping通就OK!若不能正确解析,可以修改/etc/hosts文件,如果该台机器作Namenode用,则需要在hosts文件中加上集群中所有机器的IP地址及其对应的主机名;如果该台机器作Datanode用,则只需要在hosts文件中加上本机IP地址和Namenode机器的IP地址。
以本文为例,frank-1中的/etc/hosts文件看起来就应该是这样的:
127.0.0.0 localhost localhost
192.168.0.100 frank-1 frank-1
192.168.0.102 frank-2 frank-2
192.168.0.103 frank-3 frank-3
frank-2中的/etc/hosts文件看起来就应该是这样的:
127.0.0.0 localhost localhost
192.168.0.100 frank-1 frank-1
192.168.0.102 frank-2 frank-2
frank-3中的/etc/hosts文件看起来就应该是这样的:
127.0.0.0 localhost localhost
192.168.0.100 frank-1 frank-1
192.168.0.103 frank-3 frank-3
对于Hadoop来说,在HDFS看来,节点分为Namenode和Datanode,其中Namenode只有一个,Datanode可以是很多;在MapReduce看来,节点又分为Jobtracker和Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。
我是将namenode和jobtracker部署在frank-1上,frank-2,frank-3作为datanode和tasktracker。当然你也可以将namenode,datanode,jo