zoukankan      html  css  js  c++  java
  • HDFS High Availability Using the Quorum Journal Manager

    http://hadoop.apache.org/docs/r2.9.0/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

    背景

    在Hadoop 2.0.0以前,在一个HDFS集群中NameNode存在单点故障。每个集群中只有一个NameNode,如果这个机器不可用的话,那么整个集群将不可用,直到这个机器被重启或者其它的机器来替代它。这就意味着:

    • 万一NameNode机器宕机了,那么整个集群不可用
    • NameNode机器上的软件或者硬件升级的时候,集群不得不停止运行

    HDFS HA在每个集群中运行两个NameNode,一个是Active的,一个Passive的,作为热备。

    架构

    在典型的HA集群中,两个分开的机器均被配置为NameNode。在任意时刻,只有一个NameNode处于活动状态,另一个处于备用状态。处于活动状态的NameNode负责处理集群中所有客户端操作,此时处于备用状态的NameNode只是扮演者slave的角色。这个备用的NameNode维护足够的状态,以防快速容灾。

    备用NameNode为了保持和活动NameNode的状态同步,这两个节点用一组单独的后台进程进行通信,这个守护进程被叫做“JournalNodes”(简称JNs)。当处于活动状态的NameNode做了任何修改以后,它将修改的日志传给大部分JNs。备用的NameNode从JNs中读取这种修改,并且会把这种改变写到EditLog中。因为备用NameNode看到这些编辑,所有它将这种改变应用到自己的namespace中。

    要想保住HA集群正确的操作,至关重要的一点是,同一时间集群中只能有一个NameNode处于活动状态。为了保证这一点,JournalNodes只允许同一时间只有一个NameNode可以写。

    硬件资源

    为了部署一个HA集群,你需要准备下列资源:

    • NameNode machines:运行活动的和备用的NameNode的机器的硬件配置应该是相等的
    • JournalNode machines:必须至少3个JournalNode,因为Edit Log必须被写到大多数JNs上。也就是说,可以容忍单个机器失败。你也可以运行3个以上的JournalNode,但是为了能够增加系统承受失败的数量,你应该运行奇数个JNs(比如:3,5,7等等)。当运行的JournalNode数量是N的时候,系统最多可以容忍(N - 1)/ 2个失败,并且正常服务。

    其它参考

    http://blog.csdn.net/strongerbit/article/details/7013221/

  • 相关阅读:
    夺命雷公狗---PDO NO:5 使用PDO执行SQL语句之exec
    夺命雷公狗---PDO NO:4 的错误处理模式
    夺命雷公狗---PDO NO:3与连接有关的选项
    夺命雷公狗---PDO NO:02 链接mysql数据库的DSN
    夺命雷公狗---PDO NO:01 PDO介绍和安装
    夺命雷公狗---oop面向对象 NO:5 魔术方法set和get和isset和unset
    夺命雷公狗---oop面向对象 NO:4 封装
    夺命雷公狗---oop面向对象 NO:3 对象中的构造方法和析构方法
    夺命雷公狗---oop面向对象 NO:2 属性的介绍
    夺命雷公狗---oop面向对象 NO:1 面向对象的简介
  • 原文地址:https://www.cnblogs.com/cjsblog/p/8120198.html
Copyright © 2011-2022 走看看