Hadoop2.2.0中HDFS的高可用性实现原理

转载 2015年11月19日 18:03:42


转自: http://www.iteblog.com/archives/833


  在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了故障,那么将导致整个集群无法利用,直到NN重启或者在另一台主机上启动NN守护线程。
  主要在两方面影响了HDFS的可用性:
  (1)、在不可预测的情况下,如果NN所在的机器崩溃了,整个集群将无法利用,直到NN被重新启动;
  (2)、在可预知的情况下,比如NN所在的机器硬件或者软件需要升级,将导致集群宕机。
  HDFS的高可用性将通过在同一个集群中运行两个NN(active NN & standby NN)来解决上面两个问题,这种方案允许在机器破溃或者机器维护快速地启用一个新的NN来恢复故障。
  在典型的HA集群中,通常有两台不同的机器充当NN。在任何时间,只有一台机器处于Active状态;另一台机器是处于Standby状态。Active NN负责集群中所有客户端的操作;而Standby NN主要用于备用,它主要维持足够的状态,如果必要,可以提供快速的故障恢复。
  为了让Standby NN的状态和Active NN保持同步,即元数据保持一致,它们都将会和JournalNodes守护进程通信。当Active NN执行任何有关命名空间的修改,它需要持久化到一半以上的JournalNodes上(通过edits log持久化存储),而Standby NN负责观察edits log的变化,它能够读取从JNs中读取edits信息,并更新其内部的命名空间。一旦Active NN出现故障,Standby NN将会保证从JNs中读出了全部的Edits,然后切换成Active状态。Standby NN读取全部的edits可确保发生故障转移之前,是和Active NN拥有完全同步的命名空间状态。
  为了提供快速的故障恢复,Standby NN也需要保存集群中各个文件块的存储位置。为了实现这个,集群中所有的Database将配置好Active NN和Standby NN的位置,并向它们发送块文件所在的位置及心跳,如下图所示:

Hadoop2.2.0中HDFS的高可用性实现原理

Hadoop2.2.0中HDFS的高可用性实现原理


  在任何时候,集群中只有一个NN处于Active 状态是极其重要的。否则,在两个Active NN的状态下NameSpace状态将会出现分歧,这将会导致数据的丢失及其它不正确的结果。为了保证这种情况不会发生,在任何时间,JNs只允许一个NN充当writer。在故障恢复期间,将要变成Active 状态的NN将取得writer的角色,并阻止另外一个NN继续处于Active状态。
  为了部署HA集群,你需要准备以下事项:
  (1)、NameNode machines:运行Active NN和Standby NN的机器需要相同的硬件配置;
  (2)、JournalNode machines:也就是运行JN的机器。JN守护进程相对来说比较轻量,所以这些守护进程可以可其他守护线程(比如NN,YARN ResourceManager)运行在同一台机器上。在一个集群中,最少要运行3个JN守护进程,这将使得系统有一定的容错能力。当然,你也可以运行3个以上的JN,但是为了增加系统的容错能力,你应该运行奇数个JN(3、5、7等),当运行N个JN,系统将最多容忍(N-1)/2个JN崩溃。
  在HA集群中,Standby NN也执行namespace状态的checkpoints,所以不必要运行Secondary NN、CheckpointNode和BackupNode;事实上,运行这些守护进程是错误的。

Hadoop2.2.0中HDFS的高可用性实现原理

在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了故障...
  • w397090770
  • w397090770
  • 2013年11月14日 15:41
  • 3054

【总结】Hadoop2.2.0中HDFS的高可用性实现原理

在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了故...
  • dengxing1234
  • dengxing1234
  • 2017年03月09日 10:33
  • 23031

Hadoop2.X中HDFS的高可用性实现原理

在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了...
  • AnneQiQi
  • AnneQiQi
  • 2016年04月17日 21:23
  • 904

hadoop之 Hadoop2.2.0中HDFS的高可用性实现原理

在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了...
  • zhang123456456
  • zhang123456456
  • 2017年09月06日 22:00
  • 82

Hadoop2.0中HDFS高可用性的实现原理

在Hadoop1.0中,NameNode在HDFS集群中存在单点故障,每一个集群中只存在一个NameNode,如果NameNode所在的机器出现故障,那么整个集群就无法利用,直到NameNode重启或...
  • matengzZ
  • matengzZ
  • 2015年03月27日 08:43
  • 480

Hadoop HDFS高可用(HA)

版本记录: 2016-07-19 凌晨 初稿 在Hadoop 1.x 中,Namenode是集群的单点故障,一旦Namenode出现故障,整个集群将不可用,重启或者开启一个新的Namenode才能够从...
  • bingduanlbd
  • bingduanlbd
  • 2016年07月19日 09:18
  • 1472

HDFS高可用性

  • xiaoshunzi111
  • xiaoshunzi111
  • 2015年09月02日 13:47
  • 178

在eclipse上安装hadoop2.2.0插件

1、安装环境系统:centos6.5 hadoop2.2.0 eclipse:mars.1Release(4.5.1)2、插件的安装下载hadoop2.2.0的eclipse插件,解压之后放到ec...
  • GYQJN
  • GYQJN
  • 2015年10月31日 21:48
  • 1656

hadoop2.2.0+zookeeper3.4.5+hbase0.96.2+hive0.13.1分布式环境部署

一、hadoop2.2.0、zookeeper3.4.5、hbase0.96.2、hive0.13.1都是什么?   hadoop2.2.0的介绍以及特性,参考这里:http://blog.yido...
  • lhfredfly
  • lhfredfly
  • 2014年11月12日 17:41
  • 1444

Hadoop2的高可用性实现原理

Hadoop2.2.0中HDFS的高可用性实现原理
  • u012592062
  • u012592062
  • 2016年04月11日 21:26
  • 188
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hadoop2.2.0中HDFS的高可用性实现原理
举报原因:
原因补充:

(最多只允许输入30个字)