hadoop之数据完整性与数据损坏处理

数据损坏(corruption)处理与数据完整性

由于每个DataNode操作磁盘或网络I/O操作可能会对正在读写的数据处理不慎而出现错误,hadoop提供了他的
数据检测方式:
 
     主要在于两个方面:一是校验和的方法实现;二是DataBlockScanner数据块检测程序;

         一:校验和
          在系统启动时计算数据的校验和,在通道传输过程中,如果新生成的校验和不完全匹配原始的校

          验和,那么数据就会被认为是被损坏的。

          1:DataNode在读取Block时候计算checksum;

          2:针对数据的每个io.bytes.per.checksum字节(这个字节是怎么来的?!),都会创建一个单独的校

               验和。默认值为512字节;

          3:如果计算后的checksum,与block创建时值不一样,说明该block已经损坏。

          4:client读取其它DN上的block;NN标记该块已经损坏,然后复制block达到预期设置的文件备份数。

          5:每个datanode都维护着一个连续的校验和和验证日志,里面有着每个block的最后验证的时间。
         数据端成功验证block之后,便会告诉datanode,datanode随之更新日志。
 

         二:数据块检测程序(DataBlockScanner)

          每个datanode会在后台线程运行一个DataBlockScanner定期验证存储在datanode上的所有block。这是

          为了防止物理存储介质出现衰减。

          默认情况下DN在其文件创建后三周验证其checksum

 

posted on 2013-04-23 09:07  北京_飞狐  阅读(541)  评论(0编辑  收藏  举报