-
當(dāng)前位置:首頁(yè) > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
hdfs基本工作原理(hdfs工作原理圖)
大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于hdfs基本工作原理的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。
開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、【HDFS】超詳細(xì)講解Erasure Coding-- EC架構(gòu)及圖解相關(guān)核心代碼。
通過(guò)本文可以獲得如下知識(shí):
① XOR碼、RS碼的基本原理和恢復(fù)過(guò)程實(shí)例。
② 圖解HDFS EC中block group(塊組)的概念、圖解striped layout(條帶布局)和連續(xù)布局,以及它們的優(yōu)缺點(diǎn)比較。用一個(gè)實(shí)例一步一步分析divideByteRangeIntoStripes方法生成的cells、ranges、striped數(shù)組。
③ HDFS EC的核心源碼流程。
④ HDFS EC優(yōu)勢(shì)與劣勢(shì)。
在存儲(chǔ)系統(tǒng)中,糾刪碼技術(shù)主要是通過(guò)利用糾刪碼算法將原始的數(shù)據(jù)進(jìn)行編碼得到校驗(yàn),并將數(shù)據(jù)和校驗(yàn)一并存儲(chǔ)起來(lái),以達(dá)到容錯(cuò)的目的。
異或運(yùn)算:相同為0,不同為1。
滿足如下兩個(gè)運(yùn)算律:
交換律: B1⊕ B2 = B2⊕ B1
結(jié)合律: B1⊕ [B2⊕ B3] = [B1⊕ B2]⊕ B3
例如:
現(xiàn)在我們假設(shè)下面式子中某一位丟失了。比如第一位0數(shù)據(jù)丟失了
丟失后變成:
我們?cè)趺椿謴?fù)0這個(gè)數(shù)據(jù)呢?這時(shí)候可以利用異或的結(jié)合律了。
因此缺失的數(shù)據(jù)為0。
但是異或碼過(guò)于簡(jiǎn)單了,存在可容忍錯(cuò)誤過(guò)少的問(wèn)題。例如如果我們丟失了2位的數(shù)據(jù),那就沒(méi)法恢復(fù)了。而在實(shí)際的場(chǎng)景下,肯定會(huì)發(fā)生多個(gè)數(shù)據(jù)丟失的問(wèn)題的,因此需要引入其他的糾刪碼來(lái)幫助我們解決這個(gè)問(wèn)題。比如后面正文會(huì)介紹到的RS碼等。
RS碼,中文名稱里德所羅門(mén)編碼。是EC編碼中一種。本小節(jié)先介紹RS碼的基本思想,然后通過(guò)一個(gè)運(yùn)算實(shí)例幫助理解RS的工作原理。
RS碼是存儲(chǔ)系統(tǒng)較為常用的一種糾刪碼,它有兩個(gè)參數(shù) k和 m,記為RS(k,m)。k代表的是data cell數(shù)據(jù)塊的數(shù)量,m代表的是parity cell塊的數(shù)量,parity cell可理解為校驗(yàn)塊,因?yàn)樗怯蓴?shù)據(jù)塊進(jìn)行編碼運(yùn)算后產(chǎn)生的。
RS碼的基本思想:
如上圖所示:
RS碼數(shù)據(jù)恢復(fù)實(shí)例:
我們以RS(5,3)為例來(lái)計(jì)算:
其中,1,5,7,5,5為數(shù)據(jù)塊,23,77,289為范德蒙矩陣(可百度一下這個(gè)矩陣)生成的校驗(yàn)塊?,F(xiàn)在我們來(lái)看下,23, 77, 289這三個(gè)校驗(yàn)塊到底能不能在丟失數(shù)據(jù)塊的時(shí)候?qū)?shù)據(jù)恢復(fù)出來(lái)。
假設(shè)在一個(gè)極端情況下,五個(gè)數(shù)據(jù)塊丟失了三個(gè),也就是可以容忍的最大數(shù)量,比如,丟失了數(shù)據(jù)塊的前三個(gè)數(shù):1,5,7。此時(shí)把丟失的數(shù)據(jù)塊和其對(duì)應(yīng)的生成矩陣的行去掉,然后用生成矩陣的逆矩陣乘以校驗(yàn)塊和剩余的數(shù)據(jù)塊組成的矩陣。
二、四.(一)HDFS優(yōu)缺點(diǎn)
Hadoop中HDFS優(yōu)缺點(diǎn)
HDFS的優(yōu)點(diǎn):
1、處理超大文件
這里的超大文件通常是指百M(fèi)B、甚至數(shù)百TB大小的文件。目前在實(shí)際應(yīng)用中,HDFS已經(jīng)能用來(lái)存儲(chǔ)管理PB級(jí)的數(shù)據(jù)了。
2、流式的訪問(wèn)數(shù)據(jù)
HDFS的設(shè)計(jì)建立在“一次寫(xiě)入、多次讀寫(xiě)”任務(wù)的基礎(chǔ)上。這意味著一個(gè)數(shù)據(jù)集一旦由數(shù)據(jù)源生成,就會(huì)被復(fù)制分發(fā)到不同的存儲(chǔ)節(jié)點(diǎn)中,然后響應(yīng)各種各樣的數(shù)據(jù)分析任務(wù)請(qǐng)求。在多數(shù)情況下,分析任務(wù)都會(huì)涉及數(shù)據(jù)集中的大部分?jǐn)?shù)據(jù),也就是說(shuō),對(duì)HDFS來(lái)說(shuō),請(qǐng)求讀取整個(gè)數(shù)據(jù)集要比讀取一條記錄更加高效。
3、運(yùn)行于廉價(jià)的商用機(jī)器集群上
Hadoop設(shè)計(jì)對(duì)應(yīng)急需求比較低,只須運(yùn)行在低廉的商用硬件集群上,而無(wú)需在昂貴的高可用性機(jī)器上。廉價(jià)的商用機(jī)也就意味著大型集群中出現(xiàn)節(jié)點(diǎn)故障情況的概率非常高。HDFS遇到了上述故障時(shí),被設(shè)計(jì)成能夠繼續(xù)運(yùn)行且不讓用戶察覺(jué)到明顯的中斷。
HDFS的缺點(diǎn):
1、不適合低延遲數(shù)據(jù)訪問(wèn)
如果要處理一些用戶要求時(shí)間比較短的低延遲應(yīng)用請(qǐng)求,則HDFS不適合。HDFS是為了處理大型數(shù)據(jù)集分析任務(wù)的,主要是為達(dá)到高的數(shù)據(jù)吞吐量而設(shè)計(jì)的,這就可能要求以高延遲作為代價(jià)。
改進(jìn)策略:
對(duì)于那些有低延時(shí)要求的應(yīng)用程序,HBase是一個(gè)更好的選擇,通過(guò)上層數(shù)據(jù)管理項(xiàng)目盡可能地彌補(bǔ)這個(gè)不足。在性能上有了很大的提升,它的口號(hào)是goes real time。使用緩存或多個(gè)master設(shè)計(jì)可以降低Clinet的數(shù)據(jù)請(qǐng)求壓力,以減少延時(shí)。
2、無(wú)法高效存儲(chǔ)大量的小文件
因?yàn)镹ameNode把文件系統(tǒng)的元數(shù)據(jù)放置在內(nèi)存中,所有文件系統(tǒng)所能容納的文件數(shù)目是由NameNode的內(nèi)存大小來(lái)決定。還有一個(gè)問(wèn)題就是,因?yàn)镸apTask的數(shù)量是由Splits來(lái)決定的,所以用MR處理大量的小文件時(shí),就會(huì)產(chǎn)生過(guò)多的MapTask,線程管理開(kāi)銷將會(huì)增加作業(yè)時(shí)間。當(dāng)Hadoop處理很多小文件(文件大小小于HDFS中Block大小)的時(shí)候,由于FileInputFormat不會(huì)對(duì)小文件進(jìn)行劃分,所以每一個(gè)小文件都會(huì)被當(dāng)做一個(gè)Split并分配一個(gè)Map任務(wù),導(dǎo)致效率底下。
例如:一個(gè)1G的文件,會(huì)被劃分成16個(gè)64MB的Split,并分配16個(gè)Map任務(wù)處理,而10000個(gè)100Kb的文件會(huì)被10000個(gè)Map任務(wù)處理。
改進(jìn)策略:
要想讓HDFS能處理好小文件,有不少方法。利用SequenceFile、MapFile、Har等方式歸檔小文件,這個(gè)方法的原理就是把小文件歸檔起來(lái)管理,HBase就是基于此的。
3、不支持多用戶寫(xiě)入及任意修改文件
在HDFS的一個(gè)文件中只有一個(gè)寫(xiě)入者,而且寫(xiě)操作只能在文件末尾完成,即只能執(zhí)行追加操作,目前HDFS還不支持多個(gè)用戶對(duì)同一文件的寫(xiě)操作,以及在文件任意位置進(jìn)行修改。
三、HDFS簡(jiǎn)介:不用HDFS我們?nèi)绾未鎯?chǔ)大規(guī)模數(shù)據(jù)
大數(shù)據(jù)技術(shù)主要是要解決大規(guī)模數(shù)據(jù)的計(jì)算處理問(wèn)題,但是我們要想對(duì)數(shù)據(jù)進(jìn)行計(jì)算,首先要解決的其實(shí)是大規(guī)模數(shù)據(jù)的存儲(chǔ)問(wèn)題。
如果一個(gè)文件的大小超過(guò)了一張磁盤(pán)的大小,你該如何存儲(chǔ)? 單機(jī)時(shí)代,主要的解決方案是 RAID ;分布式時(shí)代,主要解決方案是 分布式文件系統(tǒng) 。
其實(shí)不論是在 RAID 還是 分布式文件系統(tǒng) ,大規(guī)模數(shù)據(jù)存儲(chǔ)都需要解決幾個(gè)核心問(wèn)題,這些問(wèn)題都是什么呢?總結(jié)一下,主要有以下三個(gè)方面。
1. 數(shù)據(jù)存儲(chǔ)容量的問(wèn)題。 既然大數(shù)據(jù)要解決的是數(shù)以 PB 計(jì)的數(shù)據(jù)計(jì)算問(wèn)題,而一般的服務(wù)器磁盤(pán)容量通常 1~2TB,那么如何存儲(chǔ)這么大規(guī)模的數(shù)據(jù)呢?
2. 數(shù)據(jù)讀寫(xiě)速度的問(wèn)題。 一般磁盤(pán)的連續(xù)讀寫(xiě)速度為幾十 MB,以這樣的速度,幾十 PB 的數(shù)據(jù)恐怕要讀寫(xiě)到天荒地老。
3. 數(shù)據(jù)可靠性的問(wèn)題。 磁盤(pán)大約是計(jì)算機(jī)設(shè)備中最易損壞的硬件了,通常情況一塊磁盤(pán)使用壽命大概是一年,如果磁盤(pán)損壞了,數(shù)據(jù)怎么辦?
RAID(獨(dú)立磁盤(pán)冗余陣列)技術(shù)是將多塊普通磁盤(pán)組成一個(gè)陣列,共同對(duì)外提供服務(wù)。主要是為了改善磁盤(pán)的存儲(chǔ)容量、讀寫(xiě)速度,增強(qiáng)磁盤(pán)的可用性和容錯(cuò)能力。目前服務(wù)器級(jí)別的計(jì)算機(jī)都支持插入多塊磁盤(pán),通過(guò)使用 RAID 技術(shù),實(shí)現(xiàn)數(shù)據(jù)在多塊磁盤(pán)上的并發(fā)讀寫(xiě)和數(shù)據(jù)備份。
常用 RAID 技術(shù)有圖中下面這幾種,RAID0,RAID1,RAID10,RAID5, RAID6。
首先,我們先假設(shè)服務(wù)器有 N 塊磁盤(pán)。
RAID 0 是數(shù)據(jù)在從內(nèi)存緩沖區(qū)寫(xiě)入磁盤(pán)時(shí),根據(jù)磁盤(pán)數(shù)量將數(shù)據(jù)分成 N 份,這些數(shù)據(jù)同時(shí)并發(fā)寫(xiě)入 N 塊磁盤(pán),使得數(shù)據(jù)整體寫(xiě)入速度是一塊磁盤(pán)的 N 倍;讀取的時(shí)候也一樣,因此 RAID 0 具有極快的數(shù)據(jù)讀寫(xiě)速度。但是 RAID 0 不做數(shù)據(jù)備份,N 塊磁盤(pán)中只要有一塊損壞,數(shù)據(jù)完整性就被破壞,其他磁盤(pán)的數(shù)據(jù)也都無(wú)法使用了。
RAID 1 是數(shù)據(jù)在寫(xiě)入磁盤(pán)時(shí),將一份數(shù)據(jù)同時(shí)寫(xiě)入兩塊磁盤(pán),這樣任何一塊磁盤(pán)損壞都不會(huì)導(dǎo)致數(shù)據(jù)丟失,插入一塊新磁盤(pán)就可以通過(guò)復(fù)制數(shù)據(jù)的方式自動(dòng)修復(fù),具有極高的可靠性。
結(jié)合 RAID 0 和 RAID 1 兩種方案構(gòu)成了 RAID 10 ,它是將所有磁盤(pán) N 平均分成兩份,數(shù)據(jù)同時(shí)在兩份磁盤(pán)寫(xiě)入,相當(dāng)于 RAID 1;但是平分成兩份,在每一份磁盤(pán)(也就是 N/2 塊磁盤(pán))里面,利用 RAID 0 技術(shù)并發(fā)讀寫(xiě),這樣既提高可靠性又改善性能。不過(guò) RAID 10 的磁盤(pán)利用率較低,有一半的磁盤(pán)用來(lái)寫(xiě)備份數(shù)據(jù)。
一般情況下,一臺(tái)服務(wù)器上很少出現(xiàn)同時(shí)損壞兩塊磁盤(pán)的情況,在只損壞一塊磁盤(pán)的情況下,如果能利用其他磁盤(pán)的數(shù)據(jù)恢復(fù)損壞磁盤(pán)的數(shù)據(jù),這樣在保證可靠性和性能的同時(shí),磁盤(pán)利用率也得到大幅提升。
順著這個(gè)思路, RAID 3 可以在數(shù)據(jù)寫(xiě)入磁盤(pán)的時(shí)候,將數(shù)據(jù)分成 N-1 份,并發(fā)寫(xiě)入 N-1 塊磁盤(pán),并在第 N 塊磁盤(pán)記錄校驗(yàn)數(shù)據(jù),這樣任何一塊磁盤(pán)損壞(包括校驗(yàn)數(shù)據(jù)磁盤(pán)),都可以利用其他 N-1 塊磁盤(pán)的數(shù)據(jù)修復(fù)。但是在數(shù)據(jù)修改較多的場(chǎng)景中,任何磁盤(pán)數(shù)據(jù)的修改,都會(huì)導(dǎo)致第 N 塊磁盤(pán)重寫(xiě)校驗(yàn)數(shù)據(jù)。頻繁寫(xiě)入的后果是第 N 塊磁盤(pán)比其他磁盤(pán)更容易損壞,需要頻繁更換,所以 RAID 3 很少在實(shí)踐中使用,因此在上面圖中也就沒(méi)有單獨(dú)列出。
相比 RAID 3, RAID 5 是使用更多的方案。RAID 5 和 RAID 3 很相似,但是校驗(yàn)數(shù)據(jù)不是寫(xiě)入第 N 塊磁盤(pán),而是螺旋式地寫(xiě)入所有磁盤(pán)中。這樣校驗(yàn)數(shù)據(jù)的修改也被平均到所有磁盤(pán)上,避免 RAID 3 頻繁寫(xiě)壞一塊磁盤(pán)的情況。
如果數(shù)據(jù)需要很高的可靠性,在出現(xiàn)同時(shí)損壞兩塊磁盤(pán)的情況下,仍然需要修復(fù)數(shù)據(jù),這時(shí)候可以使用 RAID 6。
RAID 6 和 RAID 5 類似 , 但是數(shù)據(jù)只寫(xiě)入 N-2 塊磁盤(pán),并螺旋式地在兩塊磁盤(pán)中寫(xiě)入校驗(yàn)信息(使用不同算法生成)。
從下面表格中你可以看到在相同磁盤(pán)數(shù)目(N)的情況下,各種 RAID 技術(shù)的比較。
現(xiàn)在我來(lái)總結(jié)一下,看看 RAID 是如何解決我一開(kāi)始提出的,關(guān)于存儲(chǔ)的三個(gè)關(guān)鍵問(wèn)題。
1. 數(shù)據(jù)存儲(chǔ)容量的問(wèn)題。 RAID 使用了 N 塊磁盤(pán)構(gòu)成一個(gè)存儲(chǔ)陣列,如果使用 RAID 5,數(shù)據(jù)就可以存儲(chǔ)在 N-1 塊磁盤(pán)上,這樣將存儲(chǔ)空間擴(kuò)大了 N-1 倍。
2. 數(shù)據(jù)讀寫(xiě)速度的問(wèn)題。 RAID 根據(jù)可以使用的磁盤(pán)數(shù)量,將待寫(xiě)入的數(shù)據(jù)分成多片,并發(fā)同時(shí)向多塊磁盤(pán)進(jìn)行寫(xiě)入,顯然寫(xiě)入的速度可以得到明顯提高;同理,讀取速度也可以得到明顯提高。不過(guò),需要注意的是,由于傳統(tǒng)機(jī)械磁盤(pán)的訪問(wèn)延遲主要來(lái)自于尋址時(shí)間,數(shù)據(jù)真正進(jìn)行讀寫(xiě)的時(shí)間可能只占據(jù)整個(gè)數(shù)據(jù)訪問(wèn)時(shí)間的一小部分,所以數(shù)據(jù)分片后對(duì) N 塊磁盤(pán)進(jìn)行并發(fā)讀寫(xiě)操作并不能將訪問(wèn)速度提高 N 倍。
3. 數(shù)據(jù)可靠性的問(wèn)題。 使用 RAID 10、RAID 5 或者 RAID 6 方案的時(shí)候,由于數(shù)據(jù)有冗余存儲(chǔ),或者存儲(chǔ)校驗(yàn)信息,所以當(dāng)某塊磁盤(pán)損壞的時(shí)候,可以通過(guò)其他磁盤(pán)上的數(shù)據(jù)和校驗(yàn)數(shù)據(jù)將丟失磁盤(pán)上的數(shù)據(jù)還原。
RAID 可以看作是一種垂直伸縮,一臺(tái)計(jì)算機(jī)集成更多的磁盤(pán)實(shí)現(xiàn)數(shù)據(jù)更大規(guī)模、更安全可靠的存儲(chǔ)以及更快的訪問(wèn)速度。而 HDFS 則是水平伸縮,通過(guò)添加更多的服務(wù)器實(shí)現(xiàn)數(shù)據(jù)更大、更快、更安全存儲(chǔ)與訪問(wèn)。
RAID 技術(shù)只是在單臺(tái)服務(wù)器的多塊磁盤(pán)上組成陣列,大數(shù)據(jù)需要更大規(guī)模的存儲(chǔ)空間和更快的訪問(wèn)速度。將 RAID 思想原理應(yīng)用到分布式服務(wù)器集群上,就形成了 Hadoop 分布式文件系統(tǒng) HDFS 的架構(gòu)思想。
四、Hadoop從入門(mén)到精通23:HDFS的NameNode聯(lián)盟(負(fù)載均衡)
本節(jié)來(lái)介紹HDFS負(fù)載均衡。
使用任何一種集群都可以實(shí)現(xiàn)兩大功能:
(1)Fail Over:失敗遷移(高可用,HA)
(2)Load Balance:負(fù)載均衡
Hadoop使用ZooKeeper實(shí)現(xiàn)HA功能,使用NameNode的聯(lián)盟(Federation)來(lái)實(shí)現(xiàn)LB功能。
NameNode聯(lián)盟(負(fù)載均衡)的基本原理如下圖所示:
關(guān)于NameNode聯(lián)盟的幾點(diǎn)是說(shuō)明:
以上就是關(guān)于hdfs基本工作原理相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。
推薦閱讀:
電氣圖紙中HD表示什么(電氣圖紙中hd表示什么符號(hào))
hdfs的寫(xiě)入流程(hdfs寫(xiě)入流程圖)