Hadoop HA 学习

     Hadoop HA是一个非常需要重视的问题。众所周知,Haddop是一个SPOF(single point of failure)系统,存在单点问题。对于7×24生产环境,是具有极大的风险。

    目前社区版的做法是有两种保障机制,第一种是可以设置一个NFS的目录,存储fsimage和editlog,存储的是实时数据,这样当namenode挂掉后能够通过fsimage和editlog进行完全恢复。第二种是设置secondary namenode,名称很迷惑,但其作用是对fsimage和editlog进行定期的merge,默认是5分钟,所以获得的数据是过期的,存在数据丢失,但是能够恢复大部分数据。

    对于生产集群来说,很多操作不能够停止太长时间。而对于上面两种方式,即使能够恢复数据,重新将namenode上线,在经过datanode的blockReport过程,需要很长时间。相同的问题也出现在打patch上,如果对datanode打patch影响还不是很大,可以一台一台打patch,即使下线一台datanode,数据的多份拷贝不会丢失,client可以通过与namenode通信获得其它的副本对应的datanode的位置,整体的服务没有停止。但是如果对于namenode打patch,就需要停止整体服务,重新上线后会等待大量时间在datanode的blockReport上。根据facebook的一篇文章,他们重新启动12PB的数据的集群需要大概半个小时。

    Facebook的做法是在不改变namenode和datanode整体逻辑的基础上,在其上层开发出AvaterNode,AvatarNode的意思就是支持互相切换,就像人可以切换Na'vi族人,也可以切换过来一样。他们的做法是提供一个Primary Avatar和一个Standby Avatar,通过virual IP来设置IP地址。Primary Avatar对外提供服务,设置了NFS目录,将FSImage和EditLog远程存储。Standby Avatar将NFS目录中的FSImage和EditLog读取过来进行同步,并且设置Standby Avatar一直处于safemode状态,不影响正常操作。这样Standby Avatar相当于一个热拷贝,获得了所有的实时数据。在Datanode部分也进行了封装,所有Datanode都像两个Namenode汇报,保证数据的实时性。这样,当Primary Avatar下线后,通过操作可以迅速让Standby Avatar切换为Primary Avatra上线。时间在分钟级,并且不需要重启。

    同时还稍微看了一下中移动写的他们的NNC集群,采用的是在一个Namenode上插入Deamon,将每个操作同步到slave namenode中。看起来性能应该会下降很多,他们也没有提供数据。

你可能感兴趣的:(hadoop)