大数据——Hadoop让你爱上学习

作者: 清风_d587 | 来源:发表于2018-08-27 14:25 被阅读1次

    Hadoop

    由于apache版本的Hadoop存在一些BUG,这里使用cdh5.3.6版本的Hadoop

    简介

    Hadoop是一个可靠的、可扩展的、开源的、高可用的分布式并行计算框架

    主要模块

    Hadoop Common:为其他Hadoop模块提供基础设施

    Hadoop HDFS:一个高可靠的、高吞吐量的分布式文件存储系统

    Hadoop MapReduce:一个分布式的离线并行计算框架

    Hadoop YARN:一个新的MapReduce框架,负责MapReduce任务调度与资源管理

    HDFS架构

    主从架构

    主节点(只有一个,HA除外):

    NameNode(NN):存储元数据(数据块的校验和、时间戳、数据块存储的位置)

    SecondaryNameNode(SNN):用来辅助NameNode同步元数据,减轻NameNode压力,不是NameNode的热备

    从节点(可以有多个):

    DataNode(DN):存储数据块,每一个数据块默认副本数是3份(可修改),如果有两个及以上机架,那么另外的机架必然会至少存在一份副本,防止其中一台机架挂掉(如断电),导致数据完全丢失

    数据存取(就近原则)

    读取的时候,如果当前机架存在数据,不会到另外一个机架去读取

    储存机制

    当一个文件上传到HDFS平台时,将会按照128Mb大小切割成数个数据块,并且每个数据块会进行复制,达到设置的副本数。接下来会根据NameNode的平衡机制(平衡各DataNode上储存的数据)分配到不同的DataNode中,并在NameNode中记录元数据

    容错机制

    可以随意的增删服务器节点

    所有datanode会每隔3s向NameNode发送心跳信息(包括数据块的校验和,块报告),NameNode会接收DataNode发送的块的报告,如果规定时间内,NameNode没有接收到DataNode发送的心跳报告,就默认这台机器已经挂掉

    如果某台DataNode挂掉或部分数据丢失,这时NameNode收不到这台DataNode发送的心跳报告或者心跳报告信息与元数据不符,将会检查元数据来匹配DataNode中丢失的数据块,并且从另外机架复制数据块达到副本数

    SecondaryNameNode辅助过程

    启动NameNode后,NameNode将fsimage载入内存,并按顺序执行edits文件中的命令记录

    SecondaryNameNode定期通过http get方式从NameNode中获取edits与fsimage,此时NameNode生成新的空edits文件用来接收Client命令,SecondaryNameNode会将读取过来的fsimage加载到内存,按顺序执行edits文件命令,生成新的fsimage文件

    SecondaryNameNode将新的fsimage文件发送给NameNode代替原来的fsimage

    原本NameNode中的edits文件会记录所有命令,当文件过大时会导致启动NameNode时间过长,启动时NameNode处于安全模式,只读不可写。使用SecondaryNameNode将会减小edits大小,减轻NameNode启动时的压力

    YARN架构

    资源调度管理框架(负责运行集群中的任务)

    主节点(全局的,只有一个,除了HA):

    ResourceManager(RM):资源管理服务,接收Client提交的任务请求,并把任务分发到各个节点中运行,并且给NodeManager提供运行时资源

    从节点(可以有多个):

    NodeManager(NM):资源管理器,负责向ResourceManager申请运行时的资源并管理运行此节点的任务

    运行机制

    Client提交应用程序(包括用户程序、ApplicationMaster程序、ApplicationMaster启动命令等)到ResourceManager

    ResourceManager向NodeManager分配一个Container,并在Container中启动ApplicationMaster

    ApplicationMaster向ResourceManager注册,这样用户可以直接通过ResourceManager査看应用程序的运行状态(然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束)

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

    一旦ApplicationMaster成功申请到资源,便开始与对应的NodeManager通信,要求它启动任务

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

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

    应用程序运行完成后,ApplicationMaster通过RPC协议向ResourceManager注销并关闭自己

    MapReduce架构

    Map

    并行处理输入的数据

    Reduce

    处理Map输出的数据,将Map的结果进行汇总

    Shuffle

    分为MapTask与ReduceTask

    MapTask将数据写到本地磁盘

    ReduceTask从每一个MapTask上读取数据

    特点

    仅适合离线批处理

    容错性高、扩展性高

    磁盘开销大、效率低

    有需要的关注小编

    2317384986 yxxy1717

    相关文章

      网友评论

        本文标题:大数据——Hadoop让你爱上学习

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