理论教育 HDFS健壮性优化方案

HDFS健壮性优化方案

时间:2023-06-14 理论教育 版权反馈
【摘要】:在HDFS 中,为了保证NameNode 和各个DataNode 的联系,采用了心跳包机制。任何存储在宕机DataNode 上的数据将不再有效,HDFS 会将宕机DataNode 的文件块副本存放到其他的DataNode 上,以保证数据的有效性。

HDFS健壮性优化方案

HDFS 可以部署在廉价的计算机上,在设计的时候就考虑到即使在节点故障的情况下也要保证数据存储的可靠性。常见的三种出错情况是:文件读写错误、DataNode掉线和NameNode 故障,其中NameNode 故障可以通过HA 机制解决。

1.文件读写错误

HDFS 文件校验采用CRC-32 校验,默认长度为512 字节,校验和是4 字节,其存储开销小于1%。

为了保证数据的完整性,HDFS 在写入或读取文件时,都会进行数据校验。写入文件时,会计算这个文件每个文件块的校验和,并将校验和作为一个单独的隐藏文件保存在同一个HDFS 名字空间下,如:在写一个名为file1 的文件时,HDFS 的客户端以透明方式创建了一个隐藏的文件.file1.crc,在同一个文件夹下包含每个文件块的校验和。数据写时,会在管线上的最后一个DataNode 节点验证校验和。如果此节点检测到错误,客户端会收到一个校验异常。

客户端读取文件时,也会验证校验和,每读取一个文件块就将校验和与DataNode 节点上存储的校验和进行对比。每个DataNode 节点维护一个连续的校验和验证日志,因此它知道每个文件块最后验证的时间。客户端成功验证文件块之后,便会告诉DataNode 节点,后者随之更新日志。如果校验失败,客户端可以选择从其他DataNode 节点读取该文件块的副本。(www.daowen.com)

2. DataNode 掉线

在HDFS 运行过程中,DataNode 会因为断电、系统故障等原因而造成其掉线,为了保证HDFS 集群的稳定性,NameNode 需要知道集群中的哪些DataNode 正常或异常。

在HDFS 中,为了保证NameNode 和各个DataNode 的联系,采用了心跳包机制。每个DataNode 节点周期性地向NameNode 发送心跳信号,NameNode 通过心跳缺失判断DataNode 是否掉线(NameNode 十分钟内收不到DataNode 的心跳包,就认为其死亡),将掉线的DataNode 标记为宕机,并将其从机器列表删除,不会再将新的IO 请求发给它。任何存储在宕机DataNode 上的数据将不再有效,HDFS 会将宕机DataNode 的文件块副本存放到其他的DataNode 上,以保证数据的有效性。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈