HDFS如何保证数据的完整性呢?

HDFS如何保证数据的完整性呢?

一、客户端向HDFS写数据的时候

一、假设客户端发送2KB的数据
二、客户端会以字节的方式往datanode发送,因此客户端会计算发送的数据有多少个,而这个单位就是chunk,它通常状况是512字节,也就是说,每512字节就称为一个chunk。
三、客户端能够计算出checksum值,checksum = 2KB/512B=4
四、而后datanode接收客户端发送来的数据,每接收512B的数据,就让checksum的值+1
五、最后比较客户端和datanade的checksum值

注意:客户端读取数据也是一样的道理node

二、DataNode读取block块的时候

一、block建立的时候会有一个初始的checksum值
二、DataNode每隔一段时间就会计算block新的checksum值,看block块是否已经丢失
三、若是checksum和以前同样,则没丢失,和以前比出现了不同,那就说明数据丢失(或者异常)
四、当发生异常的时候,DateNode会报告给NameNode,NameNode会发送一条命令,清除这个异常块,而后找到这个块对应的副本,将完整的副本复制给其余的DataNode节点
相关文章
相关标签/搜索