hadoop2.xHA机制的实现原理
在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机制的实现原理相关推荐
- java语言的实现机制_JAVA语言之Java NIO的工作机制和实现原理介绍
本文主要向大家介绍了JAVA语言之Java NIO的工作机制和实现原理介绍,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助. 前言 本文只简单介绍NIO的原理实现和基本工作流程 I/O和 ...
- 【探讨】javascript事件机制底层实现原理
前言 又到了扯淡时间了,我最近在思考javascript事件机制底层的实现,但是暂时没有勇气去看chrome源码,所以今天我来猜测一把 我们今天来猜一猜,探讨探讨,javascript底层事件机制是如 ...
- Android开发:图文分析 Handler通信机制 的工作原理
前言 在Android开发的多线程应用场景中,Handler机制十分常用 下面,将图文详解 Handler机制 的工作原理 目录 1. 定义 一套 Android 消息传递机制 2. 作用 在多线程的 ...
- Android刷新机制-View绘制原理
Android刷新机制-View绘制原理 Android刷新机制-SurfaceFlinger原理 Android刷新机制-Choreographer原理 一.概述 本文将从startActivity ...
- 【Java面试题】21 Java中的异常处理机制的简单原理和应用。
[Java面试题]21 Java中的异常处理机制的简单原理和应用. 参考文章: (1)[Java面试题]21 Java中的异常处理机制的简单原理和应用. (2)https://www.cnblogs. ...
- Apache ZooKeeper - Watch 机制的底层原理
文章目录 Watch 机制 API 使用 Watch 机制的底层原理 客户端 Watch 注册实现过程 ZKWatchManager 服务端 Watch 注册实现过程 WatchManager 服务端 ...
- 理解并取证:以太通道的动态协商机制的工作原理
理解并取证:以太通道的动态协商机制的工作原理 取自博主<思科CCNP交换技术详解与实验指南>试读版 3.1理解以太通道的理论部分 3.1.1提出以太通道的原因.以太通道的作用和功能 3.1 ...
- JVM 垃圾回收算法机制及其实现原理
前言 对于 JVM 来说,我们都不陌生,其是 Java Virtual Machine(Java 虚拟机)的缩写,它也是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.JV ...
- 哨兵 (sentinal) 机制的工作原理
哨兵 (sentinal) 机制的工作原理 什么是哨兵机制? Redis的哨兵(sentinel) 系统用于管理多个 Redis 服务器,该系统执行以下三个任务: 监控(Monitori ...
- Java反射机制实现与原理
本文介绍Android反射机制实现与原理,在介绍之前,要和Java进行比较,所以先看下Java中的反射相关知识: 一.反射的概念及在Java中的类反射 反射主要是指程序可以访问.检测和修改它本身状态或 ...
最新文章
- Lyft推出一种新的实时地图匹配算法
- 敲响警钟!智能汽车数据正在被“偷运出境”!
- sybase 珍藏(五)
- QT教程3: 日期和时间的对象操作
- 图像算法三:【图像增强--空间域】图像平滑、中值滤波、图像锐化
- 【网络】IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)
- Netflix OSS、Spring Cloud还是Kubernetes? 都要吧!
- Configure universal group membership caching
- 【计算机视觉】pycharm自制一个吉他扒谱软件(附源码)
- SIFT/SURF算法
- 如何彻底卸载3dmax2020_3DMax如何才能彻底卸载干净啊?
- java mset_调用java jredis mset方法异常
- 侯捷C++八部曲笔记(一、面向对象)
- 达梦出席湖北银行业金融机构信息科技风险管理研讨会
- 华为OD岗位机试指南
- 红旗linux中科红旗发布Linux7.0 RC1桌面版操作系统
- Bug的严重程度(缺陷程度)有哪几种。。。。
- linux中ls-f的用法,ls命令--Linux命令应用大词典729个命令解读
- java.lang.ClassCastException: cn.tedu.domain.User cannot be cast to java.lang.String
- ios scrollView滚动底部空白区域的问题 enhanced和enableBackToTop冲突
热门文章
- 运算符优先级(cpp/c)
- Docker 部署Dotnet Core MVC项目
- win7上Android环境搭建以及调试
- 2013 蓝桥杯校内选拔赛 java本科B组(题目+答案)
- 技巧:linux开机自动启动脚本(转)
- Matplotlib简介和pyplot的简单使用——subplot
- FireFox下表单无法刷新重置问题的分析与解决(转)
- java的四个元注解 @Retention @Target @Document @Inherited
- [数据清洗]- Pandas 清洗“脏”数据(三)
- Music Bugs : 不支持wma格式的歌曲播放