HDFS 读写架构

一、组成架构

1、NameNode(NN) : 集群的Master,它是一个主管,管理者

(1) 管理HDFS的命名空间
(2) 配置副本策略
(3) 管理数据块(Block)映射信息
(4) 处理客户端读写请求

2、DataNode(DN) : 集群的Slave。NN下达命令,DataNode执行实际操作。

(1) 存储实际的数据块
(2) 执行数据块的读/写操作

3、Client : 客户端

(1) 文件切分。文件上传HDFS的时候,client将文件切分成一个个的Block,然后进行上传
(2) 与NameNode交互,获取文件的位置信息
(3) 与DataNode交互,读取或写入数据

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

(1) 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode
(2) 在紧急情况下可辅助恢复NameNode

二、HDFS存储副本机制

1、在 HDFS 中,每个数据块都会被分成若干个数据块副本。默认情况下每个数据块会被复制三次到HDFS 集群中的三个不同的 DataNode 上

在这里插入图片描述
2、HDFS 会将数据块的多个副本分别存储在不同的 DataNode 上,以提高数据的可靠性和容错性。如果某个 DataNode 发生故障,数据块的其他副本仍然可以被访问。

3、HDFS 会尽量将数据块的多个副本存储在不同的机架(rack)上,以避免机架故障导致数据不可用的情况。HDFS 会将数据块的多个副本存储在不同的机架的从节点上,第一个副本在客户端所处的节点上。如果客户端在集群外,随机选一个,第二个副本在另一个机架的随机一个节点,第三个副本在第二个副本所在机架的随机节点

4、各个从节点通过机架交换机进行数据传输,各个机架通过集群内交换机进行数据传输,各个集群通过集群间交换机进行数据传输
在这里插入图片描述

三、HDFS 机架

1、机架数据传输距离计算:

1)相同的datanode,距离为 0,比如H1到H1 distance(/D1/R1/H1,/D1/R1/H1)=0
2)同一机架下的不同datanode,距离为 2,比如H1到H2 distance(/D1/R1/H1,/D1/R1/H2)=2
3)同一集群不同机架下的datanode,距离为 4,比如H1到H4 distance(/D1/R1/H1,/D1/R1/H4)=4
4)不同集群下的datanode,距离为 6,比如H1到H7 distance(/D1/R1/H1,/D2/R3/H7)=6
在这里插入图片描述

2、为什么三分之一的副本在一个节点上,三分之二的副本在另一个机架不同节点上

1)hdfs 三个副本的这种存放策略减少了机架间的数据传输,提高了写操作的效率。
2)机架的错误远远比节点的错误少,所以这种策略不会影响到数据的可靠性和可用性。
3)与此同时,因为数据块只存放在两个不同的机架上,所以此策略减少了读取数据时需要的网络传输总带宽
4)在这种策略下,副本并不是均匀的分布在不同的机架上:三分之一的副本在一个节点上,三分之二的副本在一个机架上,其它副本均匀分布在剩下的机架中,这种策略在不损害数据可靠性和读取性能的情况下改进了写的性能。
在这里插入图片描述

四、HDFS 写(Write)流程

在这里插入图片描述

(1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在,客户端是否有写权限。
(2)NameNode返回是否可以上传。
(3)客户端请求第一个 Block上传到哪几个DataNode服务器上(数据的切分在客户端完成)。
(4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3(返回dn数据存储列表)。
(5)客户端通过FSDataOutputStream模块请求dn1上传数据,dn1收到请求会继续调用dn2,然后dn2调用dn3,将这个通信管道建立完成。(Pipline管道传输)
(6)dn1、dn2、dn3逐级应答客户端。
(7)客户端开始往dn1上传第一个Block(先从磁盘读取数据放到一个本地内存缓存),以Packet为单位,dn1收到一个Packet就会传给dn2,dn2传给dn3;dn1每传一个packet会放入一个应答队列等待应答(ACK校验)。
(8)当一个Block传输完成之后,客户端再次请求NameNode上传第二个Block的服务器。(重复执行3-7步)。

五、HDFS 读(Read)流程

在这里插入图片描述
(1)客户端向 NameNode 发送读取请求,请求包括要读取的文件名和文件块的起始位置。
(2)NameNode 根据请求的文件名,查询文件所对应的块列表,并返回给客户端块列表以及每个块所在的 DataNode 列表。
(3)客户端根据返回的块列表和 DataNode 列表,选择一个 DataNode 开始读取数据。如果选择的 DataNode 不可用,则会选择另外一个 DataNode。
(4)客户端向选择的 DataNode 发送读取请求,请求包括要读取的块的起始位置和长度。
(5)DataNode 接收到读取请求后,从本地磁盘读取数据块,并将数据块返回给客户端

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue基于ElementUI/Plus自定义的一些组件

vue3-my-ElementPlus 源码请到GitHub下载使用MyTable、MySelect、MyPagination 置顶|Top | 使用案例: 1.0 定义表格数据(测试使用) data() {return {tableData: [],value:[],valueList: [],}; },// 构造表格测试数据// 1 第一行&#xf…

如何去除视频水印?三种简便有效的方法解决视频水印问题

在当今社交媒体时代,视频分享已成为一种流行趋势。然而,很多人在分享自己的作品时却苦于视频上存在的水印,水印通常是出于版权保护或品牌推广的目的而添加到视频中的,但有时它们可能会对用户体验造成负面影响。 如果您正在寻找如何…

基础课18——智能客服系统架构

1.基础设施层 基础设施主要包括以下几点: 1. 硬件设施:包括服务器、存储设备、网络设备等,这是整个系统运行的物理基础。 2. 软件设施:包括操作系统、数据库管理系统、自然语言处理(NLP)工具和机器学习算法等,这些是…

二叉树按二叉链表形式存储,试编写一个判别给定二叉树是否是完全二叉树的算法

完全二叉树:就是每层横着划过去是连起来的,中间不会断开 比如下面的左图就是完全二叉树 再比如下面的右图就是非完全二叉树 那我们可以采用层序遍历的方法,借助一个辅助队列 当辅助队列不空的时候,出队头元素,入队头…

【C语言基础】第01章_C语言入门

讲师:康师傅 视频:https://www.bilibili.com/video/BV1Bh4y1q7Nt?p1&vd_source3eaa9d17f2454e1ae80abc50d16e66b5 文章目录 本章专题脉络1初识计算机语言1.1 计算机语言是什么1.2 计算机语言简史 2初识C语言2.1 C语言的由来2.2 为什么要学习C语言2.…

Go Gin中间件

Gin是一个用Go语言编写的Web框架,它提供了一种简单的方式来创建HTTP路由和处理HTTP请求。中间件是Gin框架中的一个重要概念,它可以用来处理HTTP请求和响应,或者在处理请求之前和之后执行一些操作。 以下是关于Gin中间件开发的一些基本信息&am…

抖音极速版app拉新一手申请渠道 附快手极速版app拉新申请资料

抖音极速版app拉新一手申请渠道 附快手极速版app拉新申请资料 通过“聚量推客”申请,价格更高 抖音极速版app拉新是地推百搭项目,部分团队作为主打项目推广,流程简单只需要新设备即可,如果你能做次留或者7日留存价格还是很可观的…

ElasticSearch 实现 全文检索 支持(PDF、TXT、Word、HTML等文件)通过 ingest-attachment 插件实现 文档的检索

一、Attachment 介绍 Attachment 插件是 Elasticsearch 中的一种插件,允许将各种二进制文件(如PDF、Word文档等)以及它们的内容索引到 Elasticsearch 中。插件使用 Apache Tika 库来解析和提取二进制文件的内容。通过使用 Attachment 插件&a…

云安全—kubelet攻击面

0x00 前言 虽然说总结的是kubelet的攻击面,但是在总结攻击面之前还是需要去了解kubelet的基本原理,虽然说我们浅尝即止,但是还是要以能给别人讲出来为基本原则。 其他文章: 云安全—K8s APi Server 6443 攻击面云安全—K8S API Server 未授…

2023数学建模国赛C题赛后总结

今天国赛的成绩终于出来了,盼星星盼月亮的。之前面试的时候已经把我给推到国奖评委那里去了,可是好可惜,最终以很微小的劣势错失国二。只拿到了广西区的省一。我心里还是很遗憾的,我真的为此准备了很久,虽然当中也有着…

MATLAB_5MW风电永磁直驱发电机-1200V直流并网MATLAB仿真模型

仿真软件:matlab2016b 风机传动模块、PMSG模块、蓄电池模块、超级电容模块、无穷大电源、蓄电池控制、风机控制、逆变器控制等模块。 逆变器输出电压: 混合储能系统SOC: 威♥关注“电击小子程高兴的MATLAB小屋”获取更多精彩资料&#xff0…

蓝桥杯官网填空题(方格填数)

题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 在 2 行 5 列的格子中填入 1 到 10 的数字。 要求: 相邻的格子中的数,右边的大于左边的,下边的大于上边的。 如下图所示的 …