最近在自学hadoop,看了很多网上的博客,很多人都提到了HA,但是具体的HA是怎么一回事,他指的是什么,我们为什么要考虑这个呢?
下面我就谈谈我个人对HA的理解。
HA(High Available)就是高可用性,我们学习分布式集群框架,经常的会考虑这个问题,那么Hadoop也是不可避免的,而Hadoop的HA具体是什么引起的呢?知道这个我们就可以提出具体的方案来解决它,或者提高HA了。
我们学习Hadoop都知道HDFS的管理是通过namenode来实现的,数据存储在Datanode上,而在Hadoop中namenode是存在sopf(single point of failure),而Datanode失败,Hadoop会自动的重启一个复制失败的备份数据,所以datanode不存在HA,那么Hadoop的HA主要是namenode的HA。而HA具体是怎么定义的呢?
HA主要是由可靠性和可维护性来定义的,说到这你可能懵了,下面我给出一个表达式,你就明白了,可靠性即系统正常提供服务的平均运行时间(MTTF);可维护性即系统失败后到恢复正常运行的时间(MTTR);HA=MTTF/MTTF+MTTR。
那么Hadoop中namenode的HA具体是说什么呢?我是这样理解的,Namenode的可靠性是由具体的硬件,软件来保障的,我们只能通过减少集群硬件故障率来提高可靠性。根据雅虎数据显示namenode硬件故障在3年内发生了3次,这个是很少的。那么Namenode的可维护性是影响HA的决定性因素。而Namenode的可维护性又取决于hdfs的元数据的可靠性和完整性,所以Hadoop的HA取决于元数据的完整性和可靠性。保证了元数据的完整性,减少了Namenode的可维护的时间,就是提高了HA。
具体的元数据包括什么,我们下期再见。如有什么问题,欢迎留言,一起讨论,学习。