GMTC深圳站售票最后一周,点击查看最新日程>> 了解详情
写点什么

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

  • 2012 年 8 月 27 日
  • 本文字数:1501 字

    阅读完需:约 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 高可用问题有何意见和看法?欢迎在评论中分享您的经验。

2012 年 8 月 27 日 20:122141
用户头像

发布了 479 篇内容, 共 132.6 次阅读, 收获喜欢 36 次。

关注

评论

发布
暂无评论
发现更多内容

一致性Hash

梅子黄时雨

极客大学架构师训练营

架构师第五周总结

suke

极客大学架构师训练营

分布式事务精华总结篇

奈学教育

分布式 分布式事务

架构师训练营第五周学习总结

whiter

极客大学架构师训练营

大型网站技术架构--架构篇

wei

单体架构知识点及单体架构的缺陷

古月木易

单体架构

单体架构知识点及单体架构的缺陷

奈学教育

单体架构

架构师训练营」第 5 周作业

edd

极客大学架构师训练营

week5 学习总结

任小龙

第5周作业

andy

Lesson 5 分布式系统架构- 分布式缓存和队列 心得笔记

edd

致那些高考结束的同学们

小天同学

读书 读书感悟 高考

第5周总结

andy

啃碎并发(六):Java线程同步与实现

猿灯塔

技术选型:如何构建技术选型方法论

CHEN川

极客大学架构师训练营 技术选型

架构师训练营 Week5作业

平淡人生

架构师训练营Week5总结

平淡人生

十代酷睿凌云!开启游戏本新篇章的机械师“战空”F117-V

最新动态

架构0期Week5Work1

Nan Jiang

架构师第五周作业

suke

极客大学架构师训练营

架构师训练营第五周作业

James-Pang

极客大学架构师训练营

week5. 课后作业

dj_cd

第5周-总结

Dawn

架构师训练营第五周总结

架构师 极客大学架构师训练营

RxJS学习总结

shinji

RXJS

第五周作业 - 一致性 hash 实现

netbanner

极客大学架构师训练营

一致性哈希算法分析与go语言实现

superman

Go 极客大学架构师训练营 一致性Hash算法

分布式事务精华总结篇

古月木易

分布式 分布式事务

【获奖名单公示】仅需发布3篇+文章,极客时间每日一课 VIP 等多重礼品,免费拿~

InfoQ写作平台官方

写作平台 征稿 活动专区

Week 05 总结

鱼_XueTr

缓存 分布式数据库 消息队列

第五周学习总结

李白

数据cool谈(第2期)寻找下一代企业级数据库

数据cool谈(第2期)寻找下一代企业级数据库

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