【Hadoop】-HDFS的存储原理[4]

目录

前言

一、fsck命令

1、HDFS副本块数量的配置

2、fsck命令查看文件的副本数

3、block配置

二、NameNode元数据

1、edits文件

2、fsigame文件

3、NameNode元数据管理维护

4、元数据合并控制参数

5、SecondaryNameNode的作用

三、HDFS数据的读写流程

1、数据写入流程

2、数据读取流程


前言

HDFS的存储原理是将大文件切分成固定大小的数据块,并在集群中的不同节点上存储数据块的副本,以提高数据的可靠性和性能。同时,HDFS采用流式的数据读写方式,减少了寻址的开销,提高了数据的传输效率。设定统一的管理单位,block块。Block块,HDFS最小存储单位,每个256MB(可以修改)

一、fsck命令

1、HDFS副本块数量的配置

HDFS文件系统的数据安全,是依靠多个副本来确保的。

如何设置默认文件上传到HDFS中拥有的副本数量呢?可以在hdfs-site.xml中配置如下属性:

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

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

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

  • 除了配置文件之外,我们还可以在上传文件的时候,临时决定被上传文件以多少个副本存储。

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

如上命令,就可以在上传test.txt的时候,临时设置其副本数为2.

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

hadoop fs -setrep [-R] 2 path

如上命令,指定path的内容将会被修改为2个副本存储。-R选项可选,使用-R表示对子目录也生效。

2、fsck命令查看文件的副本数

我们可以使用hdfs提供的fsck命令来检查文件的副本数

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

  • -files可以列出指定路径是否正常
  • -files   -block  输出文件块报告(有几个块,多少副本)
  • -files   -block   -locations   输出每一个block的详情

3、block配置

可以看到通过fsck命令我们验证了:

  • 文件有多个副本
  • 文件被分成多个块存储在hdfs

对于块(block),hdfs默认设置为256MB一个,也就是1GB文件会被划分为4个block存储。

块大小可以通过参数修改:

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

如上,设置为256MB。

二、NameNode元数据

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

1、edits文件

edits文件,是一个流水账文件,记录了hdfs中的每一次操作,以及本次操作影响的文件其对于的block。edits记录每一次HDFS的操作,逐渐变得越来越大;所以会存在多个edits文件,确保不会有超大edits的存在,保证检索性能。

2、fsigame文件

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

3、NameNode元数据管理维护

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

  1. 每次对HDFS的操作,均被edits文件记录
  2. edits达到大下上限后,开启新的edits记录
  3. 定期进行edits的合并操作
    1. 如当前没有fsimage文件,将全部edits合并为第一个fsimage
    2. 如当前已存在fsimage文件,将全部edits和已存在的fsimage进行合并,形成新的fsimage。
  4. 重复123流程

前边配置时已经将namenode的操作记录存放于/data/nn目录中。

4、元数据合并控制参数

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

  • dfs.namenode.checkpoint.period,默认3600(秒) 即一小时
  • dfs.namenode.checkpoint.txns,默认1000000,即100w次事务

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

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

  • dfs.namenode.checkpoint.check.period,默认60(秒)

5、SecondaryNameNode的作用

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

SecondaryNameNode会通过http从NameNode拉取数据(edits和fsimage),然后合并完成后提供给NameNode使用。

三、HDFS数据的读写流程

1、数据写入流程

  1. 客户端向NameNode发起请求
  2. NameNode审核权限,剩余空间后,满足条件允许写入,并告知客户端写入的DataNode地址
  3. 客户端向指定的DataNode发送数据包
  4. 被写入数据的DataNode同时完成数据副本的复制工作,将其接收的数据分发给其他DataNode
  5. 如上图,DataNode1复制给DataNode2,然后基于DataNode2复制给DataNode3和DataNode4
  6. 写入完成客户端通知NameNode,NameNode做元数据记录工作

2、数据读取流程

  1. 客户端向NameNode申请读取某文件
  2. NameNode判断客户端权限等细节后,允许读取,并返回此文件的block列表
  3. 客户端拿到block列表后自行寻找DataNode读取即可

总结

1、对于客户端读取HDFS数据的流程中,一定要知道不论读,还是写,NameNode都不经手数据,均是客户端和DataNode直接通讯,不然对NameNode压力太大。

2、写入和读取的流程,简单来说就是:

  • NameNode做授权判断(是否能写、是否能读)
  • 客户端直连DataNode写入、客户端直连DataNode进行block读取
  • 写入,客户端会被分配找离自己最近的DataNode写数据
  • 读取,客户端拿到的block列表,会是网络距离最近的一份

3、网络距离

  • 最近的距离就是在同一台机器
  • 其次就是同一个局域网(交换机)
  • 再其次就是跨越交换机
  • 再其次就是跨越数据中心

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软考之零碎片段记录(二十六)+复习巩固(十一、十二)

学习 1. 有向图邻接表中有奇数个表节点。无向图邻接表有偶数个 2. OSI模型 物理层->数据链路->网络->应用… 3. 无痕浏览 会被保存。下载的文件不会保存。浏览记录。Cookie和网站数据。表单中填写的信息。 4. 邮件收发协议 FTP不属于邮件收发协议 SMTP。简单邮…

python中如何用matplotlib写饼图

#代码 import matplotlib.pyplot as plt# 设置绘图的主题风格 plt.style.use(ggplot) # 中文乱码和坐标轴负号的处理 plt.rcParams[font.sans-serif][SimHei] plt.rcParams[axes.unicode_minus]False plt.rcParams[figure.figsize][10,8] # 构造数据 x [0.2515,0.3724,0.3336…

深入理解操作系统与计算机体系结构

文章目录 操作系统(Operator System)为什么要有操作系统操作系统是如何进行管理的为什么说操作系统是安全&#xff0c;稳定&#xff0c;高效的理解系统调用和库函数 操作系统(Operator System) 概念&#xff1a; 操作系统&#xff08;Operating System&#xff0c;简称OS&…

python自动化登录(测试篇)

起初是想抓取下请求看能不能做模拟登录。无奈发现&#xff0c;目标网站的请求数据是加密过的&#xff0c;而且网站代码也是编译后的代码。要从编译后的代码中提取加密算法。我的第一想法是明知不可为而不为。但是转念一想&#xff0c;何不试试python大法。 1.前期准备 python我…

WIFI加密方式对无线速率的影响

文章目录 无线加密三种选择&#xff1a;WEP、WPA和WPA2测试平台和测试方法非加密和WEP加密测试 结果差别巨大非加密条件下 300M无线路由实测WEP加密条件下 300M无线路由实测 TKIP加密算法&#xff1a;WPA与WPA2成绩低迷WPA加密&#xff08;TKIP加密算法&#xff09;条件下 300M…

万兆以太网MAC设计(6)IP协议报文格式详解以及IP层模块设计

文章目录 前言&#xff1a;IPv4报文协议格式二、IP_RX模块设计2.1、模块接口2.2、模块工作过程 三、IP_TX模块设计3.1、模块接口3.2、模块工作过程 四、仿真4.1、发送端4.2、接受端 前言&#xff1a;IPv4报文协议格式 参考&#xff1a;https://sunyunqiang.com/blog/ipv4_prot…

CLIP论文笔记:Learning Transferable Visual Models From Natural Language Supervision

导语 会议&#xff1a;ICML 2021链接&#xff1a;https://proceedings.mlr.press/v139/radford21a/radford21a.pdf 当前的计算机视觉系统通常只能识别预先设定的对象类别&#xff0c;这限制了它们的广泛应用。为了突破这一局限&#xff0c;本文探索了一种新的学习方法&#x…

[ESP32]:TFLite Micro推理CIFAR10模型

[ESP32]&#xff1a;TFLite Micro推理CIFAR10模型 模型训练 数据集处理 from keras.datasets import cifar10 from keras.preprocessing.image import ImageDataGenerator from keras.models import Sequential, load_model, Model from keras.layers import Input, Dense, …

SSH新功能揭秘:远程工作提升指南【AI写作】

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

【快速入门 LVGL】-- 5、Gui Guider界面移植到STM32工程

上篇&#xff0c;我们已学习&#xff1a;【快速入门 LVGL】-- 4、显示中文 工程中添加了两个按钮作示范。运行效果如图&#xff1a; 本篇&#xff1a;把Gui Guider设计好的界面&#xff0c;移植到STM32工程。 特别地&#xff1a; 在使用Gui Guider进行界面设计时&#xff0c;应…

浅谈叉车车载电脑的市场现状

叉车的起源 叉车源于美国&#xff0c;兴于日本&#xff0c;虽然中国起步较晚&#xff0c;但是近些年来发展迅速。叉车又称叉式装载车&#xff0c;是对于成件托盘类货物进行装卸、堆垛和短距离运输&#xff0c;实现重物搬运作业的轮式工业车辆。 叉车的分类 叉车分为以上六大类…

Apache RocketMQ ACL 2.0 全新升级

作者&#xff1a;徒钟 引言 RocketMQ 作为一款流行的分布式消息中间件&#xff0c;被广泛应用于各种大型分布式系统和微服务中&#xff0c;承担着异步通信、系统解耦、削峰填谷和消息通知等重要的角色。随着技术的演进和业务规模的扩大&#xff0c;安全相关的挑战日益突出&am…

报错:测试报错postman(测试接口)

报错如下 c.e.exception.GlobalExceptionHandler : 异常信息&#xff1a; Content type multipart/form-data;boundary--------------------------952399813172082093419475;charsetUTF-8 not supported 解决&#xff1a; 异常信息 Content type multipart/form-data;boundary…

git常见命令(成长版)

ps&#xff1a;所谓成长版就是后续可能还会添加命令&#xff1a; 1.删除本地分支&#xff1a; git branch -d 分支名 2.拉取代码后默认master分支&#xff0c;切换到线上其他分支&#xff1a; &#xff08;1&#xff09;查看线上所有分支&#xff1a; git branch -a &#…

【网络安全】HTTP协议 — 特点

专栏文章索引&#xff1a;网络安全 有问题可私聊&#xff1a;QQ&#xff1a;3375119339 目录 学习目标​ 一、请求与响应 1.服务器和客户端 二、不保存状态 1.不保存状态的协议 三、资源定位 1.URI&#xff08;统一资源标识符&#xff09; 四、请求方法 1.请求方法 五…

代码随想录算法训练营Day10 | 232.用栈实现队列、225. 用队列实现栈

232.用栈实现队列 题目&#xff1a;请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列的开头移除…

Git的操作和使用

一、基本操作 1、创建git本地仓库 &#xff08;1&#xff09;创建目录&#xff1a;mkdir gitcode &#xff08;2&#xff09;进入目录&#xff1a;cd gitcode/ &#xff08;3&#xff09;查询目录内容&#xff1a;ls &#xff08;4&#xff09;在当前目录下创建git本地仓库…

数据结构(七)---二叉树

目录 一.树的基本概念 二.树的性质 三.二叉树 1.二叉树的基本概念 2.特殊的二叉树 &#xff08;1&#xff09;满二叉树 &#xff08;2&#xff09;完全二叉树 &#xff08;3&#xff09;二叉排序树 &#xff08;4&#xff09;平衡二叉树 3.二叉树的性质 4.完全二叉树…

CC软件防火墙和WEB应用防火墙哪个好

本文将从CC软件防火墙的定义、原理、功能以及应用方面进行全面探讨&#xff0c;旨在加深对CC软件防火墙的理解&#xff0c;并推动网络安全意识的普及。以及WEB应用防火墙二者之间的对比。让用户更了解两个形态产品并作出选择。 第一部分&#xff1a;CC软件防火墙的定义和原理 …

北京小米智能工厂

小米工厂智能化 小米集团昌平区的小米智能工厂二期&#xff0c;成为引领智能化制造的重要一环。这座工厂计划打造成为京津冀地区智能制造示范工厂和全球级的“灯塔工厂”。 工厂位于小米未来产业园区&#xff0c;占地81000平方米&#xff0c;年产能可达千万台智能手机&#xff…