zoukankan      html  css  js  c++  java
  • Hadoop_32_HDFS高可用机制

    1.高可靠概念

      HA(High Available):高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动

    节点及备用节点

    2.Hadoop的HA运作机制:

      :正式引入HA机制是从hadoop2.0开始,之前的版本中没有HA机制,

      :Hadoop-HA集群运作机制介绍所谓HA,即高可用(7*24小时不中断服务)实现高可用最关键的是消除单点故障

      :Hadoop-HA严格来说应该分成各个组件的HA机制——HDFS的HA、YARN的HA

    2.HDFS的HA机制详解:

      1.可否通过keepalive来进行NameNode的高可用?不可以,因为NameNode上有大量的元数据状态信息需要维护

      2.解决方法:

        需要两个NameNode,一个对外工作(active),一个后补(standby),这就涉及到元数据同步的问题。可以

    将edits保存到第三方,standy的NameNode即可收到edits,从而保持元数据的更新。为了系统的稳定,第三方的

    组件最好也实现高可用。叫做qjournal,基于ZooKeeper实现的分布式系统,功能是进行edits日志管理。这样提

    高了可靠性和可用性,但是牺牲了一部分数据一致性

      如果active宕机了,standby立即可以切换到active状态并对外提供服务;需要一个状态管理功能模块。每个

    NameNode中有个程序ZKFC(zkfailover Controller),基于ZooKeeper做状态切换,ZKFC通过RPC的接口调用NameNode,

    然后就可以确认NameNode的状态。一旦active上面的ZKFC发现active挂掉了,它向ZooKeeper发送状态变化信息,

    standby的ZKFC监听到节点变化后,通知NameNode切换到Active状态,随后在ZooKeeper上建立状态锁。通知切换之

    前为了保证之前的NameNode一定被隔离,ZKFC会直接调用kill -9杀掉之前的NameNode进程,如果等一段时间没有响

    应,会调用用户脚本来进行操作,用户脚本返回0表示隔离成功。

      宕机的active重启后,ZKFC会检测到状态锁的存在,让其处于standby状态。此时不需要SecondaryNameNode了,

    交给standby的NameNode负责

      

    总结:

      HDFS的HA机制通过双namenode消除单点故障

      双namenode协调工作的要点:

      A、元数据管理方式需要改变:内存中各自保存一份元数据,Edits日志只能有一份,只有Active状态的namenode节点可

    以做写操作,两个namenode都可以读取edits,共享的edits放在一个共享存储中管理(qjournal和NFS两个主流实现)

      B、需要一个状态管理功能模块:实现了一个zkfailover,常驻在每一个namenode所在的节点,每一个zkfailover负责监

    控自己所在namenode节点,利用zk进行状态标识当需要进行状态切换时,由zkfailover来负责切换,切换时需要防止brain

    split现象的发生

       

        

  • 相关阅读:
    Composite in Javascript
    Model Validation in Asp.net MVC
    HttpRuntime.Cache vs. HttpContext.Current.Cache
    Controller Extensibility in ASP.NET MVC
    The Decorator Pattern in Javascript
    The Flyweight Pattern in Javascript
    Model Binding in ASP.NET MVC
    Asp.net MVC
    jQuery Ajax 实例 全解析
    ASP.NET AJAX入门系列
  • 原文地址:https://www.cnblogs.com/yaboya/p/9266864.html
Copyright © 2011-2022 走看看