hdfs的分布式存储原理

1.想要把一个大文件存储到hdfs,首先进行划分,将文件划分为一个一个的block,这个block默认为512MB,可修改.

2.备份(也就是副本)

将文件划分后,一个block丢失则原来的大文件没有用了.为了确保文件的安全性,hdfs提供了副本,也就是备份,将文件划分之后hdfs默认将每一个block备份到其他不同datanode上(默认是备份两个不同datanode,可修改),这样一个block丢失可以将备份的复制到原位置,确保了hdfs文件系统的安全性

3.hdfs的副本数修改:

方式一:文件是hdfs.site.xml,默认是三个副本,基本无需修改

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

方式二:上传文件是自定义副本数量

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

-D表示执行文件系统命令时自行加入配置项

这时副本数根据配置文件来,我也没搞懂

4.查看副本,文件状态

命令: hdfs fsck path -files \[-blocks \[-locations]]

5。block配置,也在hdfs.site.xml文件

1684354456B=256MB,这是默认,可以自行修改

6.namenode元数据,元数据文件(edits)

一:edits文件,记录hdfs的每一次记录

二:FSImage文件(edits文件的合并)

三:配置,配置文件在hdfs.site.xml

查看元数据:(里面有edits文件与fsimage文件)

四:元数据合并控制参数

(1)定时过程:基于:dfs.namenode.checkpoint.period,默认 3600( 秒 )即1小时 dfs.namenode.checkpoint.txns,默认1000000,即 100W 次事务.只要有一个达到条件就执行。

(2)检查是否达到条件,默认60秒检查一次,基于:dfs.namenode.checkpoint.check.period.默认60 (秒),来决定.

五:合并由secondarynamenode处理

namenode运行客户所操作的命令后,生成edits文件,操作的文件或文件夹放入namenode与datanode,而namenode的fsimage文件由secondarynamenode把namenode的edits文件拿过来进行合并,再返回到namenode里.

没有secondarynamenode就没有fsimage文件

7.数据的写入流程:

一. 客户端向NameNode发起请求

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

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

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

五. 写入完成,客户端通知NameNode,NameNode做元数据记录工作

8.数据的读流程:

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

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

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

namenode就是干分析与记录的事儿,datanode完全是存放数据的,secondarynamenode就是把namenode生产出来的edits文件合并为fsimage文件,增加整个系统的性能

相关推荐
大树8811 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠11 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
大志哥12311 小时前
ES和Logstash日志链路系统上线后遭遇切片爆炸(解决)
大数据·elasticsearch
bush411 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行52011 小时前
Linux 11 动态监控指令top
linux
小宇宙Zz12 小时前
Maven依赖冲突
java·服务器·maven
果丁智能12 小时前
物联网智能锁赋能集中式住宿:身份核验与远程权限管控的全链路技术实践
大数据·人工智能·物联网·智能家居
王小王-12313 小时前
基于 Hive 的网易云音乐数据分析及可视化系统
hive·hadoop·数据分析·音乐数据分析·网易云音乐分析·hive音乐分析·hadoop网易云
不会C语言的男孩13 小时前
Linux 系统编程 · 第 8 章:进程基础
linux·c语言
ApacheSeaTunnel13 小时前
实战演示 | 基于 Apache SeaTunnel 与 Apache DolphinScheduler 实现 MySQL 到 Doris 离线定时增量同步
大数据·mysql·开源·doris·数据集成·seatunnel·数据同步