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现象的发生

       

        

  • 相关阅读:
    git npm包管理
    c# 多线程多个参数
    c# 笔试面试题01
    数据笔试题
    SQL重复记录查询的几种方法
    大数据库脚本文件执行
    ef5 数据库操作
    nodejs ejs模板数据库操作
    node jade模板数据库操作
    nodejs 中jead模板改为ejs
  • 原文地址:https://www.cnblogs.com/yaboya/p/9266864.html
Copyright © 2011-2022 走看看