virtualbox 虚拟3台虚拟机搭建hadoop集群
用了这么久的hadoop,只会使用streaming接口跑任务,各种调优还不熟练,自定义inputformat , outputformat, partitioner 还不会写,于是干脆从头开始,自己搭一个玩玩,也熟悉一下整体架构。
整体环境:
主机Win7 i5 4核 8G内存 笔记本;
虚拟机(客户机)采用Centos5.9 ( 用这个的原因是不想用图形界面,并且以后还想试着装一下ICE)
virtualbox V4.2.18 下载地址:http://dlc.sun.com.edgesuite.net/virtualbox/4.2.18/VirtualBox-4.2.18-88781-Win.exe
Centos 5.9 下载地址(共9个iso文件):http://mirror.bit.edu.cn/centos/5.9/isos/x86_64/
2. 安装virtualbox 和 Centos5.9 3. hadoop集群用3台机器,拓扑如下:master: ip:192.168.56.120
机器名: master
启动NameNode
启动JobTracker
slave1: ip: 192.168.56.121
机器名:slave1
启动SecondaryNameNode
启动DataNode
启动TaskTracker
slave2: ip: 192.168.56.122
机器名:slave2
启动DataNode
启动TaskTracker
要求: 在任何环境下主机和客户机都要能够联通,正常工作。包括:笔记本插网线;笔记本不插网线;笔记本联通无线网络;笔记本完全没有网络等情况。
最复杂的情况是笔记本既没有有线网也没有无线网络且没有插网线的情况,这种情况下必须采用host-only的方式。具体原因不细说,因为我也不清楚这四种网络设置的区别到底有哪些 -_-!!!
配置方式参考:http://www.douban.com/group/topic/15558388/ 也可以google搜索 "virtualbox host-only unplug cable"
还是要说一下我对host-only 方式配置的理解:virtualbox安装好之后在windows的”网络和共享中心“ (XP系统叫做网上邻居)中会出现一个新的虚拟网卡"VirtualBox Host-Only Network"。当虚拟机配置为host-only方式的时候,主机和虚拟机通过这个虚拟网卡进行通讯,因此无论主机的外部网络如何,都能和虚拟机联通。因此需要将虚拟机的ip设置到此虚拟网卡的网段内。
我的配置:
VirtualBox Host-Only Network ipv4设置: ip地址: 192.168.56.1
子网掩码:255.255.255.0
centos ip设置: 参考:http://os.51cto.com/art/201001/177909.htm
执行:【vi /etc/sysconfig/network】
注意: 上面对机器的ip和机器名设置非常重要,因为hadoop的master与slave的连接是通过机器名来做的
5. 安装ssh服务(比较简单,google) 安装完成后执行:【ps -ef | grep ssh】 看到有一个进程名为 sshd 的则安装成功。 测试ssh, 执行:【ssh localhost】需要输入密码 6. 为虚拟机添加hadoop账户 以root账户登陆:执行 【useradd hadoop】 【passwd hadoop】 测试账户,执行:【su - hadoop】 7. 安装jdk1.6 (据说1.7有些问题)(此步如果centos自带了1.6的jdk的话,可以省略,但是要找到java的安装路径,因为后面配置环境变量要用)
下载jdk1.6 : http://download.oracle.com/otn-pub/java/jdk/6u35-b10/jdk-6u35-linux-x64-rpm.bin?AuthParam=1381058664_954e59f9391e5a0cf7ae446c5e0c7813 得到文件: jdk-6u35-linux-x64-rpm.bin 以 root账户登录 执行:【mkdir /usr/java】 (当然也可以是其他目录,此目录将作为java的安装目录,即为JAVA_HOME) 执行:【cd /usr/java】 执行:【rz -be】 #选择jdk文件上传到 /usr/java 目录下 执行:【./jdk-6u35-linux-x64-rpm.bin】 此时虽然安装完成了jdk,但是如果centos自带的java没有被卸载掉的话,使用java -version 还是会检测到老版本java, 因为还没有配置环境变量。 8. 安装hadoop 下载hadoop安装包:http://mirrors.ustc.edu.cn/apache/hadoop/common/stable/hadoop-1.2.1-bin.tar.gz 得到文件:hadoop-1.2.1-bin.tar.gz 执行: 【su - hadoop】 执行:【cd 】 #切换到hadoop账户的根目录 执行:【tar -zxvf hadoop-1.2.1-bin.tar.gz】 # 解压,解压后会出现 hadoop-1.2.1 目录 9. 配置hadoop 执行:【cd hadoop-1.2.1/conf】 执行:【vi hadoop-env.sh】 找到JAVA_HOME那一行,取消注释并配置为:export JAVA_HOME=/usr/java/jdk1.6.0_35 执行:【mkdir /home/hadoop/hadoop_tmp】 为下一步做准备 执行:【vi core-site.xml】 配置NameNode节点运行在master上的9000端口和hadoop临时目录