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