真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HDFS是怎么做文件管理和容錯的

這篇文章主要講解了“HDFS是怎么做文件管理和容錯的”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“HDFS是怎么做文件管理和容錯的”吧!

瀍河ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!


HDFS 文件管理

1、HDFS 的塊分布

        HDFS 會將數(shù)據(jù)文件切分成一個個小的數(shù)據(jù)塊進(jìn)行存儲,同時會將這些數(shù)據(jù)塊的副本保存多份,分別保存到不同的 DataNode 上。HDFS 中數(shù)據(jù)塊的副本數(shù)由 hdfs-site.xml文件中的dfs.replication屬性決定,配置屬性如下:

 dfs.replication 3

        Hadoop 默認(rèn)的副本數(shù)為3,并且在機(jī)架的存放上也有一定的策略。Hadoop 的默認(rèn)布局策略,即默認(rèn)的副本存放策略如下:

        (1)第 1 個副本存放在 HDFS 客戶端所在的節(jié)點上。

        (2)第 2 個副本存放在與第1個副本不同的機(jī)架上,并且是隨機(jī)選擇的節(jié)點。

        (3)第 3 個副本存放在與第2個副本相同的機(jī)架上,并且是不同的節(jié)點。

2、數(shù)據(jù)讀取

        HDFS 的數(shù)據(jù)讀取過程需要客戶端先訪問 NameNode,獲取元數(shù)據(jù)信息,然后到具體的 DataNode 上讀取數(shù)據(jù),如下圖所示:

HDFS是怎么做文件管理和容錯的
        (1)客戶端向NameNode發(fā)起請求,讀取元數(shù)據(jù)信息。NameNode上存儲著整個HDFS集群的元數(shù)據(jù)信息,這些元數(shù)據(jù)信息包括文件名,所有者,所在組,權(quán)限,數(shù)據(jù)塊和 DataNode列表。

        這個過程中還要對客戶端的身份信息進(jìn)行驗證,同時檢測是否存在要讀取的文件,并且需要驗證客戶端的身份是否具有訪問權(quán)限

        (2)NameNode 將相關(guān)的元數(shù)據(jù)信息返回給客戶端。

        (3)客戶端到指定的 DataNode 上讀取相應(yīng)的數(shù)據(jù)塊

        (4)DataNode 返回相應(yīng)的數(shù)據(jù)塊信息。

        第(3)和(4)步會持續(xù)進(jìn)行,一直到文件的所有數(shù)據(jù)塊都讀取完畢或者 HDFS 客戶端主動關(guān)閉了文件流為止。

3、數(shù)據(jù)寫入

        HDFS 中的數(shù)據(jù)寫入過程同樣需要客戶端先訪問 NameNode,獲取元數(shù)據(jù)信息,然后到具體的 DataNode 上寫入數(shù)據(jù),如圖所示

HDFS是怎么做文件管理和容錯的

        以下是具體步驟:

        (1)客戶端請求 NameNode 獲取元數(shù)據(jù)信息。這個過程中,NameNode 要對客戶端的省份信息進(jìn)行驗證,同時需要驗證客戶端的身份是否具有寫權(quán)限。

        (2)NameNode 返回相應(yīng)的元數(shù)據(jù)信息給客戶端

        (3)客戶端向第一個 DataNode 寫數(shù)據(jù)。

        (4)第 1 個 DataNode 向第 2 個 DataNode 寫數(shù)據(jù)

        (5)第 2 個 DataNode 向第 3 個 DataNode 寫數(shù)據(jù)。

        (6)第 3 個 DataNode 向第 2 個 DataNode 返回確認(rèn)結(jié)果信息。

        (7)第 2 個 DataNode 向第 1 個 DataNode 返回確認(rèn)結(jié)果信息

        (8)第 1 個 DataNode 向客戶端返回確認(rèn)結(jié)果信息。

        其中,第(4)步和第(5)步是異步執(zhí)行的,當(dāng) HDFS 中的多個 DataNode 發(fā)生故障或者發(fā)生錯誤時,只要正確寫入了滿足最少數(shù)目要求的數(shù)據(jù)副本數(shù),HDFS客戶端就可以從數(shù)據(jù)塊的副本中恢復(fù)數(shù)據(jù)。

        最少數(shù)目要求的數(shù)據(jù)副本數(shù)由hdfs-site.xml文件中的dfs.namenode.replication.min屬性決定,配置屬性如下:

 dfs.namenode.replication.min 1

        最少數(shù)目要求的數(shù)據(jù)副本數(shù)默認(rèn)為1,即只要正確寫入了數(shù)據(jù)的一個副本,客戶端就可以從數(shù)據(jù)副本中恢復(fù)數(shù)據(jù)。

4、數(shù)據(jù)完整性

        通常,在校驗數(shù)據(jù)是否損壞時可以用如下方式。

        (1)當(dāng)數(shù)據(jù)第一次引入時,計算校驗和

        (2)當(dāng)數(shù)據(jù)經(jīng)過一系列的傳輸或者復(fù)制時,再次計算校驗和。

        (3)對比第(1)和第(2)步的校驗和是否一致,如果兩次數(shù)據(jù)的校驗和不一致,則證明數(shù)據(jù)已經(jīng)被破壞。

注意:這種使用校驗和來驗證數(shù)據(jù)的技術(shù)只能檢測數(shù)據(jù)是否被損壞,并不能修復(fù)數(shù)據(jù)。

        HDFS中校驗數(shù)據(jù)是否損壞使用的也是校驗和技術(shù),無論是進(jìn)行數(shù)據(jù)的寫入還是進(jìn)行數(shù)據(jù)的讀取,都會驗證數(shù)據(jù)的校驗和。校驗和的字節(jié)數(shù)由core-site.xml文件中的io.bytes.per.checksum屬性指定,默認(rèn)的字節(jié)長度為 512 B,具體配置如下:

 io.bytes.per.checksum 512

        當(dāng) HDFS 寫數(shù)據(jù)時,HDFS 客戶端會將要寫入的數(shù)據(jù)及對應(yīng)數(shù)據(jù)的校驗和發(fā)送到 DataNode 組成的復(fù)制管道中,其中最后一個 DataNode 負(fù)責(zé)驗證數(shù)據(jù)的校驗和是否一致。如果檢測到校驗和與 HDFS 客戶端發(fā)送的校驗和不一致,則 HDFS 客戶端 會收到校驗和異常的信息,可以在程序中捕獲到這個異常,進(jìn)行相應(yīng)的處理,如重新寫入數(shù)據(jù)或者用其他方式處理

        HDFS 讀數(shù)據(jù)時也會驗證校驗和,此時會將它們與 DataNode 中存儲的校驗和進(jìn)行比較。如果其與 DataNode 中存儲的校驗和不一致,則說明數(shù)據(jù)已經(jīng)損壞,需要重新從其他 DataNode 讀取數(shù)據(jù)。其中,每個 DataNode 都會保存一個校驗和日志,客戶端成功驗證一個數(shù)據(jù)塊之后,DataNode會更新該校驗和日志。

        除此之外,每個 DataNode 也會在后臺運行一個掃描器(DataBlockScanner),定期驗證存儲在這個 DataNode 上的所有數(shù)據(jù)塊。

        由于 HDFS提供的數(shù)據(jù)塊副本機(jī)制,當(dāng)一個數(shù)據(jù)塊損壞時,HDFS 能夠自動復(fù)制其他完好的數(shù)據(jù)塊來修復(fù)損壞的數(shù)據(jù)塊,得到一個新的,完好的數(shù)據(jù)塊,以達(dá)到系統(tǒng)設(shè)置的副本數(shù)要求,因此在某些數(shù)據(jù)塊出現(xiàn)損壞時,保證了數(shù)據(jù)的完整性。

5、 HDFS 容錯

        HDFS 的容錯機(jī)制大體上可以分為兩個方面:文件系統(tǒng)的容錯和 Hadoop 自身的容錯。

5.1 文件系統(tǒng)的容錯

        文件系統(tǒng)的容錯可以通過 NameNode 高可用、SecondaryNameNode 機(jī)制、數(shù)據(jù)塊副本機(jī)制和心跳機(jī)制來實現(xiàn)。

注意:當(dāng)以本地模式或者偽集群模式部署 Hadoop 時,會存在 SeconddayNameNode;當(dāng)以集群模式部署 Hadoop 時,如果配置了 NameNode 的 HA 機(jī)制,則不會存在 SecondaryNameNode,此時會存在備 NameNode。

        在這里重點說下集群模式下 HDFS 的容錯,有關(guān) SecondaryNameNode 機(jī)制可參見上一篇文章《前方高能 | HDFS 的架構(gòu),你吃透了嗎?》的說明:

        HDFS 的容錯機(jī)制如圖所示:

HDFS是怎么做文件管理和容錯的
        具體的流程如下:

        (1)備 NameNode 實時備份主 NameNode 上的元數(shù)據(jù)信息,一旦主 NameNode 發(fā)生故障不可用,則備 NameNode 迅速接管主 NameNode 的工作。

        (2)客戶端向 NameNode 讀取元數(shù)據(jù)信息。

        (3)NameNode 向客戶端返回元數(shù)據(jù)信息。

        (4)客戶端向 DataNode 讀取/寫入 數(shù)據(jù),此時會分為讀取數(shù)據(jù)和寫入數(shù)據(jù)兩種情況。

        ① 讀取數(shù)據(jù):HDFS 會檢測文件塊的完整性,確認(rèn)文件塊的檢驗和是否一致,如果不一致,則從其他的 DataNode 上獲取相應(yīng)的副本。

        ② 寫入數(shù)據(jù):HDFS 會檢測文件塊的完整性,同時記錄新創(chuàng)建的文件的所有文件塊的校驗和。

        (5) DataNode 會定期向 NameNode 發(fā)送心跳信息,將自身節(jié)點的狀態(tài)告知 NameNode;NameNode 會將 DataNode 需要執(zhí)行的命令放入心跳信息的返回結(jié)果中,返回給 DataNode 執(zhí)行。

        當(dāng) DataNode 發(fā)生故障沒有正常發(fā)送心跳信息時,NameNode 會檢測文件塊的副本數(shù)是否小于 系統(tǒng)設(shè)置值,如果小于設(shè)置值,則自動復(fù)制新的副本并分發(fā)到其他的 DataNode 上。

        (6)集群中有數(shù)據(jù)關(guān)聯(lián)的 DataNode 之間復(fù)制數(shù)據(jù)副本。

        當(dāng)集群中的 DataNode 發(fā)生故障而失效,或者在集群中添加新的 DataNode 時,可能會導(dǎo)致數(shù)據(jù)分布不均勻當(dāng)某個 DataNode 上的空閑空間資源大于系統(tǒng)設(shè)置的臨界值時,HDFS 就會從 其他的 DataNode 上將數(shù)據(jù)遷移過來。相對地,如果某個 DataNode 上的資源出現(xiàn)超負(fù)荷運載,HDFS 就會根據(jù)一定的規(guī)則尋找有空閑資源的 DataNode,將數(shù)據(jù)遷移過去

        還有一種從側(cè)面說明 HDFS 支持容錯的機(jī)制,即當(dāng)從 HDFS 中刪除數(shù)據(jù)時,數(shù)據(jù)并不是馬上就會從 HDFS 中被刪除,而是會將這些數(shù)據(jù)放到“回收站”目錄中,隨時可以恢復(fù),直到超過了一定的時間才會真正刪除這些數(shù)據(jù)。

5.2 Hadoop自身的容錯

        Hadoop 自身的容錯理解起來比較簡單,當(dāng)升級 Hadoop 系統(tǒng)時,如果出現(xiàn) Hadoop 版本不兼容的問題,可以通過回滾 Hadoop 版本的方式來實現(xiàn)自身的容錯。      

感謝各位的閱讀,以上就是“HDFS是怎么做文件管理和容錯的”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對HDFS是怎么做文件管理和容錯的這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


文章題目:HDFS是怎么做文件管理和容錯的
轉(zhuǎn)載注明:http://weahome.cn/article/pigcgc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部