Hadoop基础之HA(高可用)

作者: landy8530 | 来源:发表于2017-11-25 16:55 被阅读266次

    1.Hadoop2.0产生背景

    早期的hadoop版本,NN(namenode)是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法 使用。为了解决这个问题,出现了一堆针对HDFS HA的解决方案( 如:Linux HA, VMware FT, shared NAS+NFS, BookKeeper, QJM/Quorum Journal Manager, BackupNode等 ); 在HA具体实现方法不同的情况下,HA框架的流程是一致的, 不一致的就是如何存储和 管理日志。在Active NN和Standby NN之间要有个共享的存储日志的地方,Active NN把EditLog写到这个共享的存储日志的地方, Standby NN去读取日志然后执行,这样Active和Standby NN内存中的HDFS元数据保持着同步。一旦发生主从切换Standby NN可以尽快接 管Active NN的工作.

    以上内容摘自培训班老师文档

    2.Hadoop1.0与Hadoop2.0区别

    image.png

    SecondaryNameNode 主要是在Hadoop1.x中存在,而在2.x中是在没有配置高可用的时候会存在。

    3.HDFS 2.x:解决HDFS 1.0中单点故障和内存受限问题

    1. 解决单点故障
    HDFS HA:通过主备NameNode解决
    如果主NameNode发生故障,则切换到备NameNode上
    
    1. 解决内存受限问题
    HDFS Federation(联邦)
    水平扩展,支持多个NameNode;
    每个NameNode分管一部分目录;
    所有NameNode共享所有DataNode存储资源
    
    1. 2.x仅是架构上发生了变化,使用方式不变,对HDFS使用者透明,HDFS 1.x中的命令和API仍可以使用

    4.HDFS 2.0 联邦制(Federation)

    通过多个namenode/namespace把元数据的存储和管理分散到多个节点中,使到namenode/namespace可以通过增加机器来进行水平扩展。

    能把单个namenode的负载分散到多个节点中,在HDFS数据规模较大的时候不会也降低HDFS的性能。可以通过多个namespace来隔离不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的namenode中。

    image.png

    上图摘自官网(http://hadoop.apache.org/docs/r2.7.4/hadoop-project-dist/hadoop-hdfs/Federation.html

    5.HDFS HA

    5.1HA的作用

    1. 主备NameNode
    2. 解决单点故障
    1.主NameNode对外提供服务,备NameNode同步主NameNode元数据,以待切换
    2.所有DataNode同时向两个NameNode汇报数据块信息
    
    1. 两种切换选择
    1.手动切换:通过命令实现主备之间的切换,可以用HDFS升级等场合
    2.自动切换:基于Zookeeper实现
    
    1. 基于Zookeeper自动切换方案
    1.ZooKeeper Failover Controller:监控NameNode健康状态,
    2.并向Zookeeper注册NameNode
    3.NameNode挂掉后,ZKFC为NameNode竞争锁,获得ZKFC 锁的NameNode变为active
    

    5.2 HA原理

    需要做HDFS HA的话,首先需要保证namenode中的fsimage和edits文件一致,需要产生的时候(格式化的时候)就保持一致。

    1. fsImage保证一致做法:需要在一台NameNode上生成后,拷贝到另外的NameNode上。

    2. 如何保证edits文件在所有NameNode一致?因为edits在HDFS文件发生变化时,edits文件就会发生变化,故需要借助第三方处理。

    利用NFS,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源,但是此种方式并不是真正意义上的高可用,在资源共享主机宕机后,就不可服务了。

    采用QJM(Quorum Journal Manager)的方式进行高可用:所有的edits文件交由JN管理,即使NameNode挂了也没事。

    HA原理.png

    6.延伸阅读

    1. Hadoop安装与集群配置
    2. Hadoop基本知识点之HDFS
    3. Hadoop之HDFS的Java实现
    4. Hadoop之YARN的安装与测试

    相关文章

      网友评论

        本文标题:Hadoop基础之HA(高可用)

        本文链接:https://www.haomeiwen.com/subject/qrpcbxtx.html