Hadoop 双机热备
--AvatarNode部署
部署环境
虚拟机5台(1G内存,40G硬盘,ubuntu操作系统,Hadoop-0.20.2)
hadoop1-virtual-machine 10.10.11.250 AvatarNode(primary)
hadoop2-virtual-machine 10.10.11.152 AvataDataNode
hadoop3-virtual-machine 10.10.11.160 AvataDataNode
hadoop4-virtual-machine 10.10.11.184 AvataDataNode
hadoop5-virtual-machine 10.10.12.25 AvatarNode(standby)
相关资源及描述
以下是Avatar方案部署相关的简单介绍。
1.首先关于Avatar方案对于Hadoop的备份是对Dfs的的单点备份,并不包括Mapred,因为Hadoop本身就不存在处理jobtracker单点故障的机制。
2.AvatarNode继承自Namenode,而并非对Namenode的修改,AvatarDataNode同样亦如此。故Avatar的启动机制是独立于Hadoop本身的启动机制。
3.在Avatar方案中,SecondaryNamenode的职责已包括在Standby节点中,故不需要再独立启动一个SecondaryNamenode。
4.AvatarNode必须有NFS的支持,用以实现两个节点间事务日志(editlog)的共享。
5.FB提供的Avatar源码中暂时并不能实现Primary和Standby之间的自动切换,可以借助于Zookeeper的lease机制来实现自动切换。
6.Primary和Standby之间的切换只包括从Standby切换到Primary,并不支持从Primary状态切换到Standby状态。
7.AvatarDataNode并不使用VIP和AvatarNode通信,而是直接与Primary及Standby通信,故需要使用VIP漂移方案来屏蔽两个节点间切换过程中的IP变换问题。有关与Zookeeper的整合,官方称将在之后的版本发布。
关于AvatarNode更详细的介绍,请参考http://blog.csdn.net/rzhzhz/article/details/7235789,
部署
一、下载补丁包
下载地址[HDFS-976]
在主页面下载AvatarNode.20.patch这个补丁包(基于Hadoop-0.20.2),其他补丁包请参考官方介绍。
二、安装补丁包
1. 把下载好的AvatarNode.20.patch补丁包,放到hadoop的根目录下
2. 在hadoop根路径下输入命令patch –p0< AvatarNode.20.patch, 会把相关源码的修改写入java文件中。
3. 因为该补丁包中的Standby类(341行)中有一行代码调用了0.20.2中没有的方法fsImage.saveNamespace(true);把该行注释掉并改成0.20.2中方法fsImage.saveFSImage();
4. 修改org.apache.hadoop.hdfs.server.namenode.FSNamesystem类(4310行),注释掉checkSuperuserPrivilege();因为后面在启动standby的时候会因为ugi=null的错误导致standby无法正常启动。
三、编译
1. 首先修改hadoop根目录下build.xml,注释掉904行和908行。如下: