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

相关推荐
码上淘金6 分钟前
Apache Flink架构深度解析:任务调度、算子数据同步与TaskSlot资源管理机制
大数据·架构·flink
千墨15 分钟前
VMware安装Centos 9虚拟机+设置共享文件夹+远程登录
linux·运维·centos
ezreal_pan16 分钟前
kafka消费能力压测:使用官方工具
分布式·kafka
宽带你的世界18 分钟前
TiDB 是一个分布式 NewSQL 数据库
数据库·分布式·tidb
fruge24 分钟前
git上传 项目 把node_modules也上传至仓库了,在文件.gitignore 中忽略node_modules 依然不行
大数据·git·elasticsearch
xiao-xiang29 分钟前
kafka-集群缩容
分布式·kafka
比花花解语31 分钟前
Kafka在Windows系统使用delete命令删除Topic时出现的问题
windows·分布式·kafka
解决方案工程师33 分钟前
【Kafka】Kafka高性能解读
分布式·kafka
yellowatumn36 分钟前
RocketMq\Kafka如何保障消息不丢失?
分布式·kafka·rocketmq
python资深爱好者1 小时前
什么容错性以及Spark Streaming如何保证容错性
大数据·分布式·spark