AvatarNode集群测试(一)- - - - 系统搭建
AvatarNode是HDFS的一个补丁包,我们的部署是在HDFS之上进行,本次测试共使用5个虚拟机,5种类型的结点.
系统逻辑如下:
节点名 角色 IP地址
AvatarNode primary NameNode 192.168.0.11
StandbyNode standby NameNode 192.168.0.12
NFS nfs server 192.168.0.13
AvatarDataNode1 datanode、client 192.168.0.14
AvatarDataNode2 datanode、client 192.168.0.15
首先需要下载的内容包括:
CentOS5.5 64位
libpcap-devel-0.9.4-15.el5.x86_64.rpm
libpcap-devel-0.9.4-14.el5.i386.rpm
下载地址为:
http://www.vdisk.cn/wl826214?tag=&p=1
在这里有以上全部所需要的软件和补丁
我们先在AvatarNode上安装,然后使用vmware的clone来复制出其他虚拟机,再做相应修改即可
1. 安装CentOS5.5(x86_64)
2. 安装JAVA,并做好路径设置
3. 安装SSH,保证任何两个结点之间可以实现无密码登陆
4. 修改 /etc/profile配置文件,对java和一些常用PATH做设置
---以上这些在之前第一次部署hadoop集群时都有说明,参见
http://www.cnblogs.com/melburg/articles/2601259.html
当前的AvatarNode有两种使用方式,第一种是在原hadoop-0.20.2版本的HDFS上打Avatar补丁,另一种是使用FaceBook版本,其中已经包含了Avatar包,我们采用第一种方式。
5. 在hadoop 0.20.2版本上打Avatar的补丁
(1)配置虚拟机上网
① 在vmware的settings中的network里,选择三种上网模式中的Bridge或者NAT都可以
② 开机后,修改/etc/sysconfig/network-scripts/ifcfg-eth0 启动时保证为DHCP自动获取IP
③ 重启网络服务
sudo service network r
(2) 安装ant
ant是一个Build工具,类似于make
① 以hadoop身份登录(不要以root身份),在/usr下建立文件夹 ant
sudo mkdir ant
② 修改ant权限为755
sudo chmod 755 ant
③ 将Apache-ant1.8.1.tar.gz复制到/usr/ant下
④ 解压
tar -zxvf Apache-ant-1.8.1.tar.gz
⑤ 编辑/etc/profile文件,在末尾添加环境变量:
export ANT_HOME=/usr/ant/apache-ant-1.8.1
export PATH=$ANT_HOME/bin:$PATH
⑥ 编译生效:
source /etc/profile
(3) 解压hadoop-0.20.2
① 在/usr下新建文件夹hadoop
sudo mkdir hadoop
② 修改权限
sudo chmod 755 hadoop
sudo chown hadoop:hadoop hadoop (如果以Root身份登录创建,要修改其owner)
③ 将 Hadoop-0.20.2.tar.gz 复制到 /usr/hadoop
④ 解压,解压后生成文件夹hadoop-0.20.2
tar -zxvf Hadoop-0.20.2
⑤ 将AvatarNode.20.patch 复制到/usr/hadoop/hadoop-0.20.2
⑥ 打补丁
patch -p0 -E < AvatarNode.20.patch
(4) 修改源码,编译打包,生成我们需要的avatarnode包
① 将$HADOOP_HOME/src/contrib/highavailability/src/java/org/apache/hadoop/hdfs/server/namenode/Standby.java
341行 : fsImage.saveNamespace(true) 改为 fsImage.saveFSImage()
② 在 $HADOOP_HOME/src/contrib/highavailability/src/java/org/apache/hadoop/hdfs/server/namenode/AvatarNode.java中
import三个类:
import org.apache.hadoop.security.UnixUserGroupInformation;
import org.apache.hadoop.security.UserGroupInformation;
import javax.security.auth.login.LoginException;
并在第210行initialize(Configuration conf)方法内部添加语句:
try{
UserGroupInformation.setCurrentUser(UnixUserGroupInformation.login(conf));
} catch (LoginException e){
}
③ vi $HADOOP_HOME/build.xml
把build.xml中Documentation部分的target标签对之间的所有内容删除(target标签本身不删)
④ 将$HADOOP_HOME目录下的docs复制到$HADOOP_ HOME/build/下
要新建个build目录
⑤ 编译打包 ,$HADOOP_HOME下:
ant -Djava5.home=$Java5Home compile tar
大约经过5~10分钟左右,编译成功!
⑥ 生成可用的tar包
编译后生成的压缩包为$HADOOP_HOME/build/Hadoop-0.20.3-dev.tar.gz
解压后将$HADOOP_HOME/build/hadoop-0.20.3-dev/contrib/highavailability/hadoop-0.20.3-dev-highavailability.jar 放到 hadoop-0.20.3-dev/lib下再压缩成tar包
⑦ 更改虚拟机环境,关闭虚拟机,修改网卡模式为host-only,启动虚拟机
⑧ 将刚才压缩好的tar包复制到/usr/hadoop下,解压缩,生成目录hadoop-0.20.3-dev
⑨ 从hadoop-0.20.2中将build目录和build.xml copy到/usr/hadoop/hadoop-0.20.3-dev/下
⑩ 将/usr/hadoop/hadoop-0.20.3-dev/ivy/ivy-2.0.0-rc2.jar copy 到/usr/hadoop/hadoop-0.20.3-dev/lib/下
①① 修改/usr/hadoop/hadoop-0.20.3-dev/build.xml,把build.xml中154行注释掉
改为<property name="ivy_repo_url" value="file://${basedir}/lib/ivy-2.0.0-rc2.jar"/>
①② 修改/usr/local/hadoop-0.20.3-dev/build.xml,把build.xml中154行注释掉,
改为<property name="ivy_repo_url" value="file://${basedir}/lib/ivy-2.0.0-rc2.jar"/>
①③ 编译打包 $HADOOP_HOME下:
ant -Djava5.home=$Java5Home compile tar
编译后生成的压缩包为$HADOOP_HOME/build/hadoop-0.20.3-dev.tar.gz
①④ 这个包就是我们用来最终部署avatarnode的包
浙公网安备 33010602011771号