2019独角兽企业重金招聘Python工程师标准>>>

在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的高可用性实现原理

  在任何时候,集群中只有一个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;事实上,运行这些守护进程是错误的。

转载于:https://my.oschina.net/u/1169079/blog/224923

Hadoop2.2.0中HDFS的高可用性实现原理相关推荐

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

    在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了故障 ...

  2. Hhadoop-2.7.0中HDFS写文件源码分析(二):客户端实现(1)

    一.综述 HDFS写文件是整个Hadoop中最为复杂的流程之一,它涉及到HDFS中NameNode.DataNode.DFSClient等众多角色的分工与合作. 首先上一段代码,客户端是如何写文件的: ...

  3. hadoop2.2.0 分布式存储hdfs完全分布式搭建及功能测试记录(一)----架构及原理介绍...

    0.文档说明: 本文是围绕hadoop2.2的分布式文件系统hdfs进行分布式存储功能测试,形成的hdfs分布式存储功能测试报告,其中主要包括三大部分内容: 第一部分介绍了hdfs的基本原理: 第二部 ...

  4. Hadoop2.6.0中YARN底层状态机实现分析

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/beliefer/article/details/51190842 前言 Hadoop2.x.x版本的 ...

  5. Hadoop-2.2.0中文文档——MapReduce 下一代 -——集群配置

    目的 这份文档描写叙述了怎样安装.配置和管理从几个节点到有数千个节点的Hadoop集群. 玩的话,你可能想先在单机上安装.(看单节点配置). 准备 从Apache镜像上下载一个Hadoop的稳定版本号 ...

  6. Hadoop2.6.0的FileInputFormat的任务切分原理分析(即如何控制FileInputFormat的map任务数量)...

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/beliefer/article/details/51122009 前言 首先确保已经搭建好Hadoo ...

  7. c++builder 6.0中OnCliked= fun实现的原理

    C++builer 6.0中使用委托类型,使用非常的方便 . Member Function Pointers and the Fastest Possible C++ Delegates Don C ...

  8. Hhadoop-2.7.0中HDFS写文件源码分析

    转载自:http://blog.csdn.net/lipeng_bigdata/article/details/53738376 一.综述 HDFS写文件是整个Hadoop中最为复杂的流程之一,它涉及 ...

  9. Hadoop2.2.0 中错误总结之(org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /test._COPYING)

    错误: [root@xiajie01 sbin]# hadoop fs -put /root/20131210110122880.doc  hdfs://192.168.30.169:9000/tes ...

  10. (转载)hadoop2.2.0集群的HA高可靠的最简单配置

    转载网址:http://www.cnblogs.com/meiyuanbao/p/hadoop2.html 简介 hadoop中的NameNode好比是人的心脏,非常重要,绝对不可以停止工作.在had ...

最新文章

  1. Grid R-CNN解读:商汤最新目标检测算法,定位精度超越Faster R-CNN
  2. 实例化Layout中的布局文件(xml)
  3. Spring-AOP @AspectJ进阶之增强织入的顺序
  4. 批处理启动和关闭VMware
  5. Vim中数字自增、自减
  6. 2022年全球营销趋势
  7. 怎样改动SharePoint管理中心的语言
  8. vscode 显示分支_Git以及vscode里的使用
  9. 图片 滚动切换效果(五) 高级篇
  10. mysql建表测试_总结MySQL建表、查询优化实用小技巧
  11. P3150 pb的游戏(1)
  12. 我错了——虚拟光驱 for linux
  13. 卡巴斯基6.0离线升级包的制作和使用方法
  14. 算法---逻辑智力题
  15. 阿里云OSS上传报错:InvalidAccessKeyIdError
  16. grpc-go源码剖析二十之grpc客户端帧接收器是如何处理不同的帧的?
  17. 百度云下载神器再升级!
  18. SQL 每月新增,复购人数,复购率
  19. 【C语言语法】表达式与语句的区别与联系
  20. 一个例子搞懂编码问题

热门文章

  1. 为Vista写程序,不把界面整漂亮点,你都不好意思和别人打招乎 :)
  2. 隐马尔科夫-维特比算法
  3. 二分图的最佳匹配(KM 算法)
  4. matlab乘与点乘的区别 (*与.* ^与.^)
  5. 电脑复制手机粘贴,这些Mac的隐藏玩法你知道吗?
  6. iOS底层探索之Block(一)——初识Block(你知道几种Block呢?)
  7. 傻瓜看完都可以简单使用Git
  8. /usr/bin/ld: cannot find -lstdc++ -lz问题
  9. 从ELK到EFK演进
  10. MariaDB和MySQL性能测试比较