hadoop架构详解(hdfs,yarn,mpreduce)

【大数据实验环境安装】master节点下安装Hadoop 任何一个人不会我都会伤心OK??? 1.需要的软件 众所周知要安装三个软件,他们分别是: Oracle VM VirtualBox X Shell 5 Xftp5 2.首先对VirtualBox下手 初次见面 从网上或者用老师给的安装包,傻瓜式安装(这里建议安装目录修改一下尽量不要放在C盘),然后打开软件。 刚安装的界面是空空如也如下图, 这时我们需要先准备好解压好的master文件夹(我相信每个需要做大数据实验的童鞋... 阅读详情

一:HDFS架构模型



 HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。下面我们分别介绍这四个组成部分。

Client:就是客户端。

       1、文件切分。文件上传 HDFS 的时候,Client 将文件切分成 一个一个的Block,然后进行存储。

       2、与 NameNode 交互,获取文件的位置信息。

      3、与 DataNode 交互,读取或者写入数据。

       4、Client 提供一些命令来管理 HDFS,比如启动或者关闭HDFS。

       5、Client 可以通过一些命令来访问 HDFS。

NameNode:就是 master,它是一个主管、管理者。

      1、管理 HDFS 的名称空间。

       2、管理数据块(Block)映射信息

       3、配置副本策略

      4、处理客户端读写请求。

DataNode:就是Slave。NameNode 下达命令,DataNode 执行实际的操作。

       1、存储实际的数据块。

       2、执行数据块的读/写操作。

Secondary NameNode:并非 NameNode 的热备。当NameNode 挂掉的时候,它并不能马上替换 NameNode 并提供服务。

       1、辅助 NameNode,分担其工作量。

      2、定期合并 fsimage和fsedits,并推送给NameNode。

       3、在紧急情况下,可辅助恢复 NameNode。

二:如何读取文件


HDFS的文件读取原理,详细解析如下:

     1、首先调用FileSystem对象的open方法,其实获取的是一个DistributedFileSystem的实例。

         2、DistributedFileSystem通过RPC(远程过程调用)获得文件的第一批block的locations,同一block按照重复数会返回多个locations,这些locations按照Hadoop拓扑结构排序,距离客户端近的排在前面。

     3、前两步会返回一个FSDataInputStream对象,该对象会被封装成 DFSInputStream对象,DFSInputStream可以方便的管理datanode和namenode数据流。客户端调用read方 法,DFSInputStream就会找出离客户端最近的datanode并连接datanode。

           4、数据从datanode源源不断的流向客户端。

          5、如果第一个block块的数据读完了,就会关闭指向第一个block块的datanode连接,接着读取下一个block块。这些操作对客户端来说是透明的,从客户端的角度来看只是读一个持续不断的流。

         6、如果第一批block都读完了,DFSInputStream就会去namenode拿下一批blocks的location,然后继续读,如果所有的block块都读完,这时就会关闭掉所有的流。 

三:如何写入文件


HDFS的文件写入原理详细步骤解析:

      1.客户端通过调用 DistributedFileSystem 的create方法,创建一个新的文件。

      2.DistributedFileSystem 通过 RPC(远程过程调用)调用 NameNode,去创建一个没有blocks关联的新文件。创建前,NameNode 会做各种校验,比如文件是否存在,客户端有无权限去创建等。如果校验通过,NameNode 就会记录下新文件,否则就会抛出IO异常。

      3.前两步结束后会返回 FSDataOutputStream 的对象,和读文件的时候相似,FSDataOutputStream 被封装成 DFSOutputStream,DFSOutputStream 可以协调 NameNode和 DataNode。客户端开始写数据到DFSOutputStream,DFSOutputStream会把数据切成一个个小packet,然后排成队列 data queue。

      4.DataStreamer 会去处理接受 data queue,它先问询 NameNode 这个新的 block 最适合存储的在哪几个DataNode里,比如重复数是3,那么就找到3个最适合的 DataNode,把它们排成一个 pipeline。DataStreamer 把 packet 按队列输出到管道的第一个 DataNode 中,第一个 DataNode又把 packet 输出到第二个 DataNode 中,以此类推。

      5.DFSOutputStream 还有一个队列叫 ack queue,也是由 packet 组成,等待DataNode的收到响应,当pipeline中的所有DataNode都表示已经收到的时候,这时akc queue才会把对应的packet包移除掉。

      6.客户端完成写数据后,调用close方法关闭写入流。

      7.DataStreamer 把剩余的包都刷到 pipeline 里,然后等待 ack 信息,收到最后一个 ack 后,通知 DataNode 把文件标示为已完成

四:YARN的架构


yarn主要由 ResourceManager,NodeManager,ApplicationMaster和Container

ResourceManager(RM)

RM是全局资源管理器,负责整个系统的资源管理和分配。

主要由两个组件组成:调度器和应用 程序管理器(ASM)

调度器

调度器根据容量,队列等限制条件,将系统中的资源分配给各个正在运行的应用程序

不负责具体应用程序的相关工作,比如监控或跟踪状态

不负责重新启动失败任务

资源分配单位用“资源容器”resource Container表示

Container是一个动态资源分配单位,它将内存,CPU,磁盘,网络等资源封装在一起,从而限定每个任务的资源量

调度器是一个可插拔的组件,用户可以自行设计

YARN提供了多种直接可用的调度器,比如fair Scheduler和Capacity Scheduler等。

应用程序管理器

负责管理整个系统中所有应用程序

ApplicationMaster(AM)

用户提交的每个应用程序均包含一个AM

AM的主要功能

与RM调度器协商以获取资源(用Container表示)

将得到的任务进一步分配给内部的任务

与NM通信以自动/停止任务

监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务

当前YARN自带了两个AM实现

一个用于演示AM编写方法的实例程序distributedshell

一个用于Mapreduce程序---MRAppMaster

其他的计算框架对应的AM正在开发中,比如spark等。

Nodemanager(NM)和Container

NM是每个节点上的资源和任务管理器

定时向RM汇报本节点上的资源使用情况和各个Container的运行状态

接收并处理来自AM的Container启动/停止等各种要求

Container是YARN中的资源抽象,它封装了某个节点上的多维度资源

YARN会为每个任务分配一个Container,且改任务只能使用该Container中描述的资源

Container不同于MRv1的slot,它是一个动态资源划分单位,是根据应用程序的需求动态产生的

yarn的工作流程

1:由客户端提交一个应用,由RM的ASM接受应用请求

提交过来的应用程序包括哪些内容:

a:ApplicationMaster

b:启动Applicationmaster的命令

c:本身应用程序的内容

2:提交了三部分内容给RM,然后RM找NodeManager,然后

Nodemanager就启用Applicationmaster,并分配Container

接下来我们就要执行这个任务了,

3:但是执行任务需要资源,所以我们得向RM的ASM申请执行任务的资源(它会在RM这儿注册一下,说我已经启动了,注册了以后就可以通过RM的来管理,我们用户也可以通过RM的web客户端来监控任务的状态)ASM只是负责APplicationMaster的启用

4::我们注册好了后,得申请资源,申请资源是通过第四步,向ResourceScheduler申请的

5:申请并领取资源后,它会找Nodemanager,告诉他我应经申请到了,然后Nodemanager判断一下,

6:知道他申请到了以后就会启动任务,当前启动之前会准备好环境,

7:任务启动以后会跟APplicationmaster进行通信,不断的心跳进行任务的汇报。

8:完成以后会给RM进行汇报,让RSM撤销注册。然后RSM就会回收资源。当然了,我们是分布式的,所以我们不会只跟自己的Nodemanager通信。也会跟其他的节点通信。

五:MpReduce编程模型(wordcount为例)





HDFS、YARN、MapReduce概述及三者之间的关系(图解) HDFS(Hadoop Distributed File System) 是一种分布式文件系统,用于处理在商业硬件上运行的大型数据集。它用于将单个 Apache Hadoop 集群扩展到数百 (甚至数千)个节点。HDFS 是的主要组件之一,其他组件包括MapReduce和 YARN。HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不需要改变。MapReduce是一种分布式计算框架。 阅读详情

相关推荐

Hadoop(HDFS、Yarn、MapReduce、Zookeeper、Kafka、Flume、Storm、Spark) 知识点总结

知识点总结请简述HDFS集群的总体架构以及NameNode、DataNode和SecondaryNameNode的作用。什么是HDFS的机架感知策略?在HDFS使用该策略有什么优点?简述HDFS读写数据的流程。简述YARN集群的总体架构以及ResourceManager、NodeManager、ApplicationMaster和Container的作用。以单词计数为例,简述MapReduce计算模型的三个阶段。在ZooKeeper集群中,znode节点有哪几种类型?不同类型的节点分别具有什么特点?什么是H

zhz的博客 1213

大数据学习笔记-HDFS(四)——HDFS架构

Hadoop Distribute File System,Hadoop分布式文件系统,HDFS是Hadoop核心组件之一,作为生态圈最底层的分布式服务而存在。HDFS解决的问题就是大数据如何存储。架构图:主从架构(master/slave)。通常包含一个主节点和多个从节点。主节点存储和管理namespace,即文件块、位置、权限、大小、其实地址等等,从节点存储文件数据块。

zhang_232的专栏 2274

Hadoop—Hadoop生态圈

Hadoop是目前应用最为广泛的分布式大数据处理框架,其具备可靠、高效、可伸缩等特点。 Hadoop的核心组件是HDFS、MapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop生态圈,目前生态圈结构大致如图所示: 根据服务对象和层次分为:数据来源层、数据传输层、数据存储层、资源管理层、数据计算层、任务调度层、业务模型层。接下来对Hadoop生态圈中出现的相关组件做一个简要介绍。 1、HDFS(分布式文件系统) HDFS是整个hadoop体系的基础,负责数据的存储与...

sanmi8276的博客 1078

HDFS架构及原理

HDFS架构及原理 1、HDFS架构及存储 HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。一个HDFS集群是由一个NameNode和一定数目的DataNode组成的。NameNode是一个中心服务器,负责管理文件系统的名字空间 (Namespace )及客户端对文件的访问。集群中的DataNode一般是一个节点运行一个DataNode进程,负责管理它所在节点上的存储。

code_rui的博客 5665

IEEE论文投稿必看:PDF eXpress报错font not embedded的3种修复方法(附Adobe Acrobat DC操作截图)

本文针对IEEE论文投稿时PDF eXpress系统常见的“font not embedded”报错,提供了三种核心修复方案。首先,详细解析了使用Adobe Acrobat DC进行专业修复的完整操作流程与关键技巧。其次,介绍了无需付费软件的开源与免费工具链(如Ghostscript)解决方案。最后,从源头出发,指导LaTeX和Microsoft Word用户在生成PDF时正确设置以确保字体自动嵌入,帮助研究者彻底解决格式问题,确保投稿顺利。

ujm56789012的博客 516

DEAP数据集实战指南:从脑电信号到情绪分类的完整流程解析

本文提供了DEAP数据集在脑电信号情绪识别领域的完整实战指南。详细解析了数据下载、结构理解、频带功率特征提取等核心步骤,并演示了如何构建和评估机器学习分类模型,为研究者实现从原始脑电信号到情绪分类的完整流程提供了清晰路径。

jj890的博客 897

Python入门day11之文件

文件 打开文件 open(‘根目录 用双\’,‘打开模式’) r:只读方式 w:写入文件,覆盖已有内容 x:若文件存在,文件引发异常,若文件不存在,则创建新文件 b:以二进制模式打开文件 t:以文本模式打开文件(默认) +:可读写模式,如果使用r+,可对文件进行继续不覆盖写入;如果使用w+,则会清空文件中所有内容,须重新写入 f = open('D:\\学习\\python学习\\code\\day13\\file.txt','r+') f = open('D:\\学习\\python学习\\code\\d

程序彤的博客 1322

基于STM32的家庭环境监测毕业设计(全部资料)

本文设计并实现了一套基于STM32的家庭环境监测系统,具备温湿度、烟雾浓度和PM2.5检测功能,通过OLED屏实时显示数据,并能自动或手动控制风扇、加湿器等设备。系统采用分层架构设计,包含数据采集、处理、显示和控制执行模块,经测试性能稳定可靠。研究结果表明,该系统能有效提升家庭环境监测与控制的智能化水平,但仍存在传感器精度和智能化程度不足等问题,未来可进一步优化硬件配置并引入AI算法提升性能。

3254968421的博客 462

hadoop初识之三:搭建hadoop环境(配置HDFS,Yarn及mapreduce 运行在yarn)上及三种运行模式(本地模式,伪分布式和分布式介)

--===============安装jdk(解压版)================== --root 用户登录 --建立文件层级目录    /opt下分别 建 modules/softwares/datas/tools 文件夹 --查看是否安装jdk    rpm -qa|grep java --缷载系统自带的jdk:nodeps是忽略依赖,强制缷载    rpm -e --no

nipanlong001的专栏 1403

计算机视觉入门:从像素到理解的旅程

计算机视觉入门:从像素到理解的旅程,计算机视觉是人工智能领域的核心方向之一,旨在让计算机具备理解和解释视觉信息的能力。本文以系统化的知识框架,结合 Python 代码与经典案例,带您从像素级操作逐步掌握计算机视觉核心技术。涵盖图像处理、特征工程、传统机器学习到深度学习模型,助您构建从基础到进阶的完整能力体系。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 18万+

Redhawk: 为什么STA CHECK中switch cell覆盖率为0(STA file中switch control pin没有timing window)?

如题,做dynamic analysis时,不需要switch cell的timing window信息,但是做low power analysis需要做上电时switch cell的timing window就是必须的了,本文对switch cell control pin没有timing window (STA CHECK覆盖率为零)的这种现象做分析。

m0_61544122的博客 1197

MapReduce概述

文章目录1. 什么是MapReduce2. MapReduce的构建思想3.MapReduce程序开发结构4.yarn 管理计算资源5. MapReduce的程序开发 1. 什么是MapReduce #后续 Spark完成类似的工作 MapReduce是Hadoop体系下的一种计算模型(计算框架),主要功能是用于操作,处理HDFS上的大数据级数据。 2. MapReduce的构建思想 3.MapReduce程序开发结构 4.yarn 管理计算资源 1. 配置相关的配置文件 etc/hadoop

weixin_44809337的博客 438

C语言试题一之计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和

1、题目 计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和 2、源代码实现 #include <stdio.h> #include <math.h> double fun1(int n) { if (n <= 0) return 0; int i; double sum = 0.0; for (i = 1; i <= n;...

码莎拉蒂 1万+

如何分布式运行mapreduce程序

如何分布式运行mapreduce程序 一、 首先要知道此前提      若在windows的Eclipse工程中直接启动mapreduc程序,需要先把hadoop集群的配置目录下的xml都拷贝到src目录下,让程序自动读取集群的地址后去进行分布式运行(您也可以自己写java代码去设置job的configuration属性)。     若不拷贝,工程中bin目录没有完整的xml配置文件

zhangyi880405的专栏 1478

EuROC 数据集格式及相关代码

Euroc提供ROS和zip两种数据格式。

~勿据散客~的博客 2093

Trae 在代码审查场景的 3 大差异化能力:对比 Claude Code、Cursor 与 Codex 实测

揭示代码审查的核心矛盾是上下文断层而非找 Bug,介绍 Trae 通过跨文件符号追踪、意图-实现对齐校验、增量变更影响图谱生成三件事实现上下文校准,并对比其与 Claude Code、Cursor、Codex 在多模块 Java 项目中的实际审查差异

weixin_42525482的博客 152

搞懂HDFS体系架构这一篇就够了

Hadoop Distributed File System (HDFS)是一种分布式文件系统,具有高容错性,可运行在廉价的硬件上,具有高吞吐量,特别适合存放大规模数据集。HDFS实际架构非常复杂,今天通过一篇文章来浓缩最关键的几个点,结合图和源码等理解HDFS体系架构。 系统设计目标 硬件故障 具有硬件故障检测能力,可自动快速恢复。 流式数据访问 高数据访问吞吐量,而非低延时。 大数据集 需支持大数据集,一

data2tech的博客 2688

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

一文弄懂HDFS基本原理和架构

文章目录概述HDFS架构(Hadoop1.x)ClientNameNode(Master)DataNode(Slave)Secondary NameNodeHDFS 副本存放策略NameNode工作原理SecondNameNode与NameNode交互DataNode与NameNode交互![在这里插入图片描述](https://img-blog.csdnimg.cn/20190609163327...

Haiwi-Song 3338

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

大数据篇--HDFS

文章目录一、准备工作 一、准备工作 首先安装好Zookeeper: 在pom.xml中添加: <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.5</version> &

小强签名设计 的博客 2085

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

HDFS:架构详解

HDFS架构解读。

easonwx的博客 1564

HDFS架构

①HDFS概念:Hadoop Distributed File System,是Hadoop项⽬的核⼼⼦项⽬,是分布式计算中数据存储管理的基础。⽀持海量数据的存储,允许⽤户将成百上千的计算机组成存储集群,HDFS 可以运⾏在低成本的硬件上,提供⾼吞吐量、⾼容错性的数据访问,⾮常适合⼤规模数据集上的应⽤。②HDFS优缺点:HDFS优点:高容错性(多个副本且副本丢失可快速恢复);处理大数据;高扩展性(动态扩展集群节点);低成本运行;HDFS缺点:不适合低延时的数据访问;不适合存储大量小文件;

qq_57629191的博客 1907

Hadoop入门学习(一)—— HDFS分布式文件系统

Hadoop是一个Apache基金会所开发的分布式系统基础架构主要解决:海量数据的存储和分析计算问题Hadoop的优势:(1)高可靠性:Hadoop底层维护多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。(2)高扩展性:在集群间分配任务数据,可方便的扩展数以干计的节点。(3)高效性:在MapReduce的思想下,Hadoop是并行工作的,以加快任务处理速度。(4)高容错性:能够自动将失败的任务重新分配。Hadoop的功能主要有三个:分布式存储、计算和调度。

weixin_44361163的博客 2211

HDFS架构概述

HDFS架构概述

enchantedowl的博客 5405

大数据学习之路~Hadoop~详解mp的Shuffle过程

MapReduce的shuffle过程详解 https://blog.youkuaiyun.com/asn_forever/article/details/81233547

tby6686的专栏 315

HDFS分布式文件系统

DataNode是分布式文件系统HDFS的工作节点, 负责数据的存储和读取,会根据客户端 (Client)或者是NameNode的调度进行数据的存储和检索, 并且向NameNode定期 发送自己所存储的块的列表。分级存储:HDFS的异构分级存储框架提供了RAM_DISK 、SSD 、DISK、ARCHIVE这4种存储类型的存储设备,以对应DataNode上可能存在的不同的存储介质。使用抽象块而非整个文件作为存储单元,可简化存储子系统,固定的块大小可方便元数据和文件数据块内容的分开存储;

u010307479的博客 1562

Hadoop集群配置

三个数据节点(datanode)——小弟,在master、slave1与slave2虚拟机上。--关闭虚拟内存检测,在虚拟机环境中不做配置会报错-->(2)编辑Hadoop核心配置文件 - core-site.xml。--用来指定hadoop运行时产生文件的存放目录-->(3)编辑HDFS配置文件 - hdfs-site.xml。--配置资源管理器:集群master-->--配置节点管理器上运行的附加服务-->)在master、slave1与slave2虚拟机上。--配置MR资源调度框架YARN-->

m0_73693938的博客 1022
上一篇: java自动补全如何取消空格确认
下一篇: linux下安装mysql5.7.17及简单配置&&HIVE安装和使用
weifengLD
博客等级 码龄13年 142粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值