大数据技术之Hadoop:HDFS存储原理篇(五)

news2024/9/25 11:12:48

目录

一、原理介绍

1.1 Block块

1.2 副本机制

二、fsck命令

2.1 设置默认副本数量

2.2 临时设置文件副本大小

2.3 fsck命令检查文件的副本数

2.4 block块大小的配置

三、NameNode元数据

3.1 NameNode作用

3.2 edits文件

3.3 FSImage文件

3.4 元素据合并控制参数

3.5 SecondaryNameNode的作用

四、HDFS的读写流程

4.1 写入流程

4.2 读取流程


一、原理介绍

1.1 Block块

HDFS分布式文件存储,通常是将1个文件拆分成多个部分,然后分别发送到不同服务器节点上。

 

问题:不同的文件大小不一,粗暴的拆分然后放到服务器不同节点,会导致各个部分的大小也不一样,不利于统一管理。

解决办法:设定统一的管理单位,block块。

  •  Block块,HDFS最小存储单位
  • 每个256MB(可以修改)

这样可以将文件分成多个Block块,不同的Block块存入对应服务器。

举例说明

某个文件大小1G,那么理论上可以分为4个Block块。

如果集群有三台服务器,那么某台服务器放2个Block块,然后其他两台服务器各1个Block块。

1.2 副本机制

如果不备份,假如某个块损坏了,那么就会导致整个文件不可用。

所以,副本机制是保障数据安全的非常重要的机制。

二、fsck命令

2.1 设置默认副本数量

默认的HDFS文件的副本数量就是3个。

当然这个值可以修改,具体可以在hdfs-site.xml中配置如下属性

<property>
    <name>dfs.replication</name>
    <value>3</value>
</property>

这个属性默认是3,一般情况下,我们无需主动配置(除非需要设置非3的数值)

如果需要自定义这个属性,请修改每一台服务器的hdfs-site.xml文件,并设置此属性。

2.2 临时设置文件副本大小

如果不加限制,我们创建的文件或者上传的文件,默认副本数就是上面设置的值。

但是单次文件上传,我们也可以指定某个文件拥有多少个副本。

hadoop fs -D dfs.replication=2 -put test.txt /tmp/

对于已经存在HDFS的文件,修改dfs.replication属性不会生效,如果要修改已存在文件可以通过命令

hadoop fs -setrep [-R] 2 path

如上命令,指定path的内容将会被修改为2个副本存储。

-R选项可选,使用-R表示对子目录也生效。

2.3 fsck命令检查文件的副本数

我们要查看详细的文件副本数信息,可以通过如下命令:

hdfs fsck path [-files [-blocks [-locations]]]

fsck可以检查指定路径是否正常

        -files可以列出路径内的文件状态

        -files -blocks  输出文件块报告(有几个块,多少副本)

        -files -blocks -locations 输出每一个block的详情

2.4 block块大小的配置

默认情况下,block块的大小是256MB,当然我们也可以修改。

  <property>
    <name>dfs.blocksize</name>
    <value>268435456</value>
    <description>设置HDFS块大小,单位是b</description>
  </property>

三、NameNode元数据

3.1 NameNode作用

NameNode作用:管理Block块。

hdfs中,文件是被划分了一堆堆的block块,那如果文件很大、以及文件很多,Hadoop是如何记录和整理文件和block块的关系呢?

答案就在于NameNode。

NameNode基于一批edits和一个fsimage文件的配合完成整个文件系统的管理和维护。

3.2 edits文件

edits文件,是一个流水账文件,记录了hdfs中的每一次操作,以及本次操作影响的文件其对应的block。

 

3.3 FSImage文件

将全部的edits文件,合并为最终结果,即可得到一个FSImage文件

小结

NameNode基于editsFSImage的配合,完成整个文件系统文件的管理。

1. 每次对HDFS的操作,均被edits文件记录

2. edits达到大小上线后,开启新的edits记录

3. 定期进行edits的合并操作

  • 如当前没有fsimage文件,  将全部edits合并为第一个fsimage
  • 如当前已存在fsimage文件,将全部edits和已存在的fsimage进行合并,形成新的fsimage

4. 重复123流程

3.4 元素据合并控制参数

对于元数据的合并,是一个定时过程,基于:

dfs.namenode.checkpoint.period,默认3600(秒)即1小时

dfs.namenode.checkpoint.txns,默认1000000,即100W次事务

只要有一个达到条件就执行。

检查是否达到条件,默认60秒检查一次,基于:

dfs.namenode.checkpoint.check.period,默认60(秒),来决定。

3.5 SecondaryNameNode的作用

对于元数据的合并,还记得HDFS集群有一个辅助角色:SecondaryNameNode吗?

没错,合并元数据的事情就是它干的

SecondaryNameNode会通过httpNameNode拉取数据(editsfsimage

然后合并完成后提供给NameNode使用。

四、HDFS的读写流程

4.1 写入流程

1. 客户端向NameNode发起请求

2. NameNode审核权限、剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址

3. 客户端向指定的DataNode发送数据包

4. 被写入数据的DataNode同时完成数据副本的复制工作,将其接收的数据分发给其它DataNode

5. 如上图,DataNode1复制给DataNode2,然后基于DataNode2复制给Datanode3DataNode4

6. 写入完成客户端通知NameNodeNameNode做元数据记录工作

关键信息点:

NameNode不负责数据写入,只负责元数据记录和权限审批

客户端直接1DataNode写数据,这个DataNode一般是离客户端最近(网络距离)的那一个

数据块副本的复制工作,DataNode之间自行完成(构建一个PipLine,按顺序复制分发,如图12, 234

4.2 读取流程

1、客户端向NameNode申请读取某文件

2 NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表

3、客户端拿到block列表后自行寻找DataNode读取即可

关键点:

数据同样不通过NameNode提供

NameNode提供的block列表,会基于网络距离计算尽量提供离客户端最近的

这是因为1block3份,会尽量找离客户端最近的那一份让其读取。

最难不过坚持,继续下一关~

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

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

相关文章

你知道聊天机器人在医疗保健行业发挥了什么作用吗?

在医疗保健行业&#xff0c;时间限制、数据泄露、误诊、治疗延误和人为错误等各种挑战构成了重大问题。然而&#xff0c;人工智能&#xff08;AI&#xff09;的快速发展已成为解决这些问题的解决方案。一个特别值得注意的应用是医疗保健中的聊天机器人&#xff0c;它提供了一系…

Linux---应用层获取usb设备描述信息通过endpoint地址数据通讯

文章目录 &#x1f308;应用层获取USB设备信息总体思路&#x1f308;应用层代码实例&#x1f308;实例测试&#x1f308;应用层通过endpoint进行数据读写 &#x1f308;应用层获取USB设备信息总体思路 应用层可以打开USB设备的节点&#xff0c;读取包括USB设备的配置&#xff…

核心实验12合集_vlan高级配置:基于子网划分vlan超级vlan相同vlan 端口隔离 _ENSP

项目场景一&#xff1a; 核心实验12合集-1_vlan高级配置_ENSP 基于子网划分vlan &#xff11; 当检测ip在192.168.10.0/24时候&#xff0c;PC接入交换机时&#xff0c;将其划为vlan10&#xff0c; 且可以和vlan 10 的服务器通信。 2 当检测ip在192.168.20.0/24时候&#xff0c;…

配电室数字电力智慧平台

配电室数字电力智慧平台依托电易云-智慧电力物联网&#xff0c;采用先进的人工智能、物联网、大数据技术&#xff0c;对配电室进行全面监控和管理&#xff0c;实现电力运行的自动化和智能化&#xff0c;有效降低运维成本&#xff0c;提高电力运行安全和可靠性。 该平台可以实时…

CTFHUB ICS(2)

1.modbus 还是通过strings输出文件 发现这次只找到了flag的字符666c61677b就是flag的16进制 通过strings和grep配合输出为10个数量的数据 strings 6.pcap | grep -E "^.{10}$" grep 搜索文本的工具 -E 使用扩展正则表达式 ^ 表示行的开始 . 匹配任意单…

内网渗透之凭据收集的各种方式

凭据收集是什么&#xff1f; 凭据收集是获取用户和系统凭据访问权限的术语。 这是一种查找或窃取存储的凭据的技术&#xff0c;包括网络嗅探&#xff0c;攻击者可以在网络嗅探中捕获传输的凭据。 凭证可以有多种不同的形式&#xff0c;例如&#xff1a; 帐户详细信息&#xf…

用上这个建筑管理技巧,我才知道有多省事!

在过去的几十年里&#xff0c;建筑和施工行业取得了巨大的进步。然而&#xff0c;这个行业也一直在不断面临挑战&#xff0c;如高成本、时间压力、安全隐患和资源浪费。 随着科技的飞速发展&#xff0c;我们进入了一个新的时代&#xff0c;一个改变着建筑和施工方式的时代 - 智…

TSINGSEE青犀视频AI分析/边缘计算/AI算法·安全帽检测功能——多场景高效运用

安全帽检测算法主要是对人员安全和事故预防的需要。在许多工业领域和施工现场&#xff0c;佩戴安全帽是一种重要的安全措施&#xff0c;可以减少头部受伤的风险。然而&#xff0c;由于工地人员数量众多且繁忙&#xff0c;人工监控难以有效覆盖所有区域&#xff0c;因此旭帆科技…

vue-别名路径联想提示的配置

在根路径下&#xff0c;新建 jsconfig.json 文件&#xff0c;即可 在输入 自动联想到src目录。 代码如下&#xff1a; // 别名路径联想提示&#xff1a;输入自动联想 {"compilerOptions":{"baseUrl":"./","paths": {"/*":[…

算法训练day43|动态规划 part05:0-1背包 (LeetCode 1049. 最后一块石头的重量 II、494. 目标和、474.一和零)

文章目录 1049. 最后一块石头的重量 II思路分析代码实现 494. 目标和思路分析动规方法代码实现总结思考 474.一和零思路分析代码实现思考总结 var code "57a5e730-4e5e-43ad-b567-720d69f0371a"1049. 最后一块石头的重量 II 题目链接&#x1f525;&#x1f525; 有…

泽众TestOne自动化测试平台,挡板测试(Mock测试)上线了!!

什么是挡板测试&#xff08;Mock测试&#xff09;&#xff1f; 主要应对与某些不容易构造或者不容易获取的对象以及暂时没有开发完成的对象&#xff0c;设计一个虚拟的对象&#xff0c;配置测试需求的业务数据&#xff0c;完成测试业务。 TestOne是泽众软件自主研发的一体化测…

静态函数(static)-> static 与 const

一.静态函数 静态函数&#xff08;Static Function&#xff09;是指在C中使用static关键字声明的函数。它们与普通成员函数和全局函数不同&#xff0c;具有以下特点&#xff1a; 作用域限制&#xff1a;静态函数在类的作用域内&#xff0c;但它们不依赖于类的实例&#xff0c;…

GIF动态表情如何制作?教你一招超简单的gif制作方法

动态gif表情包是如何制作的&#xff1f;gif格式动图作为网络上流行的一种图片格式&#xff0c;可以将多张静态图片变成一张gif动图&#xff0c;能够以生动有趣的方式传递信息。而且制作这种gif动图的方法也非常的简单&#xff0c;只需要使用gif在线制作&#xff08;https://www…

不就是G2O嘛

从零开始一起学习SLAM | 理解图优化&#xff0c;一步步带你看懂g2o代码 SLAM的后端一般分为两种处理方法&#xff0c;一种是以扩展卡尔曼滤波&#xff08;EKF&#xff09;为代表的滤波方法&#xff0c;一种是以图优化为代表的非线性优化方法。不过&#xff0c;目前SLAM研究的主…

Oracle数据库开发者工具

和开发者相关的数据库特性&#xff0c;功能与工具列举如下&#xff0c;但不限于以下。因为Oracle数据库中的许多功能其实都间接的和开发者发生关系&#xff0c;如Oracle高级安全选件中的透明数据加密&#xff0c;数据编辑。Oracle Spatial and Graph&#xff08;地理空间与图&a…

ansible搭建

一&#xff0c;ansible是一种由Python开发的自动化运维工具&#xff0c;集合了众多运维工具&#xff08;puppet、cfengine、chef、func、fabric&#xff09;的优点&#xff0c;实现了批量系统配置、批量程序部署、批量运行命令等功能 二&#xff0c;特点 * 部署简单 * **默认…

数据结构入门-13-图

文章目录 一、图的概述1.1 图论的作用1.2 图的分类1.2.1 无向图1.2.2 有向图1.2.3 无权图1.2.4 有劝图 1.3 图的基本概念 二、树的基本表示2.1 邻接矩阵2.1.1 邻接矩阵 表示图2.1.2 邻接矩阵的复杂度 2.2 邻接表2.2.1 邻接表的复杂度2.2.2 邻接表By哈希表 三、图的深度优先遍历…

LLM文章阅读:Baichuan 2 干货

如有转载&#xff0c;请注明出处。欢迎关注微信公众号&#xff1a;低调奋进。打算开始写LLM系列文章&#xff0c;主要从数据、训练框架、对齐等方面进行LLM整理。 Baichuan 2: Open Large-scale Language Models 原始文章链接 https://cdn.baichuan-ai.com/paper/Baichuan2-…

Element Plus table formatter函数返回html内容

查看 Element Plus table formatter 支持返回 类型为string 和 VNode对象&#xff1b; 若依全局直接用h函数&#xff0c;无需引用 下面普通基本用法&#xff1a;在Element Plus中&#xff0c;你可以使用自定义的formatter函数来返回VNode对象&#xff0c;从而实现更灵活的自定…

FasterNet(PConv)paper笔记(CVPR2023)

论文&#xff1a;Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks 先熟悉两个概念&#xff1a;FLOPS和FLOPs&#xff08;s一个大写一个小写&#xff09; FLOPS: FLoating point Operations Per Second的缩写&#xff0c;即每秒浮点运算次数&#xff0c;或…