HDFS高可用性及其分布式系统思想基础
源自单点失效问题,也就是当NameNode不可用的时候,用什么办法可以平滑过渡?
最直接的办法是再添加一个备用的NN,这就产生了Active NameNode和Standby NameNode的设计思路。
接下来的一个问题是,如何让Standby Namenode的文件系统命名空间元数据与Active NameNode 的一致呢?
目前的解决办法有QJM方法和NFS方法。
QJM方案:添加多个Journal Node,这个数字是2F+1,通过Paxos协议保证数据的一致性,QJM最多可容忍F个JournalNode同时发生故障而系统仍然可以正常运行。
还有一个问题是,当ANN出现了故障之后,如何自动切换?
目前采用的方案是使用zookeeper实现“领导选举”。
参见下图(图片来自Linux公社):

现在有这样一个问题:
zookeeper如何实现“领导选举”?
以下内容来自《大数据日知录:架构与算法》一书。
Zookeeper在实现领导选举时,实现方法参加如下python代码:
ZookeeperLeaderElect.py
handle = zookeeper.init("localhost:2181",my_connection_watcher,10000,0);//初始化
(data,stat) = zookeeper.get(handle,"/services/myservice/leader",True)//获取领导者节点信息
if(stat=None)
path = zookeeper.create(handle,"/services/myservice/leader",hostname:info,[ZOO_OPEN_ACL_UNSAFE],zookeeper.EPHEMERAL)
if (path==None)//说明创建leader路径失败,也就是说无法将目前节点设置为领导者节点,也就意味着在程序执行过程中间,有其他的节点的进程设置了leader节点
(data,stat) = zookeeper.get(handle,"services/myservice/leader",True)
#其他服务器是领导者
#从leader节点读取并解析领导者地址信息
else
#当前节点已经成功设置为领导者节点
else
#其他服务器是领导者
#从leader节点读取并解析领导者地址信息
HDFS高可用性及其分布式系统思想基础的更多相关文章
- Apache hadoop namenode ha和yarn ha ---HDFS高可用性
HDFS高可用性Hadoop HDFS 的两大问题:NameNode单点:虽然有StandbyNameNode,但是冷备方案,达不到高可用--阶段性的合并edits和fsimage,以缩短集群启动的时 ...
- 理解HDFS高可用性架构
在Hadoop1.x版本的时候,Namenode存在着单点失效的问题.如果namenode失效了,那么所有的基于HDFS的客户端——包括MapReduce作业均无法读,写或列文件,因为namenode ...
- C#面向接口编程详解(1)——思想基础
我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到 ...
- Google Dapper-大规模分布式系统的基础跟踪设施
[说明:本文是阅读Google论文"Dapper, a Large-Scale Distributed Systems Tracing Infrastructure"之后的一个简要 ...
- HDFS分布式文件系统设计思想
HDFS设计目标 1)硬件错误是常态,数据保存需要冗余. 2)数据批量读取,Hadoop擅长数据分析而不是事务处理. 3)大规模数据集. 4)简单一致醒模型,降低系统复杂度,文件一次写入多次读取, 5 ...
- HDFS文件读写操作(基础基础超基础)
环境 OS: Ubuntu 16.04 64-Bit JDK: 1.7.0_80 64-Bit Hadoop: 2.6.5 原理 <权威指南>有两张图,下次po上来好好聊一下 实测 读操作 ...
- java编程思想-基础
interface: 方法默认为public:成员变量默认 static and final 对象数组的定义:理解? 多接口继承:可以多个接口,但只有一个具体类,具体类在前面 自:多接口继承时,来自不 ...
- [置顶] Hadoop2.2.0中HDFS的高可用性实现原理
在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了故障 ...
- Hadoop系列-HDFS基础
基本原理 HDFS(Hadoop Distributed File System)是Hadoop的一个基础的分布式文件系统,这个分布式的概念主要体现在两个地方: 数据分块存储在多台主机 数据块采取冗余 ...
随机推荐
- mongodb中查询返回指定字段
mongodb中查询返回指定字段 在写vue项目调用接口获取数据的时候,比如新闻列表页我只需要显示新闻标题和发表时间,点击每条新闻进入详情页的时候才会需要摘要.新闻内容等关于此条新闻的所有字段. ...
- mysql Date查询当天、本周,本月,上一个月的数据
出自:http://www.cnblogs.com/benefitworld/p/5832897.html 今天 select * from 表名 where to_days(时间字段名) = t ...
- concurrent.futures模块
1.concurrent.futures模块介绍 2.ThreadPoolExecutor线程池使用 3.ProcessPoolExecutor进程池使用 4.其他方法使用 1.concurrent. ...
- 使用AngularJS处理单选框和复选框的简单方法
在复选框中,可以绑定ng-model给false或者true值,即可选中或清除选中状态 如下图 而在单选框里就相对复杂一点,单选框要选中一个,就要给相同的name属性,然后绑定相同的ng-model, ...
- VS 类快捷键
生成类的构造函数 输入 ctrl,按两下 TAB 键 快速添加属性输入prop,按2下tab键 添加折叠输入reg,按2下tab键,快速输入#region输入class,按下2次tab建,快速输入类定 ...
- opencv一些资料
中文论坛: http://www.opencv.org.cn/forum.php?mod=forumdisplay&fid=1 yuv与mat转换: https://www.cnblogs.c ...
- windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)
前言: 最近公司做了一个工具,要将这个工具打包成一个可运行的程序,编写start.bat和start.sh在windows和linux下都可以运行. 在网上找了很多资料,最后终于找到一个可靠的资料,记 ...
- ios push local notification
UILocalNotification* localNotification = [[UILocalNotification alloc]init]; localNotification.alertB ...
- Producer-consumer problem in Python
from: http://agiliq.com/blog/2013/10/producer-consumer-problem-in-python/ By : Akshar Raaj We will s ...
- dmidecode详解
1.DMI简介 DMI (Desktop Management Interface, DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行. SMBI ...