一、HDFS的高可用性

1.概述

本指南提供了一个HDFS的高可用性(HA)功能的概述,以及如何配置和管理HDFS高可用性(HA)集群。本文档假定读者具有对HDFS集群的组件和节点类型具有一定理解。有关详情,请参阅Apache的HDFS的架构指南。

http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/HDFSHighAvailabilityWithQJM.html

2.背景

CDH4之前,在HDFS集群中NameNode存在单点故障(SPOF)。对于只有一个NameNode的集群,如果NameNode机器出现故障,那么整个集群将无法使用,直到NameNode重新启动。

NameNode主要在以下两个方面影响HDFS集群:

(1). NameNode机器发生意外,比如宕机,集群将无法使用,直到管理员重启NameNode

(2). NameNode机器需要升级,包括软件、硬件升级,此时集群也将无法使用

HDFS的HA功能通过配置Active/Standby两个NameNodes实现在集群中对NameNode的热备来解决上述问题。如果出现故障,如机器崩溃或机器需要升级维护,这时可通过此种方式将NameNode很快的切换到另外一台机器。

3.架构

HDFSHA的解决方案可谓百花齐放,Linux HA, VMware FT, sharedNAS+NFS, BookKeeper, QJM/Quorum Journal Manager, BackupNode等等。目前普遍采用的是shard NAS+NFS,因为简单易用,但是需要提供一个HA的共享存储设备。而社区已经把基于QJM/Quorum Journal Manager的方案merge到trunk了,clouderea提供的发行版中也包含了这个feature,这种方案也是社区在未来发行版中默认的 HA方案。

在HA具体实现方法不同的情况下,HA框架的流程是一致的。不一致的就是如何存储和管理日志。在Active NN和Standby NN之间要有个共享的存储日志的地方,Active NN把EditLog写到这个共享的存储日志的地方,Standby NN去读取日志然后执行,这样Active和Standby NN内存中的HDFS元数据保持着同步。一旦发生主从切换Standby NN可以尽快接管Active NN的工作(虽然要经历一小段时间让原来Standby追上原来的Active,但是时间很短)。

说到这个共享的存储日志的地方,目前采用最多的就是用共享存储NAS+NFS。缺点有:1)这个存储设备要求是HA的,不能挂掉;2)主从切换时需要 fencing方法让原来的Active不再写EditLog,否则的话会发生brain-split,因为如果不阻止原来的Active停止向共享存储 写EditLog,那么就有两个Active NN了,这样就会破坏HDFS的元数据了。对于防止brain-split问题,在QJM出现之前,常见的方法就是在发生主从切换的时候,把共享存储上存 放EditLog的文件夹对原来的Active的写权限拿掉,那么就可以保证同时至多只有一个Active NN,防止了破坏HDFS元数据。

Clouera为解决这个问题提出了QJM/Qurom Journal Manager,这是一个基于Paxos算法实现的HDFS HA方案。QJM的结构图如下所示:

QJM的基本原理就是用2N+1台JournalNode存储EditLog,每次写数据操作有大多数(>=N+1)返回成功时即认为该次写成功, 数据不会丢失了。当然这个算法所能容忍的是最多有N台机器挂掉,如果多于N台挂掉,这个算法就失效了。这个原理是基于Paxos算法的,可以参考http://en.wikipedia.org/wiki/Paxos_(computer_science)。

用QJM的方式来实现HA的主要好处有:1)不需要配置额外的高共享存储,这样对于基于commodityhardware的云计算数 据中心来说,降低了复杂度和维护成本;2)不在需要单独配置fencing实现,因为QJM本身内置了fencing的功能;3)不存在Single Point Of Failure;4)系统鲁棒性的程度是可配置的(QJM基于Paxos算法,所以如果配置2N+1台JournalNode组成的集群,能容忍最多N台 机器挂掉);5)QJM中存储日志的JournalNode不会因为其中一台的延迟而影响整体的延迟,而且也不会因为JournalNode的数量增多而 影响性能(因为NN向JournalNode发送日志是并行的)。

摘自:http://blog.csdn.net/dangyifei/article/details/8920164

转载于:https://www.cnblogs.com/bonelee/p/6516424.html

HDFS namenode 高可用(HA)搭建指南 QJM方式 ——本质是多个namenode选举master,用paxos实现一致性...相关推荐

  1. Hadoop HA+Federation 高可用联邦模式搭建指南

    为什么80%的码农都做不了架构师?>>>    简述 Hadoop 集群一共有4种部署模式,详见<Hadoop 生态圈介绍>. HA联邦模式解决了单纯HA模式的性能瓶颈( ...

  2. Hadoo集群--高可用HA配置(两台主机)

    目录 1 Hadoop HA架构详解 1.1 HDFS HA背景 1.2 HDFS HA架构 1.3 HDFS HA配置要素 1.4 HDFS HA配置参数 1.5 HDFS自动故障转移 1.6 YA ...

  3. 高可用(HA)Hadoop搭建Hive on Spark

    高可用(HA)Hadoop搭建Hive on Spark 本文只介绍hive on spark搭建,Hadoop高可用(HA)请自行操作, 安装HIVE 1. 解压hive tar -zxvf apa ...

  4. HA 高可用软件系统保养指南

    又过了一年 618,六月是公司一年一度的大促月,一般提前一个月各系统就会减少需求和功能的开发,转而更多去关注系统可用性.稳定性和管控性等方面的非功能需求.大促前的准备工作一般叫作「备战」,可以把线上运 ...

  5. 2021年大数据Hadoop(十四):HDFS的高可用机制

    全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 HDFS的高可用机制 HDFS高可用介绍 组件介绍 Nam ...

  6. Spark HA高可用部署、基于文件系统单点恢复、基于zookeeper的Standby Master、如何恢复到上一次活着master挂掉之前的状态 03

    1. Spark HA高可用部署 Spark Standalone集群时Master-Slaves架构的集群模式,和大部分的Master-Slaves结果集群一样,存在着Master单点故障的问题.如 ...

  7. corosync+pacemaker实现高可用(HA)集群(二)

    部署方案二(推荐):corosync+pacemaker 利用ansible自动安装corosync和pacemaker 注:关于ansible的具体使用可参见"ansible实现自动化自动 ...

  8. web应用的负载均衡、集群、高可用(HA)解决方案

    web应用的负载均衡.集群.高可用(HA)解决方案 参考文章: (1)web应用的负载均衡.集群.高可用(HA)解决方案 (2)https://www.cnblogs.com/huojg-21442/ ...

  9. sqlite c++插入 timestamp_Dqlite,基于sqlite 高可用(HA)数据库

    原文发表于我的博客, 特此版权声明 noosphere.site: Dqlite,基于sqlite 高可用(HA)数据库 csdn : Dqlite,基于sqlite 高可用(HA)数据库 k3s之前 ...

最新文章

  1. 信贷类行业对于业务管理系统搭建如何下手
  2. 【Python】创建、保存、复制虚拟环境 venv
  3. html5+css3网页设计与网站布局从新手到高手,HTML5+CSS3网页设计与网站布局从新手到高手...
  4. Android 插件化原理解析——Hook机制之AMSPMS
  5. java和mysql中md5+base64的执行结果
  6. 【算法与数据结构专场】BitMap算法基本操作代码实现
  7. python logging模块简单使用
  8. sdn框架的计算机网络管理,清华SDN实践--SDN 系统架构与数据中心应用
  9. svn复制出来的java_从svn下载的项目(或从别处拷贝来的)报错的可能情况以及解决经验...
  10. Spark scala和java的api使用
  11. 利用官方git svn插件迁移svn仓库
  12. Arcgis地籍图河流注记字体批量修改
  13. 分布式室内空气质量监测系统设计
  14. thinkphp集成webuploader实战
  15. 《数据库原理与应用》课程实验报告三 --数据库的嵌套查询
  16. 百度地图3D地球接入
  17. thinkphp6.0课堂笔记
  18. Mac终端 连接远程服务器
  19. 10月20日前!武汉市科技成果转化中试平台(基地)备案申报条件及流程梳理
  20. 润乾报表设计器——预览报表问题解决

热门文章

  1. linux date时间戳互相转换
  2. thttpd + Cgicc
  3. c语言变量在头文件定义变量吗,在头文件C中声明变量
  4. python获取数组中大于某一阈值的那些索引值_java矩阵计算及其在统计中的应用(一)...
  5. python可变参数和关键字参数位置_python的位置参数、默认参数、关键字参数、可变参数区别...
  6. arduino出现java错误_arduino在上传的时候出现这样的错误,在线求助大神!!!
  7. python【力扣LeetCode算法题库】820- 单词的压缩编码
  8. open_basedir php.ini,关于PHP文件包含目录配置 open_basedir
  9. 计算机领域中信息经转化,统考计算机应用基础06091002真题
  10. R语言中的esttab命令_R语言︱基本函数、统计量、常用操作函数