Hadoop原理 之 数据完整性

    Hadoop的数据完整性,包括两个方面:一是,数据传输的完整性,也就是读写数据的完整性;二是,数据存储的完整性。
    受网络不稳定、硬件损坏等因素,在数据传输和数据存储上,难免会出现数据丢失或脏数据,数据传输的量越大,出现错误的概率就越高。hadoop提供了一种“校验和”的机制来检测数据的完整性。
   “校验和”的原理是:Hadoop在创建新文件时(也就是说,上传数据到hdfs上时),hadoop会为每一个固定长度的数据(一个个数据包)执行一次“校验和”,“校验和”的值和数据一起保存起来。数据的完整性检测,都是通过“校验和”的比较来完成的。
    1、数据传输过程的数据完整性保障:
    DataNode在存储客户端上传的数据之前,会先检测数据的“校验和”,没有问题才写入;同样,客户端从DataNode读取数据时也会检测数据的“校验和”,没有问题才写入本地文件系统。
    2、存储的block的完整性保障:
    DataNode运行着一个后台进程(DataBlockScanner),定期对存储在其上面的block进行检测“检验和”,然后将检测结果向NameNode报告。
    小结:NameNode会收到来自“客户端”、DataNode的“检验和”信息,根据这两个信息,综合来维护文件的块存储及向客户端提供块读取服务。


    Hadoop处理损坏数据的机制:
         1)、客户端在发现坏数据后,会把坏的block和block所在的datanode报告给namenode,然后,删除掉坏的block,再跳过该datanode,重新读取另外的datanode上的block;
        2)、NameNode会把这个block标记为“已损坏”,标记为“已损坏”namenode就不会为客户端指向这个block,也不会用这个block去复制到其他datanode;
        3)、NameNode会把一个好的block复制到另一个datanode上;
        4)、NameNode删除掉坏的block。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值