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節點
相關文章
相關標籤/搜索