BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Facebook如何使用Avartarnode提升HDFS可靠性

| 作者 郑柯 关注 3 他的粉丝 发布于 2012年8月28日. 估计阅读时间: 5 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

在不久前的Hadoop峰会上,Facebook的工程师Andrew Ryan分享了他们如何使用Namenode和Avatarnode提升HDFS可靠性的方法。Ryan从2009年开始,就参与到了Facebook的Hadoop开发中。在他的帮助下,Facebook的Hadoop和HDFS数据基础设施,从一个数据中心的单个600TB集群,发展到了多个数据中心超过100多个HDFS集群。

Ryan首先分析了HDFS的Namenode机制。

图:Namenode,单点故障点

在HDFS中,客户端通过Namenode服务器完成文件系统的元数据操作,并与一个Datanode池通信,以发送和接受文件系统数据。数据在多个Datanode上都有复制,因此一个Datanode宕机不会出现数据丢失,对集群也不应是致命问题。

但是Namenode就不是这样,所有的元数据操作都要通过它完成。如果Namenode不可用,任何客户端就无法从HDFS完成读写操作,虽然客户端仍可以从Datanode中读出单个数据块,但是整个HDFS就处于宕机状态,所有依赖于HDFS的用户和应用就无法正常工作。 

因此,HDFS Namenode是一个单点故障点(SPOF)。

Ryan指出:在Facebook,他们希望知道这个问题的影响范围,并尝试找出解决这个问题的方法。

Data Warehouse是Facebook最大的HDFS部署之一,他们用其完成传统的HadoopMapReduce工作:有一些非常大的集群运行MapReduce批处理。由于集群很大,Namenode的负载非常高,CPU、内存、磁盘和网络都常常处于很大的压力之下。他们的统计发现:在Data Warehouse发生的问题中,41%是由HDFS造成的,这也是最大的问题肇因。

Ryan接下来指出:如果能有某种高可用的Namenode方案,也许能防止10%的Data Warehouse问题和突发的宕机时间,这仍然是一个巨大的胜利,因为这让他们可以执行计划好的软件与硬件维护操作。实际上,他们估计这可以减少他们50%计划好的宕机时间,而之前在这些时间里集群都是不可用的。

下图是他们的高可用Namenode HDFS架构的简化版本。

图:高可用的Namenode

在这个架构中,客户端可以与Primary Namenode或是Standby Namenode通信,Datanode也可以向这两个服务器发送块报告,实现了高可用的Namenode——Avatarnode。

Ryan提到:Facebook在两年前就开始研究Avatarnode。现在,这已经是一个开源项目,提供高可用的Namenode,支持热切换。目前,在Facebook中,Avatarnode已经进入生产环境,并运行在他们最大的Hadoop Data Warehouse集群中。

Avatarnode是一个双节点的、高可用的Namenode,需要手工完成故障切换。它将现有的Namenode代码包装在一个Zookeeper层中。Avatarnode的基本概念包括:

  • Primary Avatarnode和Standby Avatarnode角色可互换。
  • 当前的Primary Avatarnode主机名保存在Zookeeper中。
  • 修改后的Datanode的块报告要同时发送给Primary Avatarnode和Standby Avatarnode。
  • 修改后的HDFS客户端在开始每次事务前,要检查Zookeeper,如果以此事务失败,要再次检查Zookeeper。即使Avatarnode发生故障切换,一次写操作也可以得以完成。

图:客户端视角

图:Datanode视角

Ryan指出:接下来,他们要进一步提升Avatarnode,并将其整合在一个通用的高可用框架中,使之能够完成不需人工参与的、自动化的、安全的故障切换。

读者可以访问GitHub上Facebook发布的Hadoop版本,其中包括Avatarnode源代码。

除了Facebook之外,还有其他公司也致力于解决这个问题,包括:

InfoQ的读者,不知道您对如何解决Namenode高可用问题有何意见和看法?欢迎在评论中分享您的经验。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

他们在挑战CAP原则 by Liu Tiger

正确的方法应该是分析他们的业务需求,看看一致性,可用性和扩展性可以稍微牺牲那一个,然后设计自己的解决方案。

Re: 他们在挑战CAP原则 by wu eric

只能做到热备的效果,对于高并发的压力并未能解决问题。
Primary Namenode和Standby Avatarnode的数据共享采用NFS模式,也需要有数据热备的才能保证数据不丢失。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

2 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT