概述
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。
最后
以上就是热情火为你收集整理的Hadoop原理 之 数据完整性的全部内容,希望文章能够帮你解决Hadoop原理 之 数据完整性所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复