hadoop 数据完整性(数据的一致性)和CRC数据校验文件

提出问题

hadoop中的数据,可能会保存很久,保存一个月,一年,十年等。

数据保存这么久,物理存储介质由于中位衰减,会造成数据损坏,这对一个大文件来说,很容易导致一个块由于时间关系,硬盘错位,最终导致整个文件都是错误的

如果 DataNode 节点上的数据损坏了,但没有发现,继续读取,会造成严重错误,导致巨大损失

解决

Hadoop系统为了保证 数据的一致性会对文件生成相应的校验文件(.crc文件),并在读写的时候进行校验,确保数据的准确性

hadoop使用 crc 算法

原理

  • HDFS会对写入的所有数据计算校验和,并在读取数据时验证校验和
  • datanode负责在收到数据后储存该数据及其验证校验和
  • 客户端从datanode读取数据时也会验证校验和,与datanode中存储的校验和进行比较
  • 每个datanode均持久保存一个用于验证的校验和日志
  • 每个datanode也会在一个后台线程中运行一个DataBlockScanner,定期验证存储在这个datanode上的所有数据块

常见案例:同 api 下载的文件,同时会有 crc 文件,也就是校验和文件

CRC介绍

CRC(循环冗余校验)

参考

https://www.cnblogs.com/bovenson/p/5730773.html
https://blog.csdn.net/tianyeshiye/article/details/85293295


原文出处:https://www.malaoshi.top/show_1IX3ZvW3sAYJ.html