Hdfs(二)基本结构

HDFS的基本结构

HDFS基本结构分NameNode、SecondaryNameNode、DataNode这几个。

 

NameNode

是Master节点,主节点,有点类似Linux里的根目录。管理数据块映射;处理客户端的读写请求;配置副本策略;管理HDFS的名称空间;对外接收请求,记录元数据,管理DataNode。 元数据在磁盘上的存储位置由属性hadoop.tmp.dir来决定,是放在core-site.xml文件中。如果不指定,默认情况下是放在/tmp下。

HDFS会对上传的文件进行切分处理,切出来的每一个数据块称为Block

防止数据丢失,HDFS会对上传的文件进行自动的备份。每一个备份称之为是一个副本(replication/replicas)。如果不指定,默认情况下,副本数量为3(备份到其他节点上,加上原有的总共3份)

HDFS参考Linux设计了一套文件系统,允许将文件存储到不同的路径下,同时也设计了一套和Linux一样的权限策略。HDFS的根路径是/。

在HDFS中,将元数据拆分成了很多项,主要包含了以下几项:上传的文件名以及存储的虚拟路径,例如/log/a.log。文件对应的上传用户以及用户组。文件的权限,例如-rwxr-xr--。文件大小。

SecondaryNameNode

保存着NameNode的部分信息(不是全部信息NameNode宕掉之后恢复数据用),是NameNode的冷备份;合并fsimage和edits然后再发给namenode。(防止edits过大的一种解决方案)

DataNode(从节点)

 负责存储client发来的数据块block;执行数据块的读写操作。是NameNode的小弟。DataNode是HDFS的从节点,主要用于存储数据,数据会以Block形式落地到磁盘上。数据在磁盘上的存储位置同样由hadoop.tmp.dir属性来决定。DataNode通过心跳机制向NameNode来注册信息。

举例

假设我们有一个包含100个数据块的文件,每个数据块的大小为80MB。当客户端需要读取或写入该文件时,NameNode和DataNode将扮演不同的角色。

当客户端需要读取文件时,它首先会向NameNode发送一个读取请求。NameNode会返回包含数据块位置信息的元数据给客户端。客户端根据元数据信息,直接与存储有所需数据块的DataNode进行通信,获取数据块并进行读取操作。

当客户端需要写入文件时,它首先会向NameNode发送一个写入请求。NameNode会返回一个包含可用的DataNode列表的元数据给客户端。客户端根据元数据信息,选择一个DataNode作为目标节点,并将数据块写入该节点。同时,客户端还会将数据块的副本分发给其他DataNode,以实现数据的冗余存储。

参考资料Hadoop分布式文件系统:架构和设计 (apache.org)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Allen019

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值