HDFS namenode 高可用(HA)搭建指南 QJM方式 ——本质是多个namenode选举master,用paxos实现一致性...
一、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实现一致性...相关推荐
- Hadoop HA+Federation 高可用联邦模式搭建指南
为什么80%的码农都做不了架构师?>>> 简述 Hadoop 集群一共有4种部署模式,详见<Hadoop 生态圈介绍>. HA联邦模式解决了单纯HA模式的性能瓶颈( ...
- 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 ...
- 高可用(HA)Hadoop搭建Hive on Spark
高可用(HA)Hadoop搭建Hive on Spark 本文只介绍hive on spark搭建,Hadoop高可用(HA)请自行操作, 安装HIVE 1. 解压hive tar -zxvf apa ...
- HA 高可用软件系统保养指南
又过了一年 618,六月是公司一年一度的大促月,一般提前一个月各系统就会减少需求和功能的开发,转而更多去关注系统可用性.稳定性和管控性等方面的非功能需求.大促前的准备工作一般叫作「备战」,可以把线上运 ...
- 2021年大数据Hadoop(十四):HDFS的高可用机制
全网最详细的Hadoop文章系列,强烈建议收藏加关注! 后面更新文章都会列出历史文章目录,帮助大家回顾知识重点. 目录 本系列历史文章 前言 HDFS的高可用机制 HDFS高可用介绍 组件介绍 Nam ...
- Spark HA高可用部署、基于文件系统单点恢复、基于zookeeper的Standby Master、如何恢复到上一次活着master挂掉之前的状态 03
1. Spark HA高可用部署 Spark Standalone集群时Master-Slaves架构的集群模式,和大部分的Master-Slaves结果集群一样,存在着Master单点故障的问题.如 ...
- corosync+pacemaker实现高可用(HA)集群(二)
部署方案二(推荐):corosync+pacemaker 利用ansible自动安装corosync和pacemaker 注:关于ansible的具体使用可参见"ansible实现自动化自动 ...
- web应用的负载均衡、集群、高可用(HA)解决方案
web应用的负载均衡.集群.高可用(HA)解决方案 参考文章: (1)web应用的负载均衡.集群.高可用(HA)解决方案 (2)https://www.cnblogs.com/huojg-21442/ ...
- sqlite c++插入 timestamp_Dqlite,基于sqlite 高可用(HA)数据库
原文发表于我的博客, 特此版权声明 noosphere.site: Dqlite,基于sqlite 高可用(HA)数据库 csdn : Dqlite,基于sqlite 高可用(HA)数据库 k3s之前 ...
最新文章
- vim+cscope+ctags打造属于自己的IDE
- 没有永远的对手只有永远的利益,浪潮与SAP合作了!
- 用odac连接oracle 12154,OracleConnection 連線出現「ORA-12154: TNS: 無法解析指定的連線 ID」...
- 如何成为一个伟大的 JavaScript 程序员
- Java学习笔记_选择语句
- mybatis_user_guide(2)mybatis3.4.0快速入门
- php程序员写bug,程序员的修炼-我们为什么会编写BUG
- catia怎么将特征参数化_VSLAM中特征点的参数化表示
- oracle数据库表excel文件位置,Excel数据导入到oracle数据库表方法
- linux导出表数据dmp,导出表的部分数据到dmp文件中
- Debian for ARM install python 3.5.x
- 传奇服务器怎么修改背包金刚石显示,教你在服务器加自己的装备
- Android jetpack-DataStore
- 【CentOS8.0开启防火墙放行8081端口】
- uni-app微信小程序短信验证、微信支付
- 翻译PDF 翻译PPT 保留原格式 一键搞定
- matlab用fft对信号进行频谱分析,用fft对信号作频谱分析matlab程序
- 炼数成金CUDA视频教程——第三课1——学习笔记
- Python中文社区开源项目计划:ImagePy
- win10开机慢怎么解决_win10开机速度变慢的解决方法教程
热门文章
- 河池学院计算机与信息工程学院官网 领导,关于成立我院宣传工作领导小组的方案...
- python commands_python commands模块在python3.x被subprocess取代
- python对列表进行去重_Python对列表去重的4种方法
- spss分析qpcr数据_SPSS 数据分析,掌握这 6 大模块就够了!
- 下列代码的执行结果是 php,执行下列代码后的结果是: $x=15; echo $x++; $y=20; echo ++y;...
- java 实现部门树_(java实现)哈夫曼(Huffman)树编码(自编压缩项目基础)
- android .a .so区别,.so,.la和.a库文件有什么区别?
- 【以太坊】javascript控制台完整交易流程
- 每天一个linux命令(31): /etc/group文件详解
- 字节跳动最新开源!java语言程序设计进阶篇