日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HDFS的特性以及如何保证数据的一致性

發(fā)布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDFS的特性以及如何保证数据的一致性 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

鏈接:https://www.nowcoder.com/questionTerminal/962225fa78e74ba7b1d7d7792407acc6?orderByHotValue=1&mutiTagIds=629&page=1&onlyReference=false
?

主要有以下6點:

1.安全模式:

HDFS剛啟動時,namenode進(jìn)入安全模式,處于安全模式的namenode不能做任何的文件***作,甚至內(nèi)部的副本創(chuàng)建也是不允許的,namenode此時需要和各個datanode通信,獲得datanode存儲的數(shù)據(jù)塊信息,并對數(shù)據(jù)塊信息進(jìn)行檢查,只有通過了namenode的檢查,一個數(shù)據(jù)塊才被認(rèn)為是安全的。當(dāng)認(rèn)為安全的數(shù)據(jù)塊所占比例達(dá)到了某個閾值,namenode才會啟動。

2.SecondaryNamenode:

Hadoop中使用SecondaryNameNode來備份namenode的元數(shù)據(jù),以便在namenode失效時能從SecondaryNameNode恢復(fù)出namenode上的元數(shù)據(jù)。SecondaryNameNode充當(dāng)namenode的一個副本,它本身并不處理任何請求,因為處理這些請求都是NameNode的責(zé)任。

namenode中保存了整個文件系統(tǒng)的元數(shù)據(jù),而SecondaryNameNode的作用就是周期性(周期長短也可配)保存NameNode的元數(shù)據(jù)。這些源數(shù)據(jù)中包括文件鏡像數(shù)據(jù)FSImage和編輯日志EditLog。FSImage相當(dāng)于HDFS的檢查點,namenode啟動時候會讀取FSImage的內(nèi)容到內(nèi)存,并將其與EditLog日志中的所有修改信息合并生成新的FSImage;在namenode

運行過程中,所有關(guān)于HDFS的修改都將寫入EditLog。這樣,如果namenode失效,可以通過SecondaryNameNode中保存的FSImage和EditLog數(shù)據(jù)恢復(fù)出namenode最近的狀態(tài),盡量減少損失。

3.心跳機(jī)制和副本重新創(chuàng)建

為了保證namenode和各個datanode的聯(lián)系,HDFS采用了心跳機(jī)制。位于整個HDFS核心的namenode,通過周期性的活動來檢查datanode的活性,像跳動的心臟一樣。Namenode周期性向各個datanode發(fā)送心跳包,而收到心跳包的datanode要進(jìn)行回復(fù)。因為心跳包是定時發(fā)送的,所以namenode就把要執(zhí)行的命令也通過心跳包發(fā)送給datanode,而datanode收到心跳包,一方面回復(fù)namenode,另一方面就開始了用戶或者應(yīng)用的數(shù)據(jù)傳輸。

如果偵測到datanode失效,namenode之前保存在這個datanode上的數(shù)據(jù)就變成不可用數(shù)據(jù)。如果有的副本存儲在失效的datanode上,則需要重新創(chuàng)建這個副本,放到另外可用的地方。

4.數(shù)據(jù)一致性:

??一般來講,datanode與應(yīng)用交互的大部分情況都是通過網(wǎng)絡(luò)進(jìn)行的,而網(wǎng)絡(luò)數(shù)據(jù)傳輸帶來的一大問題就是數(shù)據(jù)是否原樣到達(dá)。為了保證數(shù)據(jù)的一致性,HDFS采用了數(shù)據(jù)校驗和(checkSum)機(jī)制。創(chuàng)建文件時,HDFS會為這個文件生成一個校驗和,校驗和文件和文件本身保存在同一空間中。傳輸數(shù)據(jù)時會將數(shù)據(jù)與校驗數(shù)據(jù)和一同傳輸,應(yīng)用收到數(shù)據(jù)后可以進(jìn)行校驗,如果兩個校驗的結(jié)果不同,則文件肯定出錯了,這個數(shù)據(jù)塊就變成無效的。如果判定無效,則需要從其他datanode上讀取副本。

5.租約:

??在linux中,為了防止多個進(jìn)程向同一個文件寫數(shù)據(jù)的情況,采用了文件加鎖的機(jī)制。而在HDFS中,同樣需要一個機(jī)制來防止同一個文件被多個人寫入數(shù)據(jù)。這種機(jī)制就是租約(Lease),每當(dāng)寫入數(shù)據(jù)之前,一個客戶端必須獲得namenode發(fā)放的一個租約。Namenode保證同一個文件只發(fā)放一個允許寫的租約。那么就可以有效防止多人寫入的情況。

6.回滾:

??HDFS安裝或升級時,會將當(dāng)前的版本信息保存起來,如果升級一段時間內(nèi)運行正常,可以認(rèn)為這次升級沒有問題,重新保存版本信息,否則,根據(jù)保存的舊版本信息,將HDFS恢復(fù)至之前的版本。

總結(jié)

以上是生活随笔為你收集整理的HDFS的特性以及如何保证数据的一致性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。