HOME 首頁
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運營
CASE 服務(wù)案例
NEWS 熱點資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    hdfs分布式原理(hdfs分布式存儲數(shù)據(jù)的原理)

    發(fā)布時間:2023-04-08 03:09:24     稿源: 創(chuàng)意嶺    閱讀: 55        

    大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于hdfs分布式原理的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。

    開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端

    官網(wǎng):https://ai.de1919.com

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008

    本文目錄:

    hdfs分布式原理(hdfs分布式存儲數(shù)據(jù)的原理)

    一、HDFS 為何在大數(shù)據(jù)領(lǐng)域經(jīng)久不衰?

    大數(shù)據(jù)中最寶貴、最難以代替的就是數(shù)據(jù),一切都圍繞數(shù)據(jù)。

    HDFS是最早的大數(shù)據(jù)存儲系統(tǒng),存儲著寶貴的數(shù)據(jù)資產(chǎn),各種新算法、框架要想得到廣泛使用,必須支持HDFS,才能獲取已存儲在里面的數(shù)據(jù)。所以大數(shù)據(jù)技術(shù)越發(fā)展,新技術(shù)越多,HDFS得到的支持越多,越離不開HDFS。 HDFS也許不是最好的大數(shù)據(jù)存儲技術(shù),但依然是最重要的大數(shù)據(jù)存儲技術(shù)

    HDFS是如何實現(xiàn)大數(shù)據(jù)高速、可靠的存儲和訪問的呢?

    Hadoop分布式文件系統(tǒng)HDFS的設(shè)計目標(biāo)是管理數(shù)以千計的服務(wù)器、數(shù)以萬計的磁盤,將大規(guī)模的服務(wù)器計算資源當(dāng)作一個單一存儲系統(tǒng)進(jìn)行管理,對應(yīng)用程序提供數(shù)以PB計的存儲容量,讓應(yīng)用程序像使用普通文件系統(tǒng)一樣存儲大規(guī)模的文件數(shù)據(jù)。

    文件以多副本的方式進(jìn)行存儲:

    缺點:

    優(yōu)點:

    HDFS的大容量存儲和高速訪問的實現(xiàn)。

    RAID將數(shù)據(jù)分片后,在多塊磁盤上并發(fā)進(jìn)行讀寫訪問,提高了存儲容量、加快了訪問速度,并通過數(shù)據(jù)冗余校驗提高了數(shù)據(jù)可靠性,即使某塊磁盤損壞也不會丟數(shù)據(jù)。將RAID的設(shè)計理念擴(kuò)大到整個分布式服務(wù)器集群,就產(chǎn)生了分布式文件系統(tǒng),這便是Hadoop分布式文件系統(tǒng)的核心原理。

    和RAID在多個磁盤上進(jìn)行文件存儲及并行讀寫的思路一樣,HDFS是在一個大規(guī)模分布式服務(wù)器集群上,對數(shù)據(jù)分片后進(jìn)行并行讀寫及冗余存儲。因為HDFS可部署在一個大的服務(wù)器集群,集群中所有服務(wù)器的磁盤都可供HDFS使用,所以整個HDFS的存儲空間可以達(dá)到PB級。

    HDFS是主從架構(gòu)。一個HDFS集群會有一個NameNode(命名節(jié)點,簡稱NN),作為主服務(wù)器(master server)。

    HDFS公開了文件系統(tǒng)名稱空間,允許用戶將數(shù)據(jù)存儲在文件中,就好比我們平時使用os中的文件系統(tǒng)一樣,用戶無需關(guān)心底層是如何存儲數(shù)據(jù)的。 在底層,一個文件會被分成一或多個數(shù)據(jù)塊,這些數(shù)據(jù)庫塊會被存儲在一組數(shù)據(jù)節(jié)點中。在CDH中數(shù)據(jù)塊的默認(rèn)128M。 在NameNode,可執(zhí)行文件系統(tǒng)的命名空間操作,如打開,關(guān)閉,重命名文件等。這也決定了數(shù)據(jù)塊到數(shù)據(jù)節(jié)點的映射。

    HDFS被設(shè)計為可運行在普通的廉價機(jī)器上,而這些機(jī)器通常運行著一個Linux操作系統(tǒng)。一個典型的HDFS集群部署會有一個專門的機(jī)器只能運行 NameNode ,而其他集群中的機(jī)器各自運行一個 DataNode 實例。雖然一臺機(jī)器上也可以運行多個節(jié)點,但不推薦。

    負(fù)責(zé)文件數(shù)據(jù)的存儲和讀寫操作,HDFS將文件數(shù)據(jù)分割成若干數(shù)據(jù)塊(Block),每個DataNode存儲一部分Block,這樣文件就分布存儲在整個HDFS服務(wù)器集群中。

    應(yīng)用程序客戶端(Client)可并行訪問這些Block,從而使得HDFS可以在服務(wù)器集群規(guī)模上實現(xiàn)數(shù)據(jù)并行訪問,極大提高訪問速度。

    HDFS集群的DataNode服務(wù)器會有很多臺,一般在幾百臺到幾千臺,每臺服務(wù)器配有數(shù)塊磁盤,整個集群的存儲容量大概在幾PB~數(shù)百PB。

    負(fù)責(zé)整個分布式文件系統(tǒng)的元數(shù)據(jù)(MetaData)管理,即文件路徑名、數(shù)據(jù)塊的ID以及存儲位置等信息,類似os中的文件分配表(FAT)。

    HDFS為保證數(shù)據(jù)高可用,會將一個Block復(fù)制為多份(默認(rèn)3份),并將多份相同的Block存儲在不同服務(wù)器,甚至不同機(jī)架。當(dāng)有磁盤損壞或某個DataNode服務(wù)器宕機(jī),甚至某個交換機(jī)宕機(jī),導(dǎo)致其存儲的數(shù)據(jù)塊不能訪問時,客戶端會查找其備份Block訪問。

    HDFS中,一個文件會被拆分為一個或多個數(shù)據(jù)塊。默認(rèn)每個數(shù)據(jù)塊有三個副本,每個副本都存放在不同機(jī)器,而且每一個副本都有自己唯一的編號:

    文件/users/sameerp/data/part-0的復(fù)制備份數(shù)設(shè)為2,存儲的BlockID分別為1、3:

    上述任一臺服務(wù)器宕機(jī)后,每個數(shù)據(jù)塊都至少還有一個備份存在,不會影響對文件/users/sameerp/data/part-0的訪問。

    和RAID一樣,數(shù)據(jù)分成若干Block后,存儲到不同服務(wù)器,實現(xiàn)數(shù)據(jù)大容量存儲,并且不同分片的數(shù)據(jù)能并行進(jìn)行讀/寫操作,實現(xiàn)數(shù)據(jù)的高速訪問。

    副本存放:NameNode節(jié)點選擇一個DataNode節(jié)點去存儲block副本的過程,該過程的策略是在可靠性和讀寫帶寬間權(quán)衡。

    《Hadoop權(quán)威指南》中的默認(rèn)方式:

    Google大數(shù)據(jù)“三駕馬車”的第一駕是GFS(Google 文件系統(tǒng)),而Hadoop的第一個產(chǎn)品是HDFS,分布式文件存儲是分布式計算的基礎(chǔ)。

    這些年來,各種計算框架、各種算法、各種應(yīng)用場景不斷推陳出新,但大數(shù)據(jù)存儲的王者依然是HDFS。

    磁盤介質(zhì)在存儲過程中受環(huán)境或者老化影響,其存儲的數(shù)據(jù)可能會出現(xiàn)錯亂。

    HDFS對存儲在DataNode上的數(shù)據(jù)塊,計算并存儲校驗和(CheckSum)。在讀數(shù)據(jù)時,重新計算讀取出來的數(shù)據(jù)的校驗和,校驗不正確就拋異常,應(yīng)用程序捕獲異常后就到其他DataNode上讀取備份數(shù)據(jù)。

    DataNode監(jiān)測到本機(jī)的某塊磁盤損壞,就將該塊磁盤上存儲的所有BlockID報告給NameNode,NameNode檢查這些數(shù)據(jù)塊還在哪些DataNode上有備份,通知相應(yīng)的DataNode服務(wù)器將對應(yīng)的數(shù)據(jù)塊復(fù)制到其他服務(wù)器上,以保證數(shù)據(jù)塊的備份數(shù)滿足要求。

    DataNode會通過心跳和NameNode保持通信,如果DataNode超時未發(fā)送心跳,NameNode就會認(rèn)為這個DataNode已經(jīng)宕機(jī)失效,立即查找這個DataNode上存儲的數(shù)據(jù)塊有哪些,以及這些數(shù)據(jù)塊還存儲在哪些服務(wù)器上,隨后通知這些服務(wù)器再復(fù)制一份數(shù)據(jù)塊到其他服務(wù)器上,保證HDFS存儲的數(shù)據(jù)塊備份數(shù)符合用戶設(shè)置的數(shù)目,即使再出現(xiàn)服務(wù)器宕機(jī),也不會丟失數(shù)據(jù)。

    NameNode是整個HDFS的核心,記錄著HDFS文件分配表信息,所有的文件路徑和數(shù)據(jù)塊存儲信息都保存在NameNode,如果NameNode故障,整個HDFS系統(tǒng)集群都無法使用;如果NameNode上記錄的數(shù)據(jù)丟失,整個集群所有DataNode存儲的數(shù)據(jù)也就沒用了。

    所以,NameNode高可用容錯能力非常重要。NameNode采用主從熱備的方式提供高可用服務(wù):

    集群部署兩臺NameNode服務(wù)器:

    兩臺服務(wù)器通過Zk選舉,主要是通過爭奪znode鎖資源,決定誰是主服務(wù)器。而DataNode則會向兩個NameNode同時發(fā)送心跳數(shù)據(jù),但是只有主NameNode才能向DataNode返回控制信息。

    正常運行期,主從NameNode之間通過一個共享存儲系統(tǒng)shared edits來同步文件系統(tǒng)的元數(shù)據(jù)信息。當(dāng)主NameNode服務(wù)器宕機(jī),從NameNode會通過ZooKeeper升級成為主服務(wù)器,并保證HDFS集群的元數(shù)據(jù)信息,也就是文件分配表信息完整一致。

    軟件系統(tǒng),性能差點,用戶也許可接受;使用體驗差,也許也能忍受。但若可用性差,經(jīng)常出故障不可用,就麻煩了;如果出現(xiàn)重要數(shù)據(jù)丟失,那開發(fā)攤上大事。

    而分布式系統(tǒng)可能出故障地方又非常多,內(nèi)存、CPU、主板、磁盤會損壞,服務(wù)器會宕機(jī),網(wǎng)絡(luò)會中斷,機(jī)房會停電,所有這些都可能會引起軟件系統(tǒng)的不可用,甚至數(shù)據(jù)永久丟失。

    所以在設(shè)計分布式系統(tǒng)的時候,軟件工程師一定要繃緊可用性這根弦,思考在各種可能的故障情況下,如何保證整個軟件系統(tǒng)依然是可用的。

    ## 6 保證系統(tǒng)可用性的策略

    任何程序、任何數(shù)據(jù),都至少要有一個備份,也就是說程序至少要部署到兩臺服務(wù)器,數(shù)據(jù)至少要備份到另一臺服務(wù)器上。此外,稍有規(guī)模的互聯(lián)網(wǎng)企業(yè)都會建設(shè)多個數(shù)據(jù)中心,數(shù)據(jù)中心之間互相進(jìn)行備份,用戶請求可能會被分發(fā)到任何一個數(shù)據(jù)中心,即所謂的異地多活,在遭遇地域性的重大故障和自然災(zāi)害的時候,依然保證應(yīng)用的高可用。

    當(dāng)要訪問的程序或者數(shù)據(jù)無法訪問時,需要將訪問請求轉(zhuǎn)移到備份的程序或者數(shù)據(jù)所在的服務(wù)器上,這也就是 失效轉(zhuǎn)移 。失效轉(zhuǎn)移你應(yīng)該注意的是失效的鑒定,像NameNode這樣主從服務(wù)器管理同一份數(shù)據(jù)的場景,如果從服務(wù)器錯誤地以為主服務(wù)器宕機(jī)而接管集群管理,會出現(xiàn)主從服務(wù)器一起對DataNode發(fā)送指令,進(jìn)而導(dǎo)致集群混亂,也就是所謂的“腦裂”。這也是這類場景選舉主服務(wù)器時,引入ZooKeeper的原因。ZooKeeper的工作原理,我將會在后面專門分析。

    當(dāng)大量的用戶請求或者數(shù)據(jù)處理請求到達(dá)的時候,由于計算資源有限,可能無法處理如此大量的請求,進(jìn)而導(dǎo)致資源耗盡,系統(tǒng)崩潰。這種情況下,可以拒絕部分請求,即進(jìn)行 限流 ;也可以關(guān)閉部分功能,降低資源消耗,即進(jìn)行 降級 。限流是互聯(lián)網(wǎng)應(yīng)用的常備功能,因為超出負(fù)載能力的訪問流量在何時會突然到來,你根本無法預(yù)料,所以必須提前做好準(zhǔn)備,當(dāng)遇到突發(fā)高峰流量時,就可以立即啟動限流。而降級通常是為可預(yù)知的場景準(zhǔn)備的,比如電商的“雙十一”促銷,為了保障促銷活動期間應(yīng)用的核心功能能夠正常運行,比如下單功能,可以對系統(tǒng)進(jìn)行降級處理,關(guān)閉部分非重要功能,比如商品評價功能。

    HDFS是如何通過大規(guī)模分布式服務(wù)器集群實現(xiàn)數(shù)據(jù)的大容量、高速、可靠存儲、訪問的。

    1.文件數(shù)據(jù)以數(shù)據(jù)塊的方式進(jìn)行切分,數(shù)據(jù)塊可以存儲在集群任意DataNode服務(wù)器上,所以HDFS存儲的文件可以非常大,一個文件理論上可以占據(jù)整個HDFS服務(wù)器集群上的所有磁盤,實現(xiàn)了大容量存儲。

    2.HDFS一般的訪問模式是通過MapReduce程序在計算時讀取,MapReduce對輸入數(shù)據(jù)進(jìn)行分片讀取,通常一個分片就是一個數(shù)據(jù)塊,每個數(shù)據(jù)塊分配一個計算進(jìn)程,這樣就可以同時啟動很多進(jìn)程對一個HDFS文件的多個數(shù)據(jù)塊進(jìn)行并發(fā)訪問,從而實現(xiàn)數(shù)據(jù)的高速訪問。關(guān)于MapReduce的具體處理過程,我們會在專欄后面詳細(xì)討論。

    3.DataNode存儲的數(shù)據(jù)塊會進(jìn)行復(fù)制,使每個數(shù)據(jù)塊在集群里有多個備份,保證了數(shù)據(jù)的可靠性,并通過一系列的故障容錯手段實現(xiàn)HDFS系統(tǒng)中主要組件的高可用,進(jìn)而保證數(shù)據(jù)和整個系統(tǒng)的高可用。

    二、

    三、

    四、

    以上就是關(guān)于hdfs分布式原理相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。


    推薦閱讀:

    提升的技能完整視頻(提升的技能hd視頻)

    電氣圖紙中HD表示什么(電氣圖紙中hd表示什么符號)

    gooood谷德設(shè)計網(wǎng)(archdaily中文官網(wǎng))

    致敬迪拜景觀設(shè)計師(致敬迪拜景觀設(shè)計師的句子)

    網(wǎng)店轉(zhuǎn)讓交易平臺有哪些(天貓店購買交易平臺)