HDFS数据完整性node
用户但愿存储和处理数据的时候,不会有任何损失或者损坏。算法
Hadoop提供两种校验oop
一、校验和 经常使用的错误检测码是:CRC-32(循环冗余校验)使用CRC-32算法任何大小的数据输入均计算获得一个32位的整数校验码。日志
二、运行后台进程来检测数据块进程
校验和get
一、写入数据节点验证后台
Hdfs会对写入的全部数据计算校验和,并在读取数据时验证校验和。元数据节点负责在验证收到的数据后,存储数据及其校验和。在收到客户端数据或复制其余datanode的数据时执行。正在写数据的客户端将数据及其校验和发送到一系列数据节点组成的管道,管线的最后一个数据节点负责验证校验和。file
二、读取数据节点验证循环
客户端读取数据节点数据也会验证校验和,将他们与数据节点种存储的校验和进行比较。每一个数据节点都持久化一个用于验证的校验和日志。客户端成功验证一个数据块后,会告诉这个数据节点,数据节点由此更新日志。方法
三、恢复数据
因为hdfs存储着每一个数据块的备份,它能够经过复制无缺的数据备份来修复损坏的数据块来恢复数据。
四、Localfilesystem类
用来执行客户端的校验和验证。当写入一个名为filename的文件时文件系统客户端会在包含文件块校验和的同一目录内创建一个名为Filename.cc的隐藏文件。
五、Checksumfilesystem类
LocalFileSystem类经过ChecksumFileSystem类来完成本身的任务FileSystem rawFs;FileSystem checksummedFs=new ChecksumFileSystem(rawFS);能够经过CheckFileSystem的getRawFileSystem()方法获取源文件系统。当检测到错误,CheckFileSystem类会调用reportCheckSumFailure()方法报告错误,而后LocalFileSystem将这个出错的文件和校验和移到名为bad_files的文件夹内,管理员能够按期检查这个文件夹。