zoukankan      html  css  js  c++  java
  • Hadoop 5、HDFS HA 和 YARN

    Hadoop 2.0 产生的背景
    Hadoop 1.0 中HDFS和MapReduce存在高可用和扩展方面的问题
      HDFS存在的问题
        NameNode单点故障,难以用于在线场景
        NameNode压力过大,内存受限,影响系统扩展
        MapReduce存在问题
        JobTracker 单点故障
        JobTracker 压力过大,影响系统扩展
        难以支持除MapReduce以外的计算框架如 Spark、Strom等;

    Hadoop 2.x由 HDFS 、MapReduce、YARN三部分组成


      HDFS:NN Federation 、HA
      MapReduce:运行在Yarn上的MR
      Yarn:资源管理系统

    HDFS 2.x

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

    HDFS 2.0 HA


    主备NameNode
      解决单点故障
        主NameNode对外提供服务,备NameNode同步主NameNode的元数据,以待切换
        所有DataNode同时向两个NameNode汇报block信息(如上图)

        JournaNodes集群 :三台或三台以上的 JournaNode节点(与Zookeeper节点相同),JournaNodes 接管了Secondary的工作和NameNode edits的工作 ,将edits 日志文件放在JournaNodes 所有节点上,所有的和NameNode相关的写入修改操作日志都存放在JournaNodes 每个节点上的edits上,在JournaNodes 节点上实现fsimage的合并工作 ,然后再由JournaNodes 将新的fsimage分发给主备NameNode;

      两种切换选择
        手动切换:通过命令实现主备之间的切换,可以用HDFS升级等 场合
        自动切换:基于Zookeeper的实现
      基于Zookeeper自动切换方案
        Zookeeper Failover Controller :监控NameNode健康状态,并向Zookeeper注册NameNode,NameNode挂掉之后,ZKFC为NameNode竞争锁,获取ZKFC锁的NameNode变为Active;

    HDFS 2.x Federation

      
      通过多个NameNode/NameSpace 把元数据的存储和管理分散到多个节点中,使NameNode/NameSpace可以通过增加机器来进行水平扩展。
      能把单个NameNode的负载分散到多个节点中,在HDFS数据规模较大的时候不会降低HDFS的性能。可能通过多个NameSpace来隔离不同类型的应用,把不同类型应用的HDFS元数据的存储和管理分派到不同的NameNode中。

      为了水平扩展namenode,federation使用了多个独立的namenode/namespace。这些namenode之间是联合的,也就是说,他们之间相互独立且不需要互相协调,各自分工,管理自己的区域。分布式的datanode被用作通用的数据块存储存储设备。每个datanode要向集群中所有的namenode注册,且周期性地向所有namenode发送心跳和块报告,并执行来自所有namenode的命令。

      一个block pool由属于同一个namespace的数据块组成,每个datanode可能会存储集群中所有block pool的数据块。

      每个block pool内部自治,也就是说各自管理各自的block,不会与其他block pool交流。一个namenode挂掉了,不会影响其他namenode。

      某个namenode上的namespace和它对应的block pool一起被称为namespace volume。它是管理的基本单位。当一个namenode/nodespace被删除后,其所有datanode上对应的block pool也会被删除。当集群升级时,每个namespace volume作为一个基本单元进行升级。

      相关文章:http://dongxicheng.org/mapreduce/hdfs-federation-introduction/

    YARN 资源管理系统


      YARN : Yet Another Resource Negotiator;
      Hadoop 2.0 新引入的资源管理系统,直接从MRv1演化而来的。
      核心思想:将MRv1中的JobTracker的资源管理和任务调度两个功能分开,分加盟由ResourceManager和ApplicationMaster进程实现。
      ResourceManager : 负责整个集群的资源管理和调度
      ApplicationMaster : 负责应用程序相关的事务,比如任务调度、任务监控和容错等
      YARN的引入,使得多个计算框架可运行在一个集群中
      每个应用对应一个ApplicationMaster
      目前多个计算框架可以运行在Yarn上,比如MapReduce、Spark、Storm等。

      yarn相关文章:http://www.ibm.com/developerworks/cn/opensource/os-cn-hadoop-yarn/

    MapReduce On YARN

      MapReduce On YARN : MRv2
      将MapReduce作业直接运行在YARN上,而不是由JobTracker和TaskTarcker构建的MRv系统中
      基本功能模块
        YARN : 负责资源管理和调度
        MRAppMaster : 负责任务切分、任务调度、任务监控和容错等
        MapTask/ReduceTask :任务驱动引擎与MRv1一致
        每个MapReduce作业对尖一个MRAppMaster
        MRAppMaster任务调度
        YARN将资源分配给MRAppMaster
        MRAppMaster进一步将资源分配给内部的任务
      MRAppMaster容错
        失败后,由YARN重新启动
        任务失败后,MRAppMaster重新申请资源

     HDFS HA高可用集群搭建:http://www.cnblogs.com/raphael5200/p/5154325.html

  • 相关阅读:
    AtCoder 杂题乱写
    JOISC2020 遗迹
    【考试总结】20220107
    AGC021F Trinity
    CCPC2021 广州A/CF Gym103415A
    【考试总结】20220115
    JDK8 时间api当天的开始和截至时间
    技术方案模板
    正则表达式
    组合算法
  • 原文地址:https://www.cnblogs.com/raphael5200/p/5168432.html
Copyright © 2011-2022 走看看