hadoophbase方案高可用性-nfs.pdf
HadoopHbase备份方案
--NFS
需求:实现namenode元数据的备份,解决namenode单点宕机导致集群不
可用的问题。
方案描述:当namenode所在服务器宕机的时候,我们可以利用namenode备
份的元数据迅速重构新的namenode来投入使用。
1.Hadoop本身提供了可利用secondarynamenode的备份数据来恢复
namenode的元数据的方案,但因为checkpoint(在每次checkpoint的时候
secondarynamenode才会合并并同步namenode的数据)的问题,
secondarynamenode的备份数据并不能时刻保持与namenode同步,也就是
说在namenode宕机的时候secondarynamenode可能会丢失一段时间的数
据,这段时间取决于checkpoint的周期。我们可以减小checkpoint的周期来
减少数据的丢失量,但由于每次checkpoint很耗性能,而且这种方案也不能从
根本上解决数据丢失的问题。所以如果需求上不允许这种数据的丢失,这种方案
可直接不予考虑。
2.Hadoop提供的另案就是NFS,一种即时备份namenode元数据的
方案,设置多个data(包括NFS),让namenode在持久化元数据的
时候同时写入多个,这种方案较第案的优势是能避免数据的丢失(这
里我们暂时不讨论NFS本身会丢失数据的可能性,毕竟这种几率很小很小)。既
然可以解决数据丢失的问题,说明这套方案在原理上是可行的,以下是测试结果。
测试环境:虚拟机5台(1G内存,40G硬盘,ubuntu操作系统,Hadoop-
0.20.2,Zookeeper-3.3.2,Hbase-0.20.6),一台namenode,3台datanode,
一台NFS服务器(备用namenode)。
测试步骤:
1.部署好Hadoop,Zookeeper,Hbase集群环境及NFS服务器环境。在
这里NFS服务器的结构应该和datanode的结构一样,在namenode
宕机的时候,NFS将作为备用namenode启用。(当然这只是用作测试用,实
际生产环境应该有专门的NFS服务器和备用namenode)。
2.在namenode上设置dfs.name.dir的为本地和NFS
3.启动集群并数据
4.关闭namenode所在机器(模拟namenode服务器宕机)
5.关闭datanode服务器上相关线程,分发集群配置文件,拷贝NFS
上的备份数据到新namenode的name,启动新集群(这里可用工具统一
分发配置分件和关闭datanode线程)
6.测试新集群,数据未丢失,集群正常使用
7.回到步骤3
8.关闭NFS服务器(模拟NFS服务器故障)
9.集群
10.重启NFS服务器
11.集群恢复
问题及可行性分析:
1.namenode的IP映射及问题,重新构造namenode可能导致客户
端IP不一致,可以在备用namenode投入使用的时候,配置其IP和原
namenode一致,或者采取的方案。
2.NFS服务器宕机导致集群,可配置NFS集群来确保NFS的可用性。