



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、Hadoop分布式文件系統(tǒng)架構(gòu)和設(shè)計要點一、前提和設(shè)計目標(biāo)1硬件錯誤是常態(tài),而非異常情況,HDFS可能是有成百上千的server組成,任何一個組件都有可能一 直失效,因此錯誤檢測和快速、自動的恢復(fù)是HDFSI勺核心架構(gòu)目標(biāo)。2、跑在HDFSt的應(yīng)用與一般的應(yīng)用不同,它們主要是以流式讀為主,做批量處理;比之關(guān)注數(shù)據(jù)訪問 的低延遲問題,更關(guān)鍵的在于數(shù)據(jù)訪問的高吞吐量。3、 HDFS以支持大數(shù)據(jù)集合為目標(biāo),一個存儲在上面的典型文件大小一般都在千兆至T字節(jié),一個單一 HDF麒例應(yīng)該能支撐數(shù)以千萬計的文件。4、HDFS應(yīng)用對文件要求的是 write-one-read-many 訪問模型。一個文件經(jīng)過創(chuàng)建
2、、寫,關(guān)閉之后就不需要改變。這一假設(shè)簡化了數(shù)據(jù)一致性問題,使高吞吐量的數(shù)據(jù)訪問成為可能。典型的如MapReduce架,或者一個web crawler應(yīng)用都很適合這個模型。5、移動計算的代價比之移動數(shù)據(jù)的代價低。一個應(yīng)用請求的計算,離它操作的數(shù)據(jù)越近就越高效,這 在數(shù)據(jù)達(dá)到海量級別的時候更是如此。將計算移動到數(shù)據(jù)附近,比之將數(shù)據(jù)移動到應(yīng)用所在顯然更好, HDFSg供給應(yīng)用這樣的接口。6、在異構(gòu)的軟硬件平臺間的可移植性。、Name node和 Data nodeHDFS采用master/slave 架構(gòu)。一個HDFS集群是有一個 Name nod卻一定數(shù)目的Data node組成。 Name no
3、de個中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的namespace和客戶端對文件的訪問。Data node在集旦日 景疋群中一般是一個節(jié)點一個,負(fù)責(zé)管理節(jié)點上它們附帶的存儲。在內(nèi)部,一個文件其實分成一個或多個 block,這些block存儲在Data node集合里。Name nod執(zhí)行文件系統(tǒng)的n amespace操作,例如打開、關(guān) 閉、重命名文件和目錄,同時決定block到具體Data node節(jié)點的映射。Data node在Name nod的指揮下 進行block的創(chuàng)建、刪除和復(fù)制。Name node和 Data node都是設(shè)計成可以跑在普通的廉價的運行 linux 的機器上。HDFS采用java
4、語言開發(fā),因此可以部署在很大范圍的機器上。一個典型的部署場景是一臺 機器跑一個單獨的Name node節(jié)點,集群中的其他機器各跑一個 Data node實例。這個架構(gòu)并不排除一臺數(shù)據(jù)就不需要通過Name node(也就是說文件數(shù)據(jù)的讀寫是直接在 Data node上)。三、文件系統(tǒng)的 namespaceHDFS支持傳統(tǒng)的層次型文件組織,與大多數(shù)其他文件系統(tǒng)類似,用戶可以創(chuàng)建目錄,并在其間創(chuàng) 建、刪除、移動和重命名文件。HDFS不支持user quotas和訪問權(quán)限,也不支持鏈接(link),不過當(dāng) 前的架構(gòu)并不排除實現(xiàn)這些特性。Name node隹護文件系統(tǒng)的namespace任何對文件系統(tǒng)n
5、amespace和文件屬性的修改都將被Name node記錄下來。應(yīng)用可以設(shè)置HDFS呆存的文件的副本數(shù)目,文件副本的數(shù) 目稱為文件的replicati on因子,這個信息也是由 Name node保存。四、數(shù)據(jù)復(fù)制HDFS被設(shè)計成在一個大集群中可以跨機器地可靠地存儲海量的文件。它將每個文件存儲成block序列,除了最后一個block,所有的block都是同樣的大小。文件的所有block為了容錯都會被復(fù)制。 每個文件的block大小和replication因子都是可配置的。Replication 因子可以在文件創(chuàng)建的時候配置,以后也可以改變。HDFS的文件是write-o ne,并且嚴(yán)格要求在
6、任何時候只有一個 writer。Name node 全權(quán)管理block的復(fù)制,它周期性地從集群中的每個 Data node接收心跳包和一個Blockreport。心跳包 的接收表示該Data node節(jié)點正常工作,而Blockreport包括了該Data node上所有的block組成的列表Block ReplicaticnNamenode (Filename, numReplicgs, block-ids,.) /users/sameerp/data/partO, r:2. 1,3j, /users/sameerp/data/part-1 F 匚3. 2f4 6, _ 丿Datanodes乜
7、百|(zhì)E E 1叵1副本的存放,副本的存放是 HDF舸靠性和性能的關(guān)鍵。HDFS采用一種稱為rack-aware的策略來改 進數(shù)據(jù)的可靠性、有效性和網(wǎng)絡(luò)帶寬的利用。這個策略實現(xiàn)的短期目標(biāo)是驗證在生產(chǎn)環(huán)境下的表現(xiàn),觀 察它的行為,構(gòu)建測試和研究的基礎(chǔ),以便實現(xiàn)更先進的策略。龐大的HDF麒例一般運行在多個機架的計算機形成的集群上,不同機架間的兩臺機器的通訊需要通過交換機,顯然通常情況下,同一個機架 內(nèi)的兩個節(jié)點間的帶寬會比不同機架間的兩臺機器的帶寬大。通過一個稱為 Rack Aware ness的過程,Name node決定了每個 Data node所屬的rack id。一個 簡單但沒有優(yōu)化的策略就
8、是將副本存放在單獨的機架上。這樣可以防止整個機架(非副本存放)失效的 情況,并且允許讀數(shù)據(jù)的時候可以從多個機架讀取。這個簡單策略設(shè)置可以將副本分布在集群中,有利 于組件失敗情況下的負(fù)載均衡。但是,這個簡單策略加大了寫的代價,因為一個寫操作需要傳輸block到多個機架。在大多數(shù)情況下,replication因子是3, HDFS勺存放策略是將一個副本存放在本地機架上的節(jié)點,一個副本放在同一機架上的另一個節(jié)點,最后一個副本放在不同機架上的一個節(jié)點。機架的錯誤遠(yuǎn) 遠(yuǎn)比節(jié)點的錯誤少,這個策略不會影響到數(shù)據(jù)的可靠性和有效性。三分之一的副本在一個節(jié)點上,三分 之二在一個機架上,其他保存在剩下的機架中,這一策
9、略改進了寫的性能。2、 副本的選擇,為了降低整體的帶寬消耗和讀延時,HDFS會盡量讓reader讀最近的副本。如果在reader 的同一個機架上有一個副本,那么就讀該副本。如果一個 HDFS集群跨越多個數(shù)據(jù)中心,那么reader也 將首先嘗試讀本地數(shù)據(jù)中心的副本。3、SafeModeName node啟動后會進入一個稱為 SafeMode的特殊狀態(tài),處在這個狀態(tài)的 Name node是不會進行 數(shù)據(jù)塊的復(fù)制的。Name node從所有的Data node接收心跳包和Blockreport。Blockreport包括了某個 Data node所有的數(shù)據(jù)塊列表。每個block都有指定的最小數(shù)目的副
10、本。當(dāng) Name node僉測確認(rèn)某個 Data node的數(shù)據(jù)塊副本的最小數(shù)目,那么該 Data node就會被認(rèn)為是安全的;如果一定百分比(這個參 數(shù)可配置)的數(shù)據(jù)塊檢測確認(rèn)是安全的,那么 Name node將退出SafeMode狀態(tài),接下來它會確定還有哪些數(shù)據(jù)塊的副本沒有達(dá)到指定數(shù)目,并將這些block復(fù)制到其他Data no de。五、文件系統(tǒng)元數(shù)據(jù)的持久化Name node存儲HDFS的元數(shù)據(jù)。對于任何對文件元數(shù)據(jù)產(chǎn)生修改的操作,Name nod嗇E使用一個稱為Editlog的事務(wù)日志記錄下來。例如,在 HDFS創(chuàng)建一個文件,Name node就會在Editlog中插入 一條記錄來表
11、示;同樣,修改文件的 replicatio n 因子也將往Editlog 插入一條記錄。Name nod在本 地OS的文件系統(tǒng)中存儲這個 Editlog。整個文件系統(tǒng)的namespace包括block到文件的映射、文件的 屬性,都存儲在稱為FsImage的文件中,這個文件也是放在 Name node在系統(tǒng)的文件系統(tǒng)上。Name node在內(nèi)存中保存著整個文件系統(tǒng) n amespace和文件Blockmap的映像。這個關(guān)鍵的元數(shù)據(jù) 設(shè)計得很緊湊,因而一個帶有 4G內(nèi)存的Name node足夠支撐海量的文件和目錄。當(dāng) Name node啟動時, 它從硬盤中讀取 Editlog 和FsImage,將
12、所有Editlog 中的事務(wù)作用(apply)在內(nèi)存中的FsImage,并 將這個新版本的FsImage從內(nèi)存中flush到硬盤上,然后再truncate這個舊的Editlog,因為這個舊的 Editlog 的事務(wù)都已經(jīng)作用在 FsImage上了。這個過程稱為checkpoint。在當(dāng)前實現(xiàn)中,checkpoint只 發(fā)生在Name nod啟動時,在不久的將來我們將實現(xiàn)支持周期性的checkpoi nt。Data node并不知道關(guān)于文件的任何東西,除了將文件中的數(shù)據(jù)保存在本地的文件系統(tǒng)上。它把 每個HDFS數(shù)據(jù)塊存儲在本地文件系統(tǒng)上隔離的文件中。Data node并不在同一個目錄創(chuàng)建所有的文
13、件,相反,它用啟發(fā)式地方法來確定每個目錄的最佳文件數(shù)目,并且在適當(dāng)?shù)臅r候創(chuàng)建子目錄。在同一個目 錄創(chuàng)建所有的文件不是最優(yōu)的選擇,因為本地文件系統(tǒng)可能無法高效地在單一目錄中支持大量的文件。 當(dāng)一個Data node啟動時,它掃描本地文件系統(tǒng),對這些本地文件產(chǎn)生相應(yīng)的一個所有HDFS數(shù)據(jù)塊的列表,然后發(fā)送報告到Name node這個報告就是Blockreport。六、通訊協(xié)議所有的HDFS!訊協(xié)議都是構(gòu)建在TCP/IP協(xié)議上??蛻舳送ㄟ^一個可配置的端口連接到Name node 通過 Clie ntProtocol 與 Name node 交互。而 Data node 是使用 Data no deP
14、rotocol 與 Name node 交互。從Clie ntProtocol和Data nodeprotocol 抽象出一個遠(yuǎn)程調(diào)用(RPC),在設(shè)計上,Name nod環(huán)會主動發(fā)起RPC而是是響應(yīng)來自客戶端和 Data node的RPC請求。七、健壯性HDFS的主要目標(biāo)就是實現(xiàn)在失敗情況下的數(shù)據(jù)存儲可靠性。常見的三種失?。篘ame no dailures, Data node failures 和網(wǎng)絡(luò)分割(n etwork partiti ons)。1硬盤數(shù)據(jù)錯誤、心跳檢測和重新復(fù)制每個Data node節(jié)點都向Name node周期性地發(fā)送心跳包。網(wǎng)絡(luò)切割可能導(dǎo)致一部分Data node
15、跟 Name nodefe去聯(lián)系。Name node通過心跳包的缺失檢測到這一情況,并將這些Data node標(biāo)記為dead,不會將新的IO請求發(fā)給它們。寄存在dead Data node上的任何數(shù)據(jù)將不再有效。Data node的死亡可能 引起一些block的副本數(shù)目低于指定值,Name nod不斷地跟蹤需要復(fù)制的block ,在任何需要的情況下 啟動復(fù)制。在下列情況可能需要重新復(fù)制:某個Data node節(jié)點失效,某個副本遭到損壞,Data node上的硬盤錯誤,或者文件的replicatio n因子增大。2、集群均衡HDFS支持?jǐn)?shù)據(jù)的均衡計劃,如果某個Data node節(jié)點上的空閑空間低
16、于特定的臨界點,那么就會啟動一個計劃自動地將數(shù)據(jù)從一個 Data node搬移到空閑的Data node。當(dāng)對某個文件的請求突然增加,那 么也可能啟動一個計劃創(chuàng)建該文件新的副本,并分布到集群中以滿足應(yīng)用的要求。這些均衡計劃目前還 沒有實現(xiàn)。3、數(shù)據(jù)完整性從某個Data node獲取的數(shù)據(jù)塊有可能是損壞的,這個損壞可能是由于Data node的存儲設(shè)備錯誤、網(wǎng)絡(luò)錯誤或者軟件bug造成的。HDFS客戶端軟件實現(xiàn)了 HDFS文件內(nèi)容的校驗和。當(dāng)某個客戶端創(chuàng)建一 個新的HDFSt件,會計算這個文件每個block的校驗和,并作為一個單獨的隱藏文件保存這些校驗和 在同一個HDFS namespac下。當(dāng)客
17、戶端檢索文件內(nèi)容,它會確認(rèn)從Data node獲取的數(shù)據(jù)跟相應(yīng)的校驗和文件中的校驗和是否匹配,如果不匹配,客戶端可以選擇從其他Data node獲取該block的副本。4、元數(shù)據(jù)磁盤錯誤FsImage和Editlog是HDFS勺核心數(shù)據(jù)結(jié)構(gòu)。這些文件如果損壞了,整個HDFS實例都將失效。因而,Name nod刖以配置成支持維護多個 FsImage和Editlog 的拷貝。任何對FsImage或者Editlog 的 修改,都將同步到它們的副本上。這個同步操作可能會降低 Name node每秒能支持處理的namespace事 務(wù)。這個代價是可以接受的,因為 HDFS是數(shù)據(jù)密集的,而非元數(shù)據(jù)密集。當(dāng)
18、 Name node重啟的時候,它 總是選取最近的一致的FsImage和Editlog使用。Name node在HDFS是單點存在,如果Name node在的機器錯誤,手工的干預(yù)是必須的。目前,在 另一臺機器上重啟因故障而停止服務(wù)的Name node這個功能還沒實現(xiàn)。5、快照快照支持某個時間的數(shù)據(jù)拷貝,當(dāng)HDFS數(shù)據(jù)損壞的時候,可以恢復(fù)到過去一個已知正確的時間點。 HDFSI前還不支持快照功能。八、數(shù)據(jù)組織 1數(shù)據(jù)塊兼容HDFS勺應(yīng)用都是處理大數(shù)據(jù)集合的。這些應(yīng)用都是寫數(shù)據(jù)一次,讀卻是一次到多次,并且 讀的速度要滿足流式讀。HDFS支持文件的write- once-read-many語義。一個
19、典型的block大小是64MB 因而,文件總是按照64M切分成chu nk,每個chu nk存儲于不同的Data node2、步驟某個客戶端創(chuàng)建文件的請求其實并沒有立即發(fā)給Name node事實上,HDFS客戶端會將文件數(shù)據(jù)緩存到本地的一個臨時文件。應(yīng)用的寫被透明地重定向到這個臨時文件。當(dāng)這個臨時文件累積的數(shù)據(jù)超 過一個block的大小(默認(rèn)64M),客戶端才會聯(lián)系Name node Name node將文件名插入文件系統(tǒng)的層次 結(jié)構(gòu)中,并且分配一個數(shù)據(jù)塊給它,然后返回Data node的標(biāo)識符和目標(biāo)數(shù)據(jù)塊給客戶端??蛻舳藢⒈镜嘏R時文件flush到指定的Data node上。當(dāng)文件關(guān)閉時,在臨
20、時文件中剩余的沒有flush的數(shù)據(jù)也會傳輸?shù)街付ǖ腄ata node,然后客戶端告訴Name nod文件已經(jīng)關(guān)閉。此時Name node才將文件創(chuàng)建操作提 交到持久存儲。如果Name nod在文件關(guān)閉前掛了,該文件將丟失。上述方法是對通過對HDFSt運行的目標(biāo)應(yīng)用認(rèn)真考慮的結(jié)果。如果不采用客戶端緩存,由于網(wǎng)絡(luò) 速度和網(wǎng)絡(luò)堵塞會對吞估量造成比較大的影響。3、流水線復(fù)制當(dāng)某個客戶端向HDFS文件寫數(shù)據(jù)的時候,一開始是寫入本地臨時文件,假設(shè)該文件的 replication 因子設(shè)置為3,那么客戶端會從Name node獲取一張Data node列表來存放副本。然后客戶 端開始向第一個Data node傳輸數(shù)據(jù),第一個Data node 小部分一小部分(4kb)地接收數(shù)據(jù),將每個部 分寫入本地倉庫,并且同時傳輸該部分到第二個 Data node節(jié)點。第二個Data node也是這樣,邊收邊傳, 一小部分一小部分地收,存儲在本地倉庫,同時傳給第三個Data no de,第三個Data node就僅僅是接收并存儲了。這就是流水線式的復(fù)制。九、可
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 深圳北理莫斯科大學(xué)《版式設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 山東省壽光市2024年九年級化學(xué)第一學(xué)期期末復(fù)習(xí)檢測模擬試題含解析
- 2025至2030年中國離子棒水處理儀數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國電子迷你除濕機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國玫瑰保養(yǎng)精油數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國煤礦井下人員分布自動識別系統(tǒng)數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國滅茬播種機數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國淋花壺數(shù)據(jù)監(jiān)測研究報告
- 2025至2030年中國溝瓦數(shù)據(jù)監(jiān)測研究報告
- 中國水吧制水機行業(yè)市場運營現(xiàn)狀及投資方向研究報告
- 高中歷史《第一次工業(yè)革命》說課課件
- 預(yù)計財務(wù)報表編制及分析課件
- 學(xué)生集體外出活動備案表
- Q∕SY 1347-2010 石油化工蒸汽透平式壓縮機組節(jié)能監(jiān)測方法
- 基于Qt的俄羅斯方塊的設(shè)計(共25頁)
- 西門子順序功能圖語言S7-Graph的應(yīng)用
- 中醫(yī)治療室工作制度管理辦法
- 提花裝造工藝技術(shù)培訓(xùn)課程
- 食堂投訴處理方案
- 北京市昌平區(qū)2021-2022學(xué)年八年級上學(xué)期期末考試語文試卷(word版含答案)
- 直播傳媒公司簡介PPT課件(參考)
評論
0/150
提交評論