alpha中HDFS 如何实现High Availability

高可用性HA(HighAvailability)指的是通过尽量缩短因日常维护操作(计划)和突发的系统崩溃(非计划)所导致的停机时间,以提高系统和应用的可用性。

高可用性(HA)的功能:

1、软件故障监测与排除

2、备份和数据保护

3、管理站能够监视各站点的运行情况,能随时或定时报告系统运行状况,故障能及时报告和告警,并有必要的控制手段

4、实现错误隔离以及主、备份服务器间的服务切换

背景分析:

HDFS的高可用性(HA)是Hadoop的一个缺点,不管是HDFS还是Map-Reduce,都是采用单master的方式,集群中的其他机器都是与一台中心机器进行通信,如果这个中心机器挂了,集群就只有不工作了(不一定数据会丢失,但是至少需要重启等等工作),让可用性变得更低。这个一般叫做单点失败 (single point of failure,SPOF)。本文通过比较Hadoop各版的改变还查看对这个问题的解决方案。

问题描述:

解决Namenode结点宕机时导致的集群不可用, 增强HDFS的高可用性

方案描述:

在Hadoop0.23.1版本以前,当Namenode所在服务器宕机时,可利用Namenode备份的元数据重构新的Namenode来投入使用。

方案一:

Hadoop本身提供了可利用secondaryNamenode的备份数据来恢复Namenode的元数据的方案,但因为checkpoint(在每次checkpoint的时候secondaryNamenode才会合并并同步Namenode的数据)的问题,secondaryNamenode的备份数据并不能时刻保持与Namenode同步,即在Namenode宕机的时候secondaryNamenode会丢失一段时间的数据,这段时间取决于checkpoint的周期。可以减小checkpoint的周期来减少数据的丢失量,但由于每次checkpoint很耗性能,而且这种方案也不能从根本上解决数据丢失的问题。

缺点:secondaryNamenode的备份数据并不能时刻保持与Namenode同步,不能从根本上解决数据丢失的问题。

方案二:

Hadoop提供的另一种方案就是NFS(网络文件系统),一种即时备份Namenode元数据的方案,设置多个data目录(包括NFS目录),让Namenode在持久化元数据的时候同时写入多个目录,这种方案较第一种方案的优势是能避免数据的丢失(这里我们暂时不讨论NFS本身会丢失数据的可能性,毕竟这种几率很小很小)。

缺点:

1.namenode的IP映射及访问问题,重新构造namenode可能导致客户端访问IP不一致,但可以在备用namenode投入使用的时候,配置其IP和原namenode一致

2.NFS服务器宕机导致集群瘫痪,可配置NFS集群来确保NFS的可用性。

3.重新构造namenode的时延问题,不能确保故障发生时能立即投入使用,对于需要即时使用的项目建议采用namenode热备方案。这是最关键的,会有中断。这对于高可用性集群是不可接受的

注:方案一和二选自:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/fb3ce26a705dffb509716a50f7772585.html