在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;事实上,运行这些守护进程是错误的。

hadoop2.xHA机制的实现原理相关推荐

  1. java语言的实现机制_JAVA语言之Java NIO的工作机制和实现原理介绍

    本文主要向大家介绍了JAVA语言之Java NIO的工作机制和实现原理介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 前言 本文只简单介绍NIO的原理实现和基本工作流程 I/O和 ...

  2. 【探讨】javascript事件机制底层实现原理

    前言 又到了扯淡时间了,我最近在思考javascript事件机制底层的实现,但是暂时没有勇气去看chrome源码,所以今天我来猜测一把 我们今天来猜一猜,探讨探讨,javascript底层事件机制是如 ...

  3. Android开发:图文分析 Handler通信机制 的工作原理

    前言 在Android开发的多线程应用场景中,Handler机制十分常用 下面,将图文详解 Handler机制 的工作原理 目录 1. 定义 一套 Android 消息传递机制 2. 作用 在多线程的 ...

  4. Android刷新机制-View绘制原理

    Android刷新机制-View绘制原理 Android刷新机制-SurfaceFlinger原理 Android刷新机制-Choreographer原理 一.概述 本文将从startActivity ...

  5. 【Java面试题】21 Java中的异常处理机制的简单原理和应用。

    [Java面试题]21 Java中的异常处理机制的简单原理和应用. 参考文章: (1)[Java面试题]21 Java中的异常处理机制的简单原理和应用. (2)https://www.cnblogs. ...

  6. Apache ZooKeeper - Watch 机制的底层原理

    文章目录 Watch 机制 API 使用 Watch 机制的底层原理 客户端 Watch 注册实现过程 ZKWatchManager 服务端 Watch 注册实现过程 WatchManager 服务端 ...

  7. 理解并取证:以太通道的动态协商机制的工作原理

    理解并取证:以太通道的动态协商机制的工作原理 取自博主<思科CCNP交换技术详解与实验指南>试读版 3.1理解以太通道的理论部分 3.1.1提出以太通道的原因.以太通道的作用和功能 3.1 ...

  8. JVM 垃圾回收算法机制及其实现原理

    前言 对于 JVM 来说,我们都不陌生,其是 Java Virtual Machine(Java 虚拟机)的缩写,它也是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.JV ...

  9. 哨兵 (sentinal) 机制的工作原理

    哨兵 (sentinal) 机制的工作原理 什么是哨兵机制? Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务:        监控(Monitori ...

  10. Java反射机制实现与原理

    本文介绍Android反射机制实现与原理,在介绍之前,要和Java进行比较,所以先看下Java中的反射相关知识: 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或 ...

最新文章

  1. Lyft推出一种新的实时地图匹配算法
  2. 敲响警钟!智能汽车数据正在被“偷运出境”!
  3. sybase 珍藏(五)
  4. QT教程3: 日期和时间的对象操作
  5. 图像算法三:【图像增强--空间域】图像平滑、中值滤波、图像锐化
  6. 【网络】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
  7. Netflix OSS、Spring Cloud还是Kubernetes? 都要吧!
  8. Configure universal group membership caching
  9. 【计算机视觉】pycharm自制一个吉他扒谱软件(附源码)
  10. SIFT/SURF算法
  11. 如何彻底卸载3dmax2020_3DMax如何才能彻底卸载干净啊?
  12. java mset_调用java jredis mset方法异常
  13. 侯捷C++八部曲笔记(一、面向对象)
  14. 达梦出席湖北银行业金融机构信息科技风险管理研讨会
  15. 华为OD岗位机试指南
  16. 红旗linux中科红旗发布Linux7.0 RC1桌面版操作系统
  17. Bug的严重程度(缺陷程度)有哪几种。。。。
  18. linux中ls-f的用法,ls命令--Linux命令应用大词典729个命令解读
  19. java.lang.ClassCastException: cn.tedu.domain.User cannot be cast to java.lang.String
  20. ios scrollView滚动底部空白区域的问题 enhanced和enableBackToTop冲突

热门文章

  1. 运算符优先级(cpp/c)
  2. Docker 部署Dotnet Core MVC项目
  3. win7上Android环境搭建以及调试
  4. 2013 蓝桥杯校内选拔赛 java本科B组(题目+答案)
  5. 技巧:linux开机自动启动脚本(转)
  6. Matplotlib简介和pyplot的简单使用——subplot
  7. FireFox下表单无法刷新重置问题的分析与解决(转)
  8. java的四个元注解 @Retention @Target @Document @Inherited
  9. [数据清洗]- Pandas 清洗“脏”数据(三)
  10. Music Bugs : 不支持wma格式的歌曲播放