HDFS如何保证数据的完整性

总的来说,HDFS 会对写入的数据计算校验和,并在读取数据时验证校验和。
具体来说,datanode 负责收到数据后存储该数据及其校验和。datanode 的数据来源可分为两种:其一为是从客户端收到的数据,其二为从其他 datanode 复制来的数据。还有一种情况,客户端将数据及其校验和发送到由一系列 datanode 组成的管线,管线中最后一个 datanode 负责验证校验和。
每个 datanode 也会在一个后台进程中运行一个 DataBlockScanner ,从而定期验证存储在这个 datanode 的所有数据。

如何修复损坏的datanode?

客户端在读取数据块时,如果检测到错误首先向 namenode 报告正在尝试读取的这个 datanode 。namenode 会将这个数据块标记为已损坏,对这个数据块的请求会被 namenode 安排到另一个复本datanode上。之后,它安排这个数据块的另一个复本复制到另一个 datanode 上,如此,数据块的复本因子又回到期望水平。此后,已损坏的数据块复本会被删除。

猜你喜欢

转载自blog.csdn.net/weixin_41907511/article/details/84728270