Hdfs(五)DataNode

HDFS(Hadoop Distributed File System)是一个分布式文件系统,设计用于在商用硬件上运行。HDFS有一个称为Datanode的组件,它们负责管理集群中的数据存储。

HDFS的Datanode是集群中的一个节点,它们存储文件数据并执行数据块的读写操作。每个文件都被分割成一个或多个数据块,这些数据块被存储在不同的Datanode上以实现容错和高可用性。

Datanode简介

Datanode是HDFS文件系统的工作节点,它们根据客户端或者是namenode的调度进行存储和检索数据,并且定期向namenode发送它们所存储的块(block)的列表。

 

NameNode上并不永久保存各个DataNode上数据块的信息,而是通过DataNode启动时的上报程序来更新NameNode上的映射表。

根据客户端或者是namenode的调度存储和检索数据,并且定期向namenode发送所存储的块(block)的列表
数据块block在DataNode进程所在节点上是以文件的形式存储在本地磁盘上

工作内容

数据存储:

DataNode负责存储数据块,这些数据块通常是HDFS中文件的一部分。
每个DataNode都有一个或多个本地磁盘用于存储数据块。
Hadoop默认将数据块复制到多个DataNode上,以实现数据的冗余和容错。


块报告

DataNode定期向Hadoop集群的名称节点(NameNode)发送块报告。
块报告包含DataNode上存储的数据块列表,这允许NameNode了解每个数据块的位置和复制因子。

块复制

当一个DataNode失败或数据块的复制因子不满足要求时,Hadoop会自动执行数据块的复制。
Datanode之间通过复制流的方式进行数据传输,源DataNode将数据块拆分为数据流并发送到目标DataNode。


块删除:

当一个文件被删除或数据块的复制因子发生变化时,Hadoop会删除无效的数据块。
DataNode会定期向NameNode发送块报告,如果发现某个数据块已经失效,会将其删除。


心跳机制

DataNode定期向NameNode发送心跳信号,以通知其自己的存活状态。
如果NameNode在一定时间内没有收到来自DataNode的心跳信号,则认为该DataNode已失效,并将其标记为故障节点。

配置

hdfs-site.xml文件中的相关配置包括:
dfs.datanode.data.dir:指定DataNode数据目录的位置,可以配置多个目录,以逗号分隔。
dfs.datanode.du.reserved:指定DataNode保留的存储空间大小。
角色与功能:

在HDFS的主/从(Master/Slave)体系架构中,DataNode是文件系统中真正存储数据的地方,在NameNode的统一调度下进行数据块的创建、删除和复制。
与其他组件的交互:

与NameNode进行交互以报告数据块的位置和状态,并接收来自NameNode的指令。
响应客户端或其他节点的读写请求。

工作机制

DataNode启动时,每个datanode对本地磁盘进行扫描,将本DataNode上保存的block信息上给namenode,NameNode在接收到block信息以及该block所在的datanode信息等保存在内存中。

DataNode启动后向NameNode注册,通过后周期性(1小时)的向NameNode上报所有的块信息。我们重启NameNode 可以发现当数据上千万时重启花费的时间会比较久,因为NameNode 要将所有的Block 的信息加载到内存中。

通过向NameNode发送心跳保持与其联系(3秒一次),心跳返回结果带有NN的命令返回的命令为:如块的复制,删除某个数据块, 节点退役block 的移动.
如果10分钟没有收到DataNode的心跳,则认为其已经lost,并copy其上的block到其它DataNode
DN在其文件创建后三周进行验证其checkSum的值是否和文件创建时的checkSum值一致

DataNode文件结构

DataNode不需要进行格式化,它会在启动时自己创建存储目录 /export/software/hadoop-3.2.4/tmp/dfs/data 为DataNode directories,在etc/hadoop/core-site.xml中指定

DataNode中current目录下的其他文件都有blk_xxxx前缀,它有两种类型:

(1)blk_xxxxHDFS中的文件块本身,存储的是原始文件内容;

(2)块的元数据信息(.meta后缀标识)。一个文件块由存储的原始文件字节组成,元数据文件由一个包含版本和类型信息的头文件和一系列的区域校验和组成。DataNode会为每一个Block生成一个blk_xxx.meta文件,这个meta文件上是blk文件的校验文件。发送该meta数据信息发给namenode进行校验

in_user.lock当前目录已经被使用,实现门锁机制,代表DataNode可以独自使用该目录

心跳机制

DataNdde每间隔3 秒向NameNode传递当前的状态信息,NameNode每次接到信息后,就会返回要求DataNode所需要做的工作,如复制块数据到另一台机器,或删除某个数据块。如果超过10分钟30秒没有收到某个DataNode的心跳,则认为该节点不可用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Allen019

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

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

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

打赏作者

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

抵扣说明:

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

余额充值