美文网首页
Hadoop2.0架构

Hadoop2.0架构

作者: 大龄程序员在帝都 | 来源:发表于2016-08-22 09:42 被阅读1927次

    Hadoop2.0产生背景

    一、Hadoop 1.0中HDFS和MapReduce在高可用、扩展性等方面存在问题
    1、HDFS存在问题
    NameNode单点故障,难以应用于在线场景
    NameNode压力过大,且内存受限,影响系统可扩展性

    2、MapReduce存在的问题
    JobTracker访问压力大,影响系统可扩展性
    难以支持除MapReduce计算框架之外的计算框架、比如spark、storm

    Hadoop1.0只支持离线计算,不支持spark是内存计算框架(最快的得到结果),storm是流式计算框架(计算实时数据)

    Hadoop1.x和2.x比较

    801.png

    一、Hadoop2.x由HDFS、MapReduce、和YARN三个分支构成
    1、HDFS: NNFederation 、HA 多了这两个部分
    2、MapReduce:运行在YARN上的MR
    3、YARN:是对应的资源管理系统

    Federation是联邦的意思, FBI联邦调查局

    **
    NNFederation NameNode Federation:
    将元数据分成两个独立NameNode去工作**

    是独立的并行的

    YARN是分布式资源管理系统,进行任务调度。某些计算框架要运行一些任务的时候,这些任务需要在各个节点上执行,需要向YARN申请资源(申请CPU资源和内存资源),由于是分布式的资源管理,YARN知晓任何一个节点的情况,(是否空闲CPU以及内存使用率等),所以任务执行的时候首先向YARN进行申请资源。

    假如有十个map-reduce执行,每一个map-reduce有很多的任务,每一个任务都向YARN申请资源,所有任务都向YARN申请资源,这样资源分配就比较均衡

    HDFS2.X优点

    一、解决HDFS1.0中单点故障和内存受限问题
    二、解决单点故障
    1、HDFSHA: 通过主备NameNode解决单点故障
    2、如果主NameNode发生故障,则切换到备NameNode
    三、解决内存受限问题
    1、HDFSFederation(联邦)解决内存受限问题 把数据分为多份 多个NameNode相互独立工作,共享DataNode
    2、水平扩展,支持多个NameNode
    3、每个NameNode分管一部分目录
    4、所有NameNode共享所有DataNode存储资源
    四、2.X仅仅是架构上做了变化,使用方式不变
    1、 对HDFS使用者透明
    2、HDFS1.X中的命令和API仍可以使用

    HDFS2.X HA(high available 高可用)

    Paste_Image.png

    分析上图结构
    最底层为DataNode,DataNode启动之后会进行节点信息上报给NameNode

    一、NNActive和NN Standby

    NN Active 和NN Standby是两个NameNode节点
    主为:Active
    备为:Standby (standby可以有多个)

    在某一个时刻只有一个主(active)

    二、JournalNode的作用

    **
    DataNode启动汇报数据时,往多个NameNode都要汇报。
    NNActive和NNStandby中的文件完全一样,一旦NNActive挂掉以后启用NNStandby
    **

    NNActive的数据除了在内存中存储,也会在远程集群上存储一份,并不在本地进行存储,NNActive会把数据备份到图上JN中,
    JN为一个集群,Journal为日志的意思,JournalNode就是日志备份节点

    所有的NaemNode不管是主还是备,都要从JournalNode中进行读写,这个读写是实时的。所以NNActive和NNStandby信息一致。当一个挂掉以后,另外一个可以直接使用。

    JournalNode是一个集群,所以很难挂掉,这样就保证了高可用

    三、FailoverControllerActive说明

    控制NameNode切换,对NameNode进行心跳检查
    并且也对zookeeper进行心跳检查,zookeeper的主要工作就是做高可用,可以为用户提供开发接口

    **
    整个过程如下
    客户端在访问NameNode时首先访问zookeeper,zookeeper返回可用的NN,然后客户端再访问NN**

    zookeeper通过控制FailoverController 进行NameNode的切换

    HDFS2.0 HA结构性说明

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

    zookeeper failover controler 每一个NameNode都会有, 当一个NameNode挂掉以后,对应的zookeeper failover controler就会在zookeeper上获取竞争锁,当成功获取以后,对应的NameNode就变为了主。

    HDFS2.X Federation(这个只有数据节点很多很庞大的时候才会用到对namenode进行扩展)

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

    Paste_Image.png

    上图是多个namenode,如果取数据,需要指明从某个namenode中取,如果要进行HA,需要对多个namenode分别进行HA.

    YARN 分布式资源管理系统

    一:YARN :Yet Another Resource Negotiator;
    1、Hadoop2.0新引入的资源管理系统,直接从MRv1演化而来,分别由ResourceManager和ApplicationMaster进程实现
    2、ResourceManager:负责整个集群的资源管理和调度
    3、ApplicationMaster:负责应用程序相关的事务,比如任务调度、任务监控、容错等

    二:YARN的引入,使得多个计算框架可运行在一个集群中
    1、每个应用程序对应一个ApplicationMater
    2、目前多个计算框架可以运行在YARN上,比如,MapReduce、Spark、Storm等
    ResourceManager负责资源管理,只有一个,ApplicationMaster有多个,每个datanode上都会有一个

    MapReduce on YARN

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

    相关文章

      网友评论

          本文标题:Hadoop2.0架构

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