Hadoop三大组件原理详解:hdfs-yarn-MapReduce(第9天)

news2024/11/27 12:43:38

系列文章目录

一、HDFS读写原理【重点】
二、YARN提交mr流程【重点】
三、MapReduce计算流程【重点】

文章目录

  • 系列文章目录
  • 前言
  • 一、HDFS读写原理[面试]
    • 1、HDFS数据写入解析
    • 2、HDFS数据读取解析
  • 二、YARN提交mr流程[面试]
    • 1. YARN提交mr过程解析
  • 三、MapReduce计算流程[面试]
    • 1. MapReduce计算流程解析


前言

本文主要通过图文方式解析了HDFS读写原理,YARN提交mr流程,MapReduce计算流程


一、HDFS读写原理[面试]

1、HDFS数据写入解析

在这里插入图片描述

1、客户端向NameNode申请写入数据。

2、NameNode检查客户端是否有写入权限、申请写入的文件是否存在。如果有写入权限且申请写入的文件不存在,则通知客户端可以写入。

3、客户端将文件切割成Block块后,先向NameNode询问第一个Block块的存储位置。

4、NameNode接收到客户端的请求后,根据副本机制、负载均衡机制、机架感知原理及网络拓扑图返回给客户端一个dataNode列表,列表中记录着存储第一个Block块的所有dataNode节点。

5、客户端依据NameNode返回的列表与dataNode建立Pipeline传输管道。

6、客户端再将Block块以Package数据包的形式传递给第一个dataNode节点。如果dataNode节点正确接收到Package数据包,会向客户端返回一个ACK应答,同时将Package包发送给下一个DataNode节点。否则客户端将再次向第一个dataNode节点发送Package数据包。

7、同一次Pipeline管道中dataNode节点依次通过Package包进行数据传送,并通过ACK应答确认数据是否正常接收。

8、重复传输Package数据包的操作直至第一个Block包传输完成。重复传输Block块的操作直至文件传输完成。

2、HDFS数据读取解析

在这里插入图片描述

1、客户端向NameNode申请读取数据。

2、NameNode检查客户端是否有读取权限、申请读取的文件是否存在。如果有读取权限且申请读取的文件存在,则根据即将感知原理和网络拓扑图返回客户端存储该文件的所有Block地址(其中包含备份地址)。

3、客户端依据Block地址与dataNode建立传输通道Pipline

5、向dataNode读取文件,如果读取的文件所在的dataNode节点异常宕机了则向备份节点读取。直至文件读取完毕。

二、YARN提交mr流程[面试]

在这里插入图片描述
在这里插入图片描述

1. YARN提交mr过程解析

1.客户端提交一个MR程序给ResourceManager(校验请求是否合法...)

2.如果请求合法,ResourceManager随机选择一个NodeManager用于生成appmaster(应用程序控制者,每个应用程序都单独有一个appmaster)
3.appmaster会主动向ResourceManager的应用管理器(application manager)注册自己,告知自己的状态信息,并且保持心跳
4.appmaster会根据任务情况计算自己所需要的container资源(cpu,内存...),主动向ResourceManager的资源调度器(resource scheduler)申请并获取这些container资源

5.appmaster获取到container资源后,把对应指令和container分发给其他NodeManager,让NodeManager启动task任务(maptask任务,reducetask任务)
6.NodeManager要和appmaster保持心跳,把自己任务计算进度和状态信息等同步给appmaster,(注意当maptask任务完成后会通知appmaster,appmaster接到消息后会通知reducetask去maptask那儿拉取数据)直到最后任务完成

7.appmaster会主动向ResourceManager注销自己(告知ResourceManager可以把自己的资源进行回收了,回收后自己就销毁了)

三、MapReduce计算流程[面试]

在这里插入图片描述

1. MapReduce计算流程解析

MapReduce原理:分为三阶段(map阶段、shuffle阶段、reduce阶段),八步骤(输入、拆分、分区、排序、规约、分组、合并、输出)

核心八步骤详解:
1、封装输入组件、读取源数据:

Map阶段
2、MapTask任务,拆分数据

Shuffle阶段
3、分区:将数据按分区进行标记,以便reduce阶段进行数据合并
4、排序:将数据进行排序,字母按a-z升序,数字按1-9升序
5、规约:用于优化MR程序,提升效率。
6、分组:把相同的数据分配到一组,形成数据组集合

Reduce阶段
7、ReduceTask任务,将数据合并

8、封装输出组件,将结果写到目的文件中

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1845203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RK3568技术笔记十四 Ubuntu创建共享文件夹

单击“虚拟机”,单击“设置”,如图所示: 单击“选项”,选择“总是启用(E)”,单击“添加”,如图所示: 单击“下一步”,如图所示: 单击“浏览”添加…

建筑幕墙设计乙级资质申请要点梳理

建筑幕墙设计乙级资质申请要点梳理如下: 一、申请条件 资历和信誉: 企业需具有独立企业法人资格,能够独立承担法律责任。社会信誉良好,无不良记录。注册资本不少于100万元人民币。技术条件: 专业配备齐全、合理&#…

苹果电脑如何清理磁盘空间 苹果电脑如何清理系统数据

你是否遇到过电脑磁盘空间不足的情况呢?Mac电脑有着流畅的操作系统,但是随着日常使用,可能电脑里的垃圾文件越来越多,导致磁盘空间不足,随之会出现电脑卡顿、软件闪退等情况。及时清理磁盘空间可以有效避免电脑这些问题…

java连接kerberos用户认证

文章目录 一、背景二、代码2.1目录2.2配置文件application.properties2.3pom依赖2.4代码AuthProviderConfig配置类CustomConfigurationByKeytab配置类CustomConfigurationByPassword配置类TestControllerMyCallbackHandlerDummyUserDetailsService实现类LdapTest2Application启…

AI播客下载:Possible(OpenAI投资人Reid Hoffman主持)

这是由 LinkedIn 创办人,同时也是 OpenAI 早期投资者 Reid Hoffman。节目上会邀请各领域的专家 (教育、医疗、司法),探讨 AI 对世界的影响。这节目特别有趣的地方,是在 GPT-4 协助下制作的,开创了人机协作内容 。 如果未来一切都能…

Windows10任务栏卡顿解决方案

一、重新启动任务资源管理器 右键底部任务栏选择“任务管理器”;按快捷键“CtrlShiftEsc”;搜索框搜索“任务管理器”并单击“打开”;“WinX”打开开始菜单附属菜单,在列表中选择“任务管理器” ;按下“ctrlaltdelete”…

Linux管道与重定向

管道 是进程通信的方法之一,在Linux中用命令1|命令2的形式表示,将前一个命令的结果作为后续命令的参数进行输入,也有tee管道,可以进行多次筛选,即多次使用|过滤命令。 重定向 文件描述符FD Linux中输入输出分为三种…

HTTP 抓包工具——Fiddler项目实战

网络爬虫实质上是模拟浏览器向 Web 服务器发送请求。对于一些简单的网络请求,我们 可以通过查看 URL 地址来构造请求,但对于一些稍复杂的网络请求,仍然通过观察 URL 地 址将无法构造正确。因此我们需要对这些复杂的网络请求进行捕获分…

高考填报志愿,性格决定命运

所谓性格决定命运,也即是强调了性格在左右我们的人生,性格会和个人的未来成就相挂钩,当一个人向来小心谨慎时,适合一些与数字打交道的工作,也可以从事一些比较细致点的工作,如果一个人向来大大咧咧&#xf…

【Linux命令入门】shell命令解析与PATH环境变量

文章目录 前言1.Linux shell 简介2. Linux命令提示符Linux命令的组成环境变量设置环境变量永久设置临时设置总结前言 Linux命令行(shell)是与操作系统交互的重要工具。通过学习和掌握基本的shell命令,用户可以高效地管理文件、执行程序和处理系统任务。PATH环境变量在Linux…

SpringBoot【3】集成 Swagger

SpringBoot 集成 Swagger 前言pom.xml 配置文件application.yml 配置文件config 包Swagger2Config entity 包UserEntity service 包impl 包SwaggerServiceImpl SwaggerService controller 包SwaggerController SwaggerApplication验证 前言 创建项目步骤、及版本选择等&#x…

从0开始C++(五):友元函数运算符重载

友元函数 介绍 C中的友元函数是一种特殊的函数,它可以访问和操作类的私有成员和保护成员。友元函数可以在类的内部或外部声明和定义,但在其声明和定义中需要使用关键字 friend 来标识。友元函数可以是全局函数,也可以是其他类的成员函数。 …

智慧农业解决方案:华测农机导航技术助力无人农场高效作业

在金黄的麦田、翠绿的稻田中,农机导航正成为无人农场的新星。如今,无人收割、无人播种、无人插秧等作业模式已不再是遥不可及的梦想,而是智慧农业快速发展中的现实写照。搭载华测导航技术的农机,正在田间地头忙碌。它们如同舞者般…

71-TCP协议工作原理及实战

一 服务器端 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTcpServer> // 专门用于建立TCP连接并传输数据信息 #include <QtNetwork> // 此模块提供开发TCP/IP客户端和服务器的类QT_BEGIN_NAMESPACE namespace Ui { class M…

亲测5个电脑浏览器高效技巧,保证让你搜索效率倍增!

虽然我们每个人的电脑基本每天都会用到浏览器&#xff0c;但你会发现有的人用起浏览器就是噼里啪啦的&#xff0c;找他要个什么网站他都能快速找到&#xff0c;而有的人&#xff0c;经常打开的是广告搜索的网页&#xff0c;找不到搜索的答案非常慢。小编今天就来跟你分享一下我…

跨区域文件管控解决方案,一文了解

跨区域文件管控是一个涉及在不同地域或区域之间管理和控制文件的过程&#xff0c;它包括安全性、合规性和管理效率等多个方面。以下是一些关键的考量因素&#xff1a; 1.安全性&#xff1a;确保在传输过程中文件不被截获、篡改或泄露。使用加密技术保护文件&#xff0c;并确保传…

解释React中的“端口(Portals)”是什么,以及如何使用它来渲染子节点到DOM树以外的部分。

React中的“端口&#xff08;Portals&#xff09;”是一种将子节点渲染到DOM****树以外的部分的技术。在React应用中&#xff0c;通常情况下组件的渲染是遵循DOM的层次结构&#xff0c;即子组件会渲染在父组件的DOM节点内部。然而&#xff0c;有些情况下&#xff0c;开发者可能…

ArcGIS图斑分区(组)排序—从上到下从左到右

​​ 点击下方全系列课程学习 点击学习—>ArcGIS全系列实战视频教程——9个单一课程组合系列直播回放 ArcGIS图斑分区&#xff08;组&#xff09;从上到下从左到右排序 是之前的内容的升级 GIS技巧100例——12ArcGIS图斑空间排序 关于今天的内容 我们在19年已经和大家分…

Linux机器通过Docker-Compose安装Jenkins发送Allure报告

目录 一、安装Docker 二、安装Docker Compose 三、准备测试用例 四、配置docker-compose.yml 五、启动Jenkins 六、配置Jenkins和Allure插件 七、创建含pytest的Jenkins任务 八、项目结果通知 1.通过企业微信通知 2.通过邮件通知 最近小编接到一个任务用来监测和巡检网…

win10手动安装stable-diffusion-webui

目录 1.python下载安装 2.git下载安装 3.stable-diffusion-webui下载 4.安装s-d-webui的依赖包&#xff08;用国内镜像提速&#xff09; 5.git下载的stable-diffusion-webui&#xff0c;依赖包提示已安装&#xff0c;但运行webui-user.bat后&#xff0c;又开始下载 6.修…