http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

背景

在Hadoop 2.0.0以前,在一个HDFS集群中NameNode存在单点故障。每个集群中只有一个NameNode,如果这个机器不可用的话,那么整个集群将不可用,直到这个机器被重启或者其它的机器来替代它。这就意味着:

  • 万一NameNode机器宕机了,那么整个集群不可用
  • NameNode机器上的软件或者硬件升级的时候,集群不得不停止运行

HDFS HA在每个集群中运行两个NameNode,一个是Active的,一个Passive的,作为热备。

架构

在典型的HA集群中,两个分开的机器均被配置为NameNode。在任意时刻,只有一个NameNode处于活动状态,另一个处于备用状态。处于活动状态的NameNode负责处理集群中所有客户端操作,此时处于备用状态的NameNode只是扮演者slave的角色。这个备用的NameNode维护足够的状态,以防快速容灾。

备用NameNode为了保持和活动NameNode的状态同步,这两个节点用一组单独的后台进程进行通信,这个守护进程被叫做“JournalNodes”(简称JNs)。当处于活动状态的NameNode做了任何修改以后,它将修改的日志传给大部分JNs。备用的NameNode从JNs中读取这种修改,并且会把这种改变写到EditLog中。因为备用NameNode看到这些编辑,所有它将这种改变应用到自己的namespace中。

要想保住HA集群正确的操作,至关重要的一点是,同一时间集群中只能有一个NameNode处于活动状态。为了保证这一点,JournalNodes只允许同一时间只有一个NameNode可以写。

硬件资源

为了部署一个HA集群,你需要准备下列资源:

  • NameNode machines:运行活动的和备用的NameNode的机器的硬件配置应该是相等的
  • JournalNode machines:必须至少3个JournalNode,因为Edit Log必须被写到大多数JNs上。也就是说,可以容忍单个机器失败。你也可以运行3个以上的JournalNode,但是为了能够增加系统承受失败的数量,你应该运行奇数个JNs(比如:3,5,7等等)。当运行的JournalNode数量是N的时候,系统最多可以容忍(N - 1)/ 2个失败,并且正常服务。

其它参考

http://blog.csdn.net/strongerbit/article/details/7013221/

HDFS High Availability Using the Quorum Journal Manager的更多相关文章

  1. [HDFS Manual] CH4 HDFS High Availability Using the Quorum Journal Manager

    HDFS High Availability Using the Quorum Journal Manager HDFS High Availability Using the Quorum Jour ...

  2. Dream------Hadoop--Hadoop HA QJM (Quorum Journal Manager)

    In a typical HA cluster, two separate machines are configured as NameNodes. At any point in time, ex ...

  3. Configuring HDFS High Availability

    Configuring HDFS High Availability 原文请訪问 http://blog.csdn.net/ashic/article/details/47024617,突袭新闻小灵儿 ...

  4. HDFS High Availability(HA)高可用配置

    高可用性(英语:high availability,缩写为 HA) IT术语,指系统无中断地执行其功能的能力,代表系统的可用性程度.是进行系统设计时的准则之一. 高可用性系统意味着系统服务可以更长时间 ...

  5. HDFS之Qurom Journal Manager(QJM)实现机制分析

    前言 1.1背景 自从hadoop2版本开始,社区引入了NameNode高可用方案.NameNode主从节点间需要同步操作日志来达到主从节点元数据一致.最初业界均通过NFS来实现日志同步,大家之所以选 ...

  6. HDFS Federation与HDFS High Availability详解

    HDFS Federation NameNode在内存中保存文件系统中每个文件和每个数据块的引用关系,这意味着对于一个拥有大量文件的超大集群来说,内存将成为限制系统横向扩展的瓶颈.在2.0发行版本系列 ...

  7. 构建高可靠hadoop集群之3- Quorum Journal Manager

    在正式环境中,搭建高可靠(ha)的系统是必须的. 例如oralce的rac,apache集群,windows服务器集群 本文不再赘言ha的重要性. 本文主要是对 http://hadoop.apach ...

  8. 分布式系统理论之Quorum机制

    一,Quorum机制介绍 在分布式系统中有个CAP理论,对于P(分区容忍性)而言,是实际存在 从而无法避免的.因为,分布系统中的处理不是在本机,而是网络中的许多机器相互通信,故网络分区.网络通信故障问 ...

  9. hadoop2.x HDFS HA linux环境搭建

    HDFS High Availability Using the Quorum Journal Manager 准备3台机器可以更多   NN  DN  ZK  ZKFC  JN  RM  DM  n ...

随机推荐

  1. javaWeb中URLEncoder.encode空格问题

    近期开发一个在线坐席的功能.发现推送的消息中空格变成了+ .查询发现URLEncoder.encode的问题.曾经用的时候也没注意过,解决的方法网上是对URLEncoder.encode的之后的字符串 ...

  2. openstack-glance API 镜像管理的部分实现和样例

    感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限.错误之处在所难免.欢迎指正. 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...

  3. Error code:1728 Cannot load from mysql.proc. The table is probably corrupted

    Error code:1728 Cannot load from mysql.proc. The table is probably corrupted http://bugs.mysql.com/b ...

  4. cs231n --- 1:线性svm与softmax

    cs231n:线性svm与softmax 参数信息: 权重 W:(D,C) 训练集 X:(N,D),标签 y:(N,1) 偏置量bias b:(C,1) N:训练样本数:  D:样本Xi 的特征维度, ...

  5. iOS屏幕适配(尺寸适配)

    屏幕尺寸适配:一 在.pch中加入以下代码,在定义每个尺寸值的时候都调用下边的宏 //以iphone7为例 定义 view相关的宽高宏#define IPHONEHIGHT(b) [UIScreen ...

  6. ABP 用swagger UI测试API报401无权限访问问题

    问题描述: 当我们用swagger UI对Web API 进行测试时报401错误 我们点开GET /api/services/app/Role/GetAll,输入参数 点击Try it out!按钮, ...

  7. hibernate核心API使用

    1.Configuration 加载核心配置文件,核心配置文件名称和位置固定,否则会找不到 2.SessionFactory对象一个项目只创建一个,大家公用 根据配置文件和映射关系创建表 由于要创建表 ...

  8. StringUtils工具类常用方法

    前言:工作中看到项目组里的大牛写代码大量的用到了StringUtils工具类来做字符串的操作,便学习整理了一下,方便查阅. isEmpty(String str) 是否为空,空格字符为false is ...

  9. Arcade初探[0] 目录与导航

    2017年6月,ESRI开发者页面出现了一个新玩意儿:Arcade. 连接:点我 这是什么东西呢?有什么用呢? 1. 是什么 Arcade一种表达语言,可以在ArcGIS平台上使用.不管是编写简单的脚 ...

  10. ArcGIS API for JavaScript 4.2学习笔记[19] 搜索小部件——使用更多数据源

    上一篇中提到,空间搜索小部件是Search这个类的实例化,作为视图的ui属性添加进去后,视图就会出现搜索框了. 这节的主体代码和上篇几乎一致,区别就在上篇提及的sources属性. 先看看结果: 由于 ...