hadoop I/O笔记

来源:互联网 发布:与权志龙合照软件 编辑:程序博客网 时间:2024/05/23 11:50

1数据的完整性(data integrity)

1)一般在磁盘或者网络进行正确的读写操作的时候,是不会出现数据丢失和损坏的,但是当数据量大道hadoop不能够处理的时候,那么数据的损坏率还是非常高的。

2)在数据第一次引入数据的时候,计算校验和,在数据再次通过通道(channel)时再次产生校验和,若果新的校验和不匹配原始的校验和,那么,就认为数据以损坏,要注意的是校验和也有可能算坏,但是校验和的损坏率远远的小于data的。

2hdfs的数据完成性  data integrity in HDFS

hdfs 在会对数据读写的时候产生校验和 io.bytes.per.checksum 默认的大小是512bytes

datanode负责接收的数据的校验和存储,如果datanode检测到了数据错误的时候,会返回一个ChecksumException,这是一个IOExpection的子类。

当客户端从datanode读取数据的时候,也是要进行校验的,每一个datanode都会有一个记录校验和的log,所以他知道每一个block快最后一次的校验时间,当客户端在读取数据成功的时候会通知datanode,然后更新他的log,保存这些数据对检测磁盘是很重要的

不知在数据读取的时候会有数据的校验,其实在每一个datanode的后台都运行一个DataBlockScanner程序来定期检查datanode上的数据。

因为hdfs存数的是block的副本,所以当客户在读取到错误数据的时候会告诉namenode那个data的出现错误,他会从其他的datanode复制数据到这个datanode上,以此来实现数据的完整

如果我们在操作文件的时候不想进行文件校验,我们可以传递false 到FilesYstem的  setVerifyChecksum()的方法上,这样可以组织进行校验



0 0
原创粉丝点击