在Ubuntu Server 8.10上搭建Hadoop-0.19.0环境
在Ubuntu Server 8.10上搭建基于Hadoop-0.19.0的分布式运行环境
(VMware workstation版)
长期以来,一直很喜欢研究分布式的技术,也一直想尝试搭建一个分布式编程环境,最近看到一些文章讨论Hadoop很多,而且也看到Google也使用Hadoop开发了搜索引擎,因此想尝试着自己也弄一个玩玩,在网上查到了几篇文章讨论了Hadoop环境的搭建,但是讲的都不是很明白,我跟随这些文章Step by step,本以为会是很顺利,但是却遇到诸多磕磕绊绊,很棘手,在网上查了很久,试了很多方法,走了很多弯路才最终解决。好在所有问题都解决了,昨天晚上,终于把环境搭起来,并运行了一遍,Hadoop的Wordcount例子,很顺利地通过了,今天准备把自己的这些天的“搭建之旅”,讲出来,算是给自己的工作做一个注解吧。
之所以选择Ubuntu,是因为这个操作系统很简洁,很容易配置,而且占用硬盘空间比较小,我的T61上2G内存支持2个虚拟机Ubuntu服务器是没问题的,而且速度很快,虚拟机环境我选择的是VMware-workstation-6.5.1-126130,官网上Download的。开始在我的XP Professional上安装VMware,并在它上面安装Ubuntu Server 8.10,一切都很顺利,都是默认设置,包括硬盘(8G)和内存(512M)分配等,配置低可要吃苦头哦,值得一提的有两点,
1、Ubuntu在安装时候需要把SSH Server安装上,这样免得你以后安装SSH软件比较麻烦,因为Hadoop是通过SSH来与各个机器通讯的。安装时候记得不不要安装Ubuntu自带的JDK,也就是Virual Machine Host(BSD OpenJDK),没用,我们需要的SUN JDK。
2、是网络配置,现在网上很多讲VM上网络配置的文章,我看了好几篇都没有看明白,也是因为自己一直没有碰过VMware。别的不说了,我只说一下我的经历吧,我在家里搭建了一个环境,在单位也搭建了一个环境。家里的是宽带PPPoE上网的,单位是静态IP的局域网通过代理上网。由于我不想用NAT上网,所以就都用了Bridged的方式,而且都是Replicated physical network connection state,这种方式使得虚拟机都在独立存在于网上的,容易访问,有种看得见摸得找的感觉。
网址的配置
家里:我使用的是DHCP动态分配网址,配置文件/etc/network/interfaces,我没有改动,就是:
iface eth0 inet dhcp
auto eth0
单位:修改了/etc/network/interfaces,添加了IP地址,子网掩码,网关。
iface eth0 inet static
address 10.8.83.200
netmask 255.255.255.0
gateway 10.8.83.254
auto eth0
命令如下:sudo vi /etc/network/interfaces,至于vi的操作命令俺在这里就不说了,自己上网查吧。
DNS配置:
家里的配置,我也没有管,也是自动获取的。而单位的配置是修改了/etc/resolv.conf文件。在文件的最末行添加了以下代码:nameserver 10.8.83.11。
还有重要的两个配置需要注意:
1、需要配置/etc/hostname:
命令如下:sudo /etc/hostname
改掉localhost,换成,你自己喜欢的名字,如我的就是ubuntu1,这样你安装的系统就有了一个主机名了,但是一定唯一。
2、需要配置/etc/hosts
命令如下:sudo /etc/hosts
打开这个文件在文件第一行会显示如下文字:
127.0.0.1 localhost
下面的文字不要看。添加上一行如下:
127.0.0.1 ubuntu1.localdomain ubuntu1
然后保存文件。如果你是静态IP,将127.0.0.1换成你所指定的IP,如果你是动态DHCP的IP,那么你需要查找到动态分配给这个虚拟机的IP,然后替换127.0.0.1。
这样网络配置就完成了,重启网络使之生效:sudo /etc/init.d/networking restart
由于单位是通过代理来上网的,因此单位还需要配置代理,代理在安装的时候我就配置过,可一上网就连接不上,我估计是配置错了,上网一查,很多人说如果设置全局代理,可以在profile里增加配置。其实我的需求很简单,就是能apt update就可以了,因此选择修改~/.bashrc,在.bashrc文件末尾添加如下内容(根据你的实际情况替换yourproxyaddress和proxyport):
export http://[user:password]@yourproxyaddress:proxyport。
使用的命令如下:sudo vi ~/.bashrc
这样在家里和单位尝试 ping www.sohu.com,都可以ping通。没问题。