源自单点失效问题,也就是当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高可用性及其分布式系统思想基础的更多相关文章

  1. Apache hadoop namenode ha和yarn ha ---HDFS高可用性

    HDFS高可用性Hadoop HDFS 的两大问题:NameNode单点:虽然有StandbyNameNode,但是冷备方案,达不到高可用--阶段性的合并edits和fsimage,以缩短集群启动的时 ...

  2. 理解HDFS高可用性架构

    在Hadoop1.x版本的时候,Namenode存在着单点失效的问题.如果namenode失效了,那么所有的基于HDFS的客户端——包括MapReduce作业均无法读,写或列文件,因为namenode ...

  3. C#面向接口编程详解(1)——思想基础

    我想,对于各位使用面向对象编程语言的程序员来说,“接口”这个名词一定不陌生,但是不知各位有没有这样的疑惑:接口有什么用途?它和抽象类有什么区别?能不能用抽象类代替接口呢?而且,作为程序员,一定经常听到 ...

  4. Google Dapper-大规模分布式系统的基础跟踪设施

    [说明:本文是阅读Google论文"Dapper, a Large-Scale Distributed Systems Tracing Infrastructure"之后的一个简要 ...

  5. HDFS分布式文件系统设计思想

    HDFS设计目标 1)硬件错误是常态,数据保存需要冗余. 2)数据批量读取,Hadoop擅长数据分析而不是事务处理. 3)大规模数据集. 4)简单一致醒模型,降低系统复杂度,文件一次写入多次读取, 5 ...

  6. HDFS文件读写操作(基础基础超基础)

    环境 OS: Ubuntu 16.04 64-Bit JDK: 1.7.0_80 64-Bit Hadoop: 2.6.5 原理 <权威指南>有两张图,下次po上来好好聊一下 实测 读操作 ...

  7. java编程思想-基础

    interface: 方法默认为public:成员变量默认 static and final 对象数组的定义:理解? 多接口继承:可以多个接口,但只有一个具体类,具体类在前面 自:多接口继承时,来自不 ...

  8. [置顶] Hadoop2.2.0中HDFS的高可用性实现原理

    在Hadoop2.0.0之前,NameNode(NN)在HDFS集群中存在单点故障(single point of failure),每一个集群中存在一个NameNode,如果NN所在的机器出现了故障 ...

  9. Hadoop系列-HDFS基础

    基本原理 HDFS(Hadoop Distributed File System)是Hadoop的一个基础的分布式文件系统,这个分布式的概念主要体现在两个地方: 数据分块存储在多台主机 数据块采取冗余 ...

随机推荐

  1. 《Linux内核精髓:精通Linux内核必会的75个绝技》一HACK #15 ramzswap

    HACK #15 ramzswap 本节介绍将一部分内存作为交换设备使用的ramzswap.ramzswap是将一部分内存空间作为交换设备使用的基于RAM的块设备.对要换出(swapout)的页面进行 ...

  2. VFS文件系统结构分析

    VFS是Linux非常核心的一个概念,linux下的大部分操作都要用到VFS的相关功能.这里从使用者的角度,对VFS进行了简单说明.使用者不但需要知道Linux下有哪些文件操作的函数,还需要对VFS的 ...

  3. 并发基础(八) java线程的中断机制

    文章转载自 详细分析Java中断机制 1. 引言 当我们点击某个杀毒软件的取消按钮来停止查杀病毒时,当我们在控制台敲入quit命令以结束某个后台服务时--都需要通过一个线程去取消另一个线程正在执行的任 ...

  4. python 字体颜色的设置

    实现过程:       终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关.       转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27 ...

  5. servlet练习1

    1. 编写一个Servlet,当用户请求该Servlet时,显示用户于几点几分从哪个IP(Internet Protocol)地址连线至服务器,以及发出的查询字符串(Query String).查询一 ...

  6. hbase命名空间

    在HBase中,namespace命名空间指对一组表的逻辑分组,类似于数据库,便于对表在业务上划分 HBase系统默认定义了两个缺省的namespace hbase:系统内建表,包括namespace ...

  7. html页面中iframe导致JavaScript失效

    <body onload=“reset()”> <div id="part1"> some thing here .... <div> < ...

  8. xe Style

    //注意引用:vcl.themes, vcl.styles, IOutils procedure TForm1.FormCreate(Sender: TObject); var stylename: ...

  9. 在 WampServer 上手工安装 PHP 的多个版本

    手工安装新版本的PHP,只需以下步骤: 下载要安装的PHP版本.既然是用WampServer,那当然是下载Window版本的ZIP包啦:http://windows.php.net.解压到 Wamp的 ...

  10. rabbitmq /usr/lib/rabbitmq/bin/rabbitmq-server: line 85: erl: command not found

    问题描述:在使用命令/sbin/service rabbitmq-server start启动Rabbitmq时,报: Job for rabbitmq-server.service failed b ...