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.rhkb.cn/news/178104.html

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

相关文章

最新版付费进群源码带自动定位和分销以及分站功能完整版无加密

简介 看到别人发那些不是挂羊头卖狗肉,要么就是发的缺少文件引流的。非常滴恶心 这源码是我付费花钱买的免费分享给大家,功能完整。而且无加密 功能:新建分销会员,设置账号密码,收款方式等 说明: 分站…

Flutter 04 按钮Button和事件处理、弹框Dialog、Toast

一、按钮组件 1、按钮类型: 2、按钮实现效果: import package:flutter/material.dart;void main() {runApp(const MyApp()); }class MyApp extends StatelessWidget {const MyApp({Key? key}) : super(key: key);overrideWidget build(BuildContext co…

【设计模式】第16节:行为型模式之“命令模式”

一、简介 命令模式:将请求(命令)封装为一个对象,这样可以使用不同的请求参数化其他对象(将不同请求依赖注入到其他对象),并且能够支持请求(命令)的排队执行、记录日志、…

硬件测试(二):波形质量

一、信号质量测试 信号在传输的过程中,一般不是标准的矩形波信号,信号质量测试即通过示波器测试单板硬件的数字信号和模拟信号的各项指标,包括电源、时钟、复位、CPU小系统、外部接口(USB、网口、串口)、逻辑芯片(CPLD…

WiFi 6下的大规模部署策略

随着数字化时代的快速发展,我们正处于一个多设备、高密度连接的时代。在这个背景下,WiFi 6(802.11ax)作为一项新的无线通信标准,被广泛认为是满足未来大规模连接需求的关键技术。本文将深入研究WiFi 6在大规模部署中的…

ardupilot开发 --- 代码解析 篇

0. 前言 根据SITL的断点调试和自己阅读代码的一些理解,写一点自己的注释,有什么不恰当的地方请各位读者不吝赐教。 1. GCS::update_send 线程 主动向MavLink system发送消息包。 1.1 不断向地面站发送飞机状态数据 msg_attitude: msg_location: n…

【腾讯云HAI域探秘】AI让我变成灵魂画手

【腾讯云HAI域探秘】AI让我变成灵魂画手 文章目录 【腾讯云HAI域探秘】AI让我变成灵魂画手前言环境搭建进入 StableDiffusionWebUI使用 高性能应用服务HAI 部署的 StableDiffusionWebUI 快速进行AI绘画总结 前言 最近有幸参与了腾讯云举办的 腾讯云 HAI 产品体验活动。在这个过…

Java——java.time包使用方法详解

Java——time包使用方法详解 java.time 包是 Java 8 引入的新日期和时间 API(JSR 310),用于替代旧的 java.util.Date 和 java.util.Calendar 类。它提供了一组全新的类来处理日期、时间、时间间隔、时区等,具有更好的设计和易用性…

“泰山众筹:引爆全球的财富狂潮!“

想象一下,你手中的白酒不再只是简单的饮品,而是一份珍贵的投资,一份充满惊喜的冒险,一份财富的种子!在这个神奇的时刻,让我们一起探索泰山众筹模式的魅力! 在传统的投资领域,你是否…

PC端视频编辑处理的全方位解决方案

视频已经成为企业传播信息、展示品牌形象的重要工具。然而,制作高质量的视频并非易事,需要专业的技术和设备。这就是美摄科技发挥作用的地方。我们为企业提供一站式的PC端视频编辑处理解决方案,帮助企业轻松制作出专业级别的视频。 美摄科技…

学习笔记二十八:K8S控制器Daemonset入门到企业实战应用

DaemonSet控制器:概念、原理解读 DaemonSet概述DaemonSet工作原理:如何管理PodDaemonset典型的应用场景DaemonSet 与 Deployment 的区别DaemonSet资源清单文件编写技巧 DaemonSet使用案例:部署日志收集组件fluentdDaemonset管理pod&#xff1…

【ES专题】ElasticSearch 高级查询语法Query DSL实战

目录 前言阅读对象阅读导航前置知识数据准备笔记正文一、ES高级查询Query DSL1.1 基本介绍1.2 简单查询之——match-all(匹配所有)1.2.1 返回源数据_source1.2.2 返回指定条数size1.2.3 分页查询from&size1.2.4 指定字段排序sort 1.3 简单查询之——…

图片路径名动态生成

写成这样也可以 :src"./src/assets/ScreenLeft/btn${isShowLeft ? Show : Hide}.png"为了节省开销&#xff0c;这种小图标&#xff0c;可以用i标签 const imgUrl ref("icon1");<iclass"w-50px h-50px":style"{backgroundImage: url(./…

VR全景技术在文化展示与传播中有哪些应用?

引言&#xff1a; 随着科技的不断进步&#xff0c;虚拟现实&#xff08;VR&#xff09;全景技术已经成为文化展示与传播领域的一项重要工具。那么VR全景技术是如何改变文化展示与传播方式&#xff0c;VR全景技术又如何推动文化的传承和普及呢&#xff1f; 一&#xff0e;VR技术…

matplotlib画刻度为对数的图

1. 代码 import matplotlib.pyplot as plta [1000,2000,3000,4000,5000] a_x [1, 2, 3, 4, 5] b [0.00001,0.00025,0.001,0.005,0.000001]plt.figure(figsize(10, 6)) plt.plot(a_x, b, cred, labellabel) plt.scatter(a_x, b, cblue) plt.xlabel(step$(\\times 10^3)$) pl…

iis前端代理后台tomcat

1)tomcat服务器配置运行好&#xff0c;服务地址位于 localhost:8080/wechat 2)iis 绑定了域名 api.abc.com 希望访问 api.abc.com/wechat时&#xff0c;实际由tomcat的服务处理; 3)iis上需要添加组件 requestRouter_amd64.msi rewrite_amd64_zh-CN.msi 4)iis进行相关配置…

视频列表:点击某个视频进行播放,其余视频全部暂停(同时只播放一个视频)

目录 需求实现原理实现代码页面展示 需求 视频列表&#xff1a;点击某个视频进行播放&#xff0c;其余视频全部暂停&#xff08;同时只播放一个视频&#xff09; 实现原理 在 video 标签添加 自定义属性 id (必须唯一)给每个 video 标签 添加 play 视频播放事件播放视频时&…

51单片机-点阵屏led

代码配置 这样就能选择每一列哪个亮了 进行位选&#xff0c;段清零&#xff0c;这样就不会影响多列同时了 实现动画 1、使用文字摸提取文件&#xff0c;提取图案的16进制表示数组 offest作为偏移量&#xff0c;count作为计时。count10,偏移量加1&#xff0c;就相当于得到下一…

ArcGIS制作土地利用现状图

一、现状图成果 土地利用现状图是规划制图中一种基本的图件,基于ArcGIS制作的现状图如下所示: 二、现状图制作 1. 数据准备 (1)土地利用数据 (2)地形图 (3)影像地图 (4)其他数据 2. 符号化 加载现状地块数据。 双击地块图层,切换到符号系统,选择类别下的唯…

HarmonyOS鸿蒙原生应用开发设计- 隐私声明

HarmonyOS设计文档中&#xff0c;为大家提供了独特的隐私声明&#xff0c;开发者可以根据需要直接引用。 开发者直接使用官方提供的隐私声明内容&#xff0c;既可以符合HarmonyOS原生应用的开发上架运营规范&#xff0c;又可以防止使用别人的内容产生的侵权意外情况等&#xff…