我是靠谱客的博主 安静春天,最近开发中收集的这篇文章主要介绍大数据—Hadoop的HDFS数据完整性校验,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、HDFS数据完整性

       Hadoop提供两种校验

        1.校验和

          Hdfs会对写入的所有数据计算校验和,并在读取数据时验证校验和。元数据节点负责在验证收到的数据后,储存数据及其及其校验和。在收到客户端数据或复制其他datanode的数据时执行。正在写数据的客户端将数据及其校验和发送到一系列数据节点组成的管线,管线的最后一个数据节点负责验证校验和。客户端读取数据节点数据也会验证校验和,将它们与数据及节点中储存的校验和进行比较。每个数据节点都持久化一个用于验证的校验和日志。客户端成功验证一个数据块后,会告诉这个数据节点,数据节点由此更新日志。此外,由于hdfs储存着每个数据块的备份,它可以通过复制完好的数据备份来修复损坏的数据块来恢复数据。

        与校验和有关的类:①LocalFileSystem类。Hadoop的LocalFileSystem类是用来执行客户端的校验和验证。当写入一个名为filename的文件时文件系统客户端会在包含文件块校验和的同一目录内建立一个名为Filename.crc的隐藏文件。②ChecksumFileSystem类。LocalFileSystem类通过ChecksumFileSystem类来完成自己的任务FileSystem rawFs;FileSystem checkssummedFs=new ChecksumFileSystem(rawFS);可以通过CheckFileSystem的getRawFileSystem()方法获取源文件系统。当检测到错误时,CheckFileSystem类会调用reportCheckSumFailure()方法报告错误,然后LocalFileSystem将这个出错的文件和校验和移动到名为bad——files的文件夹内,管理员可以定期检查这个文件夹。

      2.DataBlockScanner

        数据节点后台有一个进程DataBlockScanner,定期验证存储在这个数据节点上的所有数据项,该项措施是为解决物理存储介质上的损坏。DataBlockScanner是作为数据节点上的一个后台线程工作的,跟着数据节点同时启动,由于对数据节点上的每一个数据块扫描一遍要消耗较多的系统资源,一次扫描周期的值一般以较大,这就带来另一个问题,就是在一个扫描周期内可能出现数据节点重启的情况,所以为了提高系统性能,避免数据节点在启动后对还没有过期的数据块又扫描一遍,DataBlockScanner在其内部使用了日志记录器来持久化保存每一个数据块上一次的扫描时间,这样数据节点可以在启动之后通过日志文件来恢复之前所有的数据块的有效时间。

                 

最后

以上就是安静春天为你收集整理的大数据—Hadoop的HDFS数据完整性校验的全部内容,希望文章能够帮你解决大数据—Hadoop的HDFS数据完整性校验所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部