HDFS、YARN、MapReduce概述及三者之间的关系(图解)

这篇具有很好参考价值的文章主要介绍了HDFS、YARN、MapReduce概述及三者之间的关系(图解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、HDFS架构概述

1、HDFS定义


HDFS(Hadoop Distributed File System) 是一种分布式文件系统,用于处理在商业硬件上运行的大型数据集。 它用于将单个 Apache Hadoop 集群扩展到数百 (甚至数千)个节点。

HDFS 是 Apache Hadoop 的主要组件之一,其他组件包括 MapReduce 和 YARN。
HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。

2、HDFS组成

HDFS由NameNode(主节点)、SecondaryNameNode(辅助节点)、DataNode(从节点)构成,

其中NameNode负责管理整个HDFS集群,SecondaryNameNode辅助NameNode管理元数据,DataNode负责存储实际的数据块(一个block块默认大小128MB)和对数据块的读、写操作。

2.1Block块
每一个文件可以配置副本数量,默认是3,副本的作用是防止因某个DataNode挂掉或磁盘损坏而导致数据丢失,除此之外块副本还可以提高块可读取的节点,提高mapreduce计算任务向数据移动的概率。

因为同一个DataNode放置相同的块数据是没有意义的,所以NameNode不允许DataNode具有同一块的多个副本,即副本数量配置不能大于DataNode节点的数量。

每个文件可以在写入时指定这个文件块的副本数量,也可以在未来修改某个文件的块副本数量,文件块的副本数量配置作为块元数据的一部分保存在NameNode中。

3.HDFS的特点

  • 心跳机制

        DataNode会定时(3秒)向NameNode发送心跳包,告知NameNode自己的还在活跃,如果超过一定时间(630秒)NameNode未收到DataNode的心跳包,就会认为该DataNode宕机了,此时会该DataNode的数据块交由其他活跃的DataNode储存。所有的DataNode每6个小时向NameNode汇报一次自己完整的数据块信息,供NameNode校验更新。

  • 负载均衡

        NameNode会保证所有的DataNode的资源使用率尽量一致。

  • 副本机制

        DataNode存储的数据块默认副本数量是3份,如果当前副本总数大于默认副本数,NameNode会自动删除某个副本,如果当前副本数少于默认副本数则会自动增加。如果当前活跃的机器总数小于默认副本数,NameNode会强制进入安全模式,在安全模式下数据只能读不能写。

更多配置,详见Hadoop官方文档:hadoop.apache.org/docs/r3.3.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml

HDFS、YARN、MapReduce概述及三者之间的关系(图解),hdfs,mapreduce,hadoop

4.HDFS写数据流程

   1. Client(客户端)请求namenode保存文件。
    2. NameNode接收到客户端请求后, 会校验客户端针对该文件是否有写的权利,文件是否存在,校验通过后告知客户端可以上传。
    3. 接收到可以上传的指令后, 客户端会按照128MB(默认)对文件进行切块。
    4. Client(客户端)再次请求namenode, 第1个Block块的上传位置。
    5. namenode会根据副本机制, 负载均衡, 机架感知原理及网络拓扑图, 返回给客户端存储该Block块的DataNode列表。
        例如: node1, node2, node3;
    6. Client(客户端)会先连接就近的datanode机器, 然后依次和其他的datanode进行连接, 形成传输管道(Pipeline);
    7. 采用数据报包(DataPacket)的形式传输数据, 每个包的大小不超过64KB, 并建立反向应答机制(ACK机制);
    8. 具体的上传动作: node1 -> node2 -> node3,  ACK反向应答机制: node3 => node2 => node1。
    9. 重复上述的步骤, 直至第1个Block块上传完毕。
    10. 第一个Bloc上传完毕客户端(Client)重新请求第二个Block的上传位置, 重复上述动作, 直至所有的Block块传输完毕。


        至此, HDFS写数据流程结束。

HDFS、YARN、MapReduce概述及三者之间的关系(图解),hdfs,mapreduce,hadoop

5.HDFS读数据流程 

 1. Client(客户端)请求namenode, 读取文件。
 2. NameNode校验该客户端是否有读权限, 及该文件是否存在, 校验成功后, 会返回给客户端该文件的块信息。
        例如:
            block1: node1, node2, node5
            block2: node3, node6, node8
            block3: node2, node5, node6     这些地址都是鲜活的;
            ......
    3. Client(客户端)会连接上述的机器(节点), 并行的从中读取块的数据。
    4. Client(客户端)读取完毕后, 会循环NameNode获取剩下所有的(或者部分的块信息), 并行读取, 直至所有数据读取完毕。
    5. Client(客户端)根据Block块编号, 把多个Block块数据合并成最终文件即可。

HDFS、YARN、MapReduce概述及三者之间的关系(图解),hdfs,mapreduce,hadoop

6.HDFS工作原理

1、NameNode初始化时会产生一个edits文件和一个fsimage文件。
2、随着edits文件不断增大,当达到设定的阀值时(1个小时或写入100万次),SecondaryNameNode把edits文件和fsImage文件复制到本地,同时NameNode会产生一个新的edits文件替换掉旧的edits文件,这样以保证数据不会出现冗余。
3、SecondaryNameNode拿到这两个文件后,会在内存中进行合并成一个fsImage.ckpt的文件(这个过程称为checkpoint),合并完成后,再将fsImage.ckpt文件推送给NameNode。
4、NameNode文件拿到fsImage.ckpt文件后,会将旧的fsimage文件替换掉(并不会立刻替换,而是达到一定阈值后被替换掉),并且改名成fsimage文件。

通过以上几步则完成了edits和fsimage文件的合并,依此不断循环,从而到达保证元数据的正确性。在紧急情况下, SecondaryNameNode可以用来恢复namenode的元数据。

HDFS、YARN、MapReduce概述及三者之间的关系(图解),hdfs,mapreduce,hadoop

二、MapReduce概述

MapReduce是一种分布式计算框架。

1.MR的执行流程

  1. MR任务分为MapTask任务 ReduceTask任务两部分, 其中MapTask任务负责:分; ReduceTask任务负责合。

  •  1个切片(默认128MB) = 1个MapTask任务 = 1个分好区, 排好序, 规好约的磁盘文件;

    2. 先对文件进行切片, 每个切片对应1个MapTask任务, 任务内部会逐行读取数据, 交由MapTask任务来处理。
    3. MapTask对数据进行分区,排序,规约处理后, 会将数据放到1个 环形缓冲区中(默认大小: 100MB, 溢写比: 0.8), 达到80MB就会触发溢写线程。
    4. 溢写线程会将环形缓冲区中的结果写到磁盘的小文件中, 当MapTask任务结束的时候, 会对所有的小文件(10个/次)合并, 形成1个大的磁盘文件。
    5. ReduceTask任务会开启拷贝线程, 从上述的各个结果文件中, 拉取属于自己分区的数据, 进行分组、统计、聚合。
    6. ReduceTask将处理后的结果, 写到结果文件中;

  • 1个分区 = 1个ReduceTask任务 = 1个结果文件;

HDFS、YARN、MapReduce概述及三者之间的关系(图解),hdfs,mapreduce,hadoop

三、YARN架构概述

YARN是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作平台,而Mapreduce等运算程序相当于运行在操作系统之上的应运程序。

YARN组成由ResourceManager、AppMaster进程、NodeManager组成

  •  ResourceManager(主节点)

        负责接收计算任务、资源调度和分配

  • AppMaster进程

        1个计算任务=1个AppMaster进程

        由该AppMaster进程来监控和管理该计算任务

  • NodeManager(从节点)

       负责接收并执行ResourceManager分配的计算任务

HDFS、YARN、MapReduce概述及三者之间的关系(图解),hdfs,mapreduce,hadoop

四、三者之间的关系

       客户端Client提交任务到资源管理器(ResourceManager),资源管理器接收到任务之后去NodeManager节点开启任务(ApplicationMaster), ApplicationMaster向ResourceManager申请资源, 若有资源ApplicationMaster负责开启任务即MapTask。开始干活了即分析任务,每个map独立工作,各自负责检索各自对应的DataNode,将结果记录到HDFS, DataNode负责存储,NameNode负责记录,2nn负责备份部分数据。


HDFS、YARN、MapReduce概述及三者之间的关系(图解),hdfs,mapreduce,hadoop文章来源地址https://www.toymoban.com/news/detail-830935.html

参考

  • HDFS Architecture
  • Hadoop原理之——HDFS原理
  • HDFS架构和原理
  • HDFS 详解一(原理篇)

到了这里,关于HDFS、YARN、MapReduce概述及三者之间的关系(图解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据组件HDFS、MapReduce、Hive三个大数据组件的特点和架构,并详细阐述它们之间的联系与区别

    作者:禅与计算机程序设计艺术 大数据组件是解决大数据的关键组件之一,在Hadoop生态系统中占据着至关重要的地位,它包括了HDFS、MapReduce、Hive等等一系列框架和工具。本文将会通过主要分析HDFS、MapReduce、Hive三个大数据组件的特点和架构,并详细阐述它们之间的联系与区

    2024年02月07日
    浏览(65)
  • 云计算与大数据之间的羁绊(期末不挂科版):云计算 | 大数据 | Hadoop | HDFS | MapReduce | Hive | Spark

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 大数据是需求,云计算是手段。没有大数据,就不需要云计算;没有云计算,就无法处理大数据。 所有的计算能力、存储能力、和各种各样功能的应用都通过网络

    2024年02月04日
    浏览(64)
  • 数仓知识11:Hadoop生态及Hive、HBase、Impala、HDFS之间的关系

    Hive、HBase、Impala、HDFS是Hadoop生态体系中常用的开源产品,各个产品间是一个什么样的关系,许多人都搞不清楚,本文将进行研究分析。 Hadoop生态 在了解Hive、HBase、Impala、和HDFS之前,先熟悉一下Hadoop的生态。 Apache Hadoop软件库是一个框架,允许使用简单的编程模型在计算机集

    2023年04月08日
    浏览(55)
  • ranger,hive,hdfs的三者的权限管理

    用户在hdfs上的权限 可以看出只给了用户write权限,尝试登录xwq用户,在datagrip上登录成功 经过实验验证:要想使用datagrip或者hive-cli登录hive,需要保证hdfs的权限在/目录至少要有write权限 write权限可以创建文件夹 execute是执行的命令,在只有write权限时是无法执行成功 所以可以

    2024年02月11日
    浏览(38)
  • 《Hadoop篇》------HDFS与MapReduce

    目录 一、HDFS角色职责总结 二、CheckPoint机制 三、Mapreduce序列化 四、Mapper 4.1、官方介绍 4.2、Split计算 4.3、Split和block对应关系 4.4、启发式算法 五、MapTask整体的流程 六、压缩算法 6.1、压缩算法适用场景 6.2、压缩算法选择  6.2.1、Gzip压缩 6.2.2、Bzips压缩 6.2.3、Lzo压缩 七、Res

    2023年04月08日
    浏览(62)
  • npm vs. pnpm vs. Yarn: 三者之间的区别与比较

    在现代前端开发中,包管理工具是必不可少的一环。npm、pnpm和Yarn是三个常用的包管理工具,它们各有特点,适用于不同的场景。本文将深入讨论这三者的基本概念、特点、优势和劣势,并对比分析它们之间的主要区别,包括功能、性能、易用性和安全性等方面。同时,我们

    2024年04月15日
    浏览(45)
  • HDFS+ MapReduce 数据处理与存储实验

    了解HDFS的基本特性及其适用场景; 熟悉HDFS Shell常用命令; 学习使用HDFS的Java API,编程实现HDFS常用功能; 了解MapReduce中“Map”和“Reduce”基本概念和主要思想; 掌握基本的MapReduce API编程,并实现合并、去重、排序等基本功能; 实验平台:基于实验一搭建的虚拟机Hadoop大数

    2023年04月23日
    浏览(65)
  • 云计算系列(2)初识HDFS与MapReduce

    前言 上节课主要是完成了Hadoop的安装,这次主要完成以下内容 配置HDFS web端查看HDFS文件系统 配置yarn web端查看yarn系统 配置mapreduce 运行MapReduce的WordCount 程序 上次课完成到如下图的状态 还需要改善一下,就是我们在root用户下解压安装他的拥有者是数字不是root 通过chown命令更

    2024年02月03日
    浏览(37)
  • mapreduce 的工作原理以及 hdfs 上传文件的流程

    推荐两篇博文 mapreduce 的工作原理: 图文详解 MapReduce 工作流程_mapreduce工作流程_Shockang的博客-CSDN博客 hdfs 上传文件的流程 HDFS原理 - 知乎

    2024年02月10日
    浏览(49)
  • JVM、JRE、JDK三者之间的关系

     JVM、JRE和JDK是与Java开发和运行相关的三个重要概念。    再了解三者之前让我们先来了解下java源文件的执行顺序:  使用编辑器或IDE(集成开发环境)编写Java源文件.即demo.java 程序必须编译为字节码文件,javac(Java编译器)编译源文件为demo.class文件. 类文件可在任何平台/操作系

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包