赞
踩
用户希望储存和处理数据的时候,不会有任何损失或者损坏。
Hadoop提供两种校验
1校验和(常用循环冗余校验CRC-32)
2运行后台进程来检测数据块
校验和
1、写入数据节点验证
2、读取数据节点验证
3、恢复数据
4、Localfilesystem类
5、ChecksumfileSystem类
6、DatablockScanner
1、写入数据节点验证
Hdfs会对写入的所有数据计算校验和,并在读取数据时验证校验和。
元数据节点负责在验证收到的数据后,储存数据及其校验和。
在收到客户端数据或复制其他datanode的数据时执行。
正在写数据的客户端将数据及其校验和发送到一系列数据节点组成的管线,管线的最后一个数据节点负责验证校验和
2、读取数据节点验证
客户端读取数据节点数据也会验证校验和,将它们与数据节点中储存的校验和进行比较。
每个数据节点都持久化一个用于验证的校验和日志。
客户端成功验证一个数据块后,会告诉这个数据节点,数据节点由此更新日志。
3、恢复数据
由于hdfs储存着每个数据块的备份,它可以通过复制完好的数据备份来修复损坏的数据块来恢复数据。
4、Localfilesystem类
Hadoop的LocalFileSystem类是用来执行客户端的校验和验证。
当写入一个名为filename的文件时文件系统客户端会在包含文件块校验和的
同一目录内建立一个名为Filename.crc的隐藏文件。
5、ChecksumfileSystem类
LocalFileSystem类通过ChecksumFileSystem类来完成自己的任务
FileSystem rawFs;
FileSystem checksummedFs=new ChecksumFileSystem(rawFS);
可以通过CheckFileSystem的getRawFileSystem()方法获取源文件系统。
当检测到错误,CheckFileSystem类会调用reportCheckSumFailure()方法报告错误,
然后LocalFileSystem将这个出错的文件和校验和移到名为bad_files的文件夹内,
管理员可以定期检查这个文件夹。
6、DatablockScanner
数据节点后台有一个进程DataBlockScanner,定期验证储存在这个数据节点上的所有数据项,
该项措施是为解决物理储存媒介上的损坏。
DataBlockScanner是作为数据节点的一个后台线程工作的,跟着数据节点同时启动
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。