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文件,增加整个系统的性能

相关推荐
杨靳言先8 小时前
✨【运维实战】内网服务器无法联网?巧用 SSH 隧道实现反向代理访问公网资源 (Docker/PortForwarding)
服务器·docker·ssh
二哈喇子!10 小时前
基于SpringBoot框架的网上购书系统的设计与实现
java·大数据·spring boot
chinesegf10 小时前
ubuntu中虚拟环境的简单创建和管理
linux·运维·ubuntu
java_logo10 小时前
2025 年 11 月最新 Docker 镜像源加速列表与使用指南
linux·运维·docker·容器·运维开发·kylin
云器科技11 小时前
大数据平台降本增效实践:四大典型场景的成本优化之路
大数据
一碗面42111 小时前
Linux下的网络模型
linux·网络模型
B站计算机毕业设计超人11 小时前
计算机毕业设计Python知识图谱中华古诗词可视化 古诗词情感分析 古诗词智能问答系统 AI大模型自动写诗 大数据毕业设计(源码+LW文档+PPT+讲解)
大数据·人工智能·hadoop·python·机器学习·知识图谱·课程设计
天天进步201511 小时前
多线程与分布式:使用 Botasaurus 轻松构建大规模数据采集集群
分布式·爬虫
小镇学者11 小时前
【python】python项目是如何部署到服务器上的
服务器·python·github
HIT_Weston12 小时前
103、【Ubuntu】【Hugo】搭建私人博客:搜索功能(四)
linux·运维·ubuntu