美文网首页
Hadoop基础

Hadoop基础

作者: neo_ng | 来源:发表于2018-10-20 13:25 被阅读14次
    hadoop
    Hadoop的起源

    Lucene -> Lucene的微缩版Nutch -> GFS和Mapreduce的机制,从而提高了Nutch的性能。由此Hadoop产生了

    什么是Hadoop

    Hadoop是一个开源框架,可编写和运行分布式应用处理大规模数据。 Hadoop框架的核心是HDFS和MapReduce。其中 HDFS 是分布式文件系统,MapReduce 是分布式数据处理模型和执行环境

    Hadoop1.0

    Hadoop1.0的基础模块:

    模块名称 作用
    Common 支持其他模块的公用工具包
    HDFS 一个可高吞吐访问应用数据的分布式文件系统
    MapReduce 并行计算的系统

    HDFS

    image

    master/slave模式
    NameNode记录数据集的元数据
    客户端操作数据时,需向NameNode查询元数据,在查询到数据所在的DataNode后,直接与DataNode交互,执行读/写操作。不同的数据块Block会有多个副本(主要是为了数据安全)。

    MapReduce

    MapReduce的调度框架
    image

    MapReduce的调度框架,主要有这几个角色:JobClient、JobTracker(JT)、TaskTracker(TT),这里面的JT是一个单Master节点,TT是部署在每台计算节点上的一个Service。
    其中JobClient负责根据用户指定的参数,生成一个MapReduce作业,然后把作业提交到JT,JT负责把Job所有的Task调度到TT上。

    MapReduce的执行过程
    image

    这个图展示了一个Mapreduce的执行过程,是一个具体的执行单元内(Task)发生的事情。左边是Map Task,map task的输入是一个数据分片,叫一个split。

    输入数据由 MapReduce 框架解析成一条条记录,这是一个按照用户指定的规则(或者是默认规则)读取数据的过程。

    读取出的数据,将他们一条条的传给map处理,就是大家写的mapper函数

    经过mapper 处理后,又生成一条新记录,写在mapper所在机器的本地磁盘,分Partition写入,不同Partition数据会交由不同reduce处理;

    右边是Reduce Task,Rt运行起来后先做的事情就是把属于自己的那一份份数据给拉到自己本地来,这个过程叫shuffle,shuffle的具体过程很复杂,其中包括各种异常处理,性能优化点也比较多。

    数据shuffle到reduce本地之后,和map类似,一条条交给reduce函数处理,然后按照用户指定的格式写到HDFS指定目录。

    Hadoop1.0生态系统图谱
    image

    为什么需要Hadoop2.0?

    Hadoop1存在的问题,主要有这么几方面:
    1、可用性,JobTracker是单点,升级中断服务,正在运行的作业会失败;
    2、扩展性,因为NameNode单点性能瓶颈,单机群最大规模也就是几千台
    3、按槽位分task,集群整体资源利用率不高,因为每台机器上运行多少个Task是固定的,但是每个Task消耗的资源,其实差异很大。
    4、Hadoop1.0难以支持MR以外的计算

    Hadoop1.0 Vs Hadoop2.0

    image

    Hadoop2.0

    HDFS

    Hadoop1.0中的NameNode为单节点,而second NameNode并非是NameNode的热备机。因此在2.0中增加了stand-by NameNode(SNN),而主节点称为active NameNode(ANN)。ANN和SNN共享第三方存储,是热备方案,可自动failover。

    YARN

    Hadoop2把单点的JobTracker角色做了分布式化,分布式化成ResourceManager、NodeManager、ApplicationMaster,其中RM是单点,而AM是每个job一个,不同job之间是独立的AM。作业级别的调度在RM,Task级别的调度在AM,大大减轻了RM的压力


    image
    英文名称 中文名称 作用
    Resource Manager(RM) 资源管理器 管理全局资源与调度,为第一级调度器,负责对各个NodeManager上的资源进行统一管理和调度,处理客户端请求
    Application Master(AM) 应用管理器 对应一个作业(job)第二级调度器,负责单个应用程序的管理,为应用程序申请资源并分配给内部任务,任务监控和容错
    Node Manager(NM) 节点管理器 对应一台机器,单个节点上的资源管理,处理来自RM和AM的命令
    Container 节点管理器 Container是YARN中的资源抽象,当AM向RM申请资源时,RM为AM返回的资源便是用Container表示的;YARN会为每个任务分配一个Container;且该任务只能使用该Container中描述的资源。

    RM由调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)组成

    image

    Yarn的工作流程:
    步骤1 用户向YARN中提交应用程序,其中包括ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。

    步骤2 ResourceManager为该应用程序分配第一个Container,并与对应的Node-Manager通信,要求它在这个Container中启动应用程序的ApplicationMaster。

    步骤3 ApplicationMaster首先向ResourceManager注册,这样用户可以直接通过ResourceManager查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。

    步骤4 ApplicationMaster采用轮询的方式通过RPC协议向ResourceManager申请和领取资源。

    步骤5 一旦ApplicationMaster申请到资源后,便与对应的NodeManager通信,要求它启动任务。

    步骤6 NodeManager为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一个脚本中,并通过运行该脚本启动任务。

    步骤7 各个任务通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而可以在任务失败时重新启动任务。
    在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster查询应用程序的当前运行状态。

    步骤8 应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。

    Yarn的好处
    • 计算资源按需伸缩
    • 不同负载应用混搭,集群使用率高
    • 共享底层存储,避免数据跨集群迁移
    Hadoop2.0生态系统图谱
    image

    Nutch,互联网数据及Nutch搜索引擎应用
    HDFS,Hadoop的分布式文件系统
    MapReduce,分布式计算框架
    Flume,Scribe,Chukwa非结构化数据收集工具
    Hiho、Sqoop关系数据库导入HDFS的工具
    Oozie作业流调度引擎
    Hue,Hadoop自己的监控管理工具
    mahout数据挖掘工具
    Hbase分布式的面向列的开源数据库
    Avro 数据序列化工具

    参考资料:
    Hadoop
    技术分享丨关于 Hadoop 的那些事儿
    Hadoop2.0架构
    Hadoop2.0 Yarn框架原理及运作机制
    聊聊Hadoop:图解HDFS是个啥

    相关文章

      网友评论

          本文标题:Hadoop基础

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