记者近日获悉,京东商城在Hadoop高可用方面的研究,取得了重大成果。在Hadoop集群运维方面,一直以来都有这样一个难题困扰着业界:线上集群,由于NameNode的异常,极有可能导致Hadoop集群服务中断;NameNode软硬件系统定期维护、升级也一直是让人头疼的问题——整个集群可用性会受到影响。集群可能随时都有任务在执行,有些业务是需要7*24小时不间断地提供服务,服务中断会造成比较大的影响,被影响的业务有可能又会间接影响到其它业务。
到底是什么让线上集群存在这样的忧患呢?我们知道,NameNode的备份可以分为冷备,温备,热备等方案。目前,绝大多数Hadoop线上集群使用的是冷备的方案。冷备方案中,只存在一个NameNode节点对外提供服务,如果此节点服务发生异常,那么整个Hadoop集群提供的服务就会中断,造成集群不可用,且只能是人工介入修复,如果Hadoop集群存储的文件数量很多,NameNode重新启动的时间会很长,这就会给所有线上集群任务造成较大的影响,其损失无法估量。这个问题不仅是京东商城的问题,更是业界普遍面临的一个问题。
京东Hadoop高可用解决方案,很好地解决了以上问题。热备方案是在冷备方案的基础上,引入了一个从节点作为热备节点。当主节点出现异常时,从节点切换为主节点,Hadoop继续对外提供服务。
京东Hadoop高可用解决方案是以Cloudera CDH3作为基础,并在其上进行了大量的改造工作,完全自主研发实现的。目前,已经支持主、从热备的部署方式,并且通过共享存储设备,实现主、从节点的元数据同步。在热备基础之上,我们也实现了NameNode的自动切换功能。客户端、主、从节点、数据节点均通过zookeeper判断主节点信息,通过心跳判断NameNode健康状态。
Hadoop高可用解决方案逻辑架构图
在业界,对于Hadoop NameNode热备机制也有一些实现方案,例如: facebook,cloudera等IT巨头均在不遗余力地对Hadoop进行高可用方案的改造,并且已经取得了较大成果。京东商城对Hadoop的持续升级改造一直在进行着:通过zookeeper、心跳等实现了主、从节点的自动切换功能,同时充分地考虑到了防止网络波动、服务假死等情况;其次,引入了共享存储异常的处理机制,解决了在共享存储设备出现异常的情况下,也不会造成元数据丢失或者主/从节点元数据一致性的问题。
京东商城在Hadoop方面的技术突破,标志着京东商城在云计算领域的研究已经进入了深入阶段。