美文网首页
HDFS&Yarn HA架构设计

HDFS&Yarn HA架构设计

作者: 吃货大米饭 | 来源:发表于2019-08-18 16:23 被阅读0次

    一、为什么要用HA

    在hadoop 2.0.0之前,在hdfs集群中,NameNode是存在单点故障问题的。每个集群只有一个NameNode,如果该机器或者进程不可用,那么集群将无法使用,直到NameNode重新启动或者在单独的机器启动。在企业中也绝对是HA的。

    HDFS:NN SNN(checkpoint) DN

    NN节点挂了 就不能提供对外服务
    所以需要两个NN active standby,任何时候只有1台 active的NN对外,另外一台是standby 做实时备份,随时准备standby--》active状态,对外提供服务那么外界是无感知.

    二、如何访问HDFS HA

    nn1 active hdfs://nn1:9000/ 挂了
    nn2 standby hdfs://nn2:9000/

    命名空间:挂载着 nn1 nn2 ,读写操作是直接通过命名空间的操作的
    hdfs://nameservice1/

    思考题:
    以下这三种访问方式有什么不同
    hdfs dfs -ls
    hdfs dfs -ls /
    hdfs dfs -ls hdfs://ip:9000/

    第一种访问的当前文件系统的登入用户的家目录,例如:/user/登入的用户/
    第二种访问的是当前文件系统的根目录
    第三种访问的是指定文件系统的跟目录

    三、集群进程分布

    HA最少要3台机器

    机器名称
    ruozedata001 ZK NN ZKFC(zookeeperFailoverControl) JN(JournalNode) DN RM NM
    ruozedata002 ZK NN ZKFC JN DN RM NM
    ruozedata003 ZK NN DN NM

    JN:>=3台,2n+1

    ZK: 2n+1 投票选举
    生产上,如果集群规模<20节点,一般建议配置5台
    如果集群规模20~100节点,一般建议配置7/9/11台
    如果集群规模>100台,一般建议配置11台
    zk 往往会和其他进程部署在同一个机器上,但是如果zk很繁忙(意味着服务器很繁忙),可能导致无法选举,那么建议单独部署zk。
    zk 不是越多越好,因为机器越多进行投票选举的时间越长

    四、主从架构

    master--->slave
    1.DN NM部署在同一个机器上 原因是由于数据本地化。
    2.大数据生态圈 大部分组件都是主从架构
    但是特别注意:hbase读写流程并不经过master进程。

    五、HDFS HA架构图

    2019-08-18_113754.png

    HA使用active NN, standby NN两个节点解决单点问题。两个NN节点通过JN集群,
    共享状态,通过ZKFC选举active,监控状态,自动备援。DN会同时向两个NN节点发送心跳。

    active nn:
    接收client的rpc请求并处理,同时自己editlog写一份,也向JN的共享存储上的editlog写一份。也同时接收DN的block report,block location updates 和 heartbeat。

    standby nn:
    同样会接受到从JN的editlog上读取并执行这些log操作,使自己的NN的元数据和activenn的元数据是同步的,使用说standby是active nn的一个热备。一旦切换为active状态,就能够立即马上对外提供NN角色的服务。也同时接收DN的block report,block location updates 和 heartbeat。

    jn:
    用于active nn,standby nn的同步数据,本身由一组的JN节点组成的集群,奇数,3台(CDH),是支持Paxos协议。保证高可用。

    ZKFC:
    监控NN的健康状态。向ZK集群定期发送心跳 ,让自己被选举,当自己被ZK选举为主时,zkfc进程通过rpc调用让nn转换为active状态

    拓展:
    结果双写:spark-->hbase(所有数据)+es(对外 两个月的数据 ttl)
    数据同步双写:mysql-->habse 设置A线,B线两种同步方案

    六、YARN HA架构图

    2019-08-18_154538.png

    RM:
    a.启动时会通过向ZK的/hadoop-ha目录写一个lock文件,写成功则为active,否则standby。
    standby RM会一直监控lock文件的是否存在,如果不存在就会尝试去创建,争取为active rm。
    b.会接收客户端的任务请求,接收和监控nm的资源的汇报,负责资源的分配与调度,启动和监控 ApplicationMaster(AM)

    NM:
    节点上的资源的管理,启动container 容器 运行task的计算,上报资源,container情况汇报给RM和任务的处理情况汇报给 ApplicationMaster(AM)

    ApplicationMaster(AM)driver : nm机器上的container
    单个application(job)的task的管理和调度,并向rm进行资源的申请,
    向nm发出 launch container指令,接收NM的task的处理状态信息。

    RMstatestore:
    a.RM的作业信息存储在ZK的/rmstore下,active RM向这个目录写app(作业)信息
    b.当active rm挂了,另外一个standby rm成功转换为active rm后,会从/rmstore目录读取相应的作业信息,
    重新构建作业的内存信息。然后启动内部服务,开始接收NM的心跳,构建集群资源的信息,并接收客户端的提交作业的请求等。

    ZKFC:
    自动故障转移 只作为RM进程的一个线程 而非独立的守护进程来启动

    七、HDFS&Yarn HA架构两者区别

    1.zkfc一个是进程,一个是线程
    2.hdfs ha有独立的数据中间件的集群维护,yarn ha作业调度信息维护在zk里面。
    3.HDFS中的DataNode 会向两个NameNode同时发送心跳。Yarn中NodeManager只会向activeRM上报资源

    相关文章

      网友评论

          本文标题:HDFS&Yarn HA架构设计

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