Hadoop分布式文件系統(tǒng)-從RAID說起
大數(shù)據(jù)技術(shù)主要要解決的問題的是大規(guī)模數(shù)據(jù)的計(jì)算處理問題,那么首先要解決的就是大規(guī)模數(shù)據(jù)的存儲(chǔ)問題。大規(guī)模數(shù)據(jù)存儲(chǔ)要解決的核心問題有三個(gè)方面:
數(shù)據(jù)存儲(chǔ)容量的問題,既然大數(shù)據(jù)要解決的是數(shù)以PB計(jì)的數(shù)據(jù)計(jì)算問題,而一般的服務(wù)器磁盤容量通常1-2TB,那么如何存儲(chǔ)這么大規(guī)模的數(shù)據(jù)。
數(shù)據(jù)讀寫速度的問題,一般磁盤的連續(xù)讀寫速度為幾十MB,以這樣的速度,幾十PB的數(shù)據(jù)恐怕要讀寫到天荒地老。
數(shù)據(jù)可靠性的問題,磁盤大約是計(jì)算機(jī)設(shè)備中最易損壞的硬件了,在網(wǎng)站一塊磁盤使用壽命大概是一年,如果磁盤損壞了,數(shù)據(jù)怎么辦?
在大數(shù)據(jù)技術(shù)出現(xiàn)之前,人們就需要面對(duì)這些關(guān)于存儲(chǔ)的問題,對(duì)應(yīng)的解決方案就是RAID技術(shù)。
從RAID說起
RAID(獨(dú)立磁盤冗余陣列)技術(shù)主要是為了改善磁盤的存儲(chǔ)容量,讀寫速度,增強(qiáng)磁盤的可用性和容錯(cuò)能力。目前服務(wù)器級(jí)別的計(jì)算機(jī)都支持插入多塊磁盤(8塊或者更多),通過使用RAID技術(shù),實(shí)現(xiàn)數(shù)據(jù)在多塊磁盤上的并發(fā)讀寫和數(shù)據(jù)備份。
常用RAID技術(shù)有以下幾種,如圖所示。
假設(shè)服務(wù)器有N塊磁盤。
RAID0
數(shù)據(jù)在從內(nèi)存緩沖區(qū)寫入磁盤時(shí),根據(jù)磁盤數(shù)量將數(shù)據(jù)分成N份,這些數(shù)據(jù)同時(shí)并發(fā)寫入N塊磁盤,使得數(shù)據(jù)整體寫入速度是一塊磁盤的N倍。讀取的時(shí)候也一樣,因此RAID0具有極快的數(shù)據(jù)讀寫速度,但是RAID0不做數(shù)據(jù)備份,N塊磁盤中只要有一塊損壞,數(shù)據(jù)完整性就被破壞,所有磁盤的數(shù)據(jù)都會(huì)損壞。
RAID1
數(shù)據(jù)在寫入磁盤時(shí),將一份數(shù)據(jù)同時(shí)寫入兩塊磁盤,這樣任何一塊磁盤損壞都不會(huì)導(dǎo)致數(shù)據(jù)丟失,插入一塊新磁盤就可以通過復(fù)制數(shù)據(jù)的方式自動(dòng)修復(fù),具有極高的可靠性。
RAID10
結(jié)合RAID0和RAID1兩種方案,將所有磁盤平均分成兩份,數(shù)據(jù)同時(shí)在兩份磁盤寫入,相當(dāng)于RAID1,但是在每一份磁盤里面的N/2塊磁盤上,利用RAID0技術(shù)并發(fā)讀寫,既提高可靠性又改善性能,不過RAID10的磁盤利用率較低,有一半的磁盤用來寫備份數(shù)據(jù)。
RAID3
一般情況下,一臺(tái)服務(wù)器上不會(huì)出現(xiàn)同時(shí)損壞兩塊磁盤的情況,在只損壞一塊磁盤的情況下,如果能利用其他磁盤的數(shù)據(jù)恢復(fù)損壞磁盤的數(shù)據(jù),這樣在保證可靠性和性能的同時(shí),磁盤利用率也得到大幅提升。
在數(shù)據(jù)寫入磁盤的時(shí)候,將數(shù)據(jù)分成N-1份,并發(fā)寫入N-1塊磁盤,并在第N塊磁盤記錄校驗(yàn)數(shù)據(jù),任何一塊磁盤損壞(包括校驗(yàn)數(shù)據(jù)磁盤),都可以利用其他N-1塊磁盤的數(shù)據(jù)修復(fù)。
但是在數(shù)據(jù)修改較多的場景中,任何磁盤修改數(shù)據(jù)都會(huì)導(dǎo)致第N塊磁盤重寫校驗(yàn)數(shù)據(jù),頻繁寫入的后果是第N塊磁盤比其他磁盤容易損壞,需要頻繁更換,所以RAID3很少在實(shí)踐中使用。
RAID5
相比RAID3,更多被使用的方案是RAID5。
RAID5和RAID3很相似,但是校驗(yàn)數(shù)據(jù)不是寫入第N塊磁盤,而是螺旋式地寫入所有磁盤中。這樣校驗(yàn)數(shù)據(jù)的修改也被平均到所有磁盤上,避免RAID3頻繁寫壞一塊磁盤的情況。
RAID6
如果數(shù)據(jù)需要很高的可靠性,在出現(xiàn)同時(shí)損壞兩塊磁盤的情況下(或者運(yùn)維管理水平比較落后,壞了一塊磁盤但是遲遲沒有更換,導(dǎo)致又壞了一塊磁盤),仍然需要修復(fù)數(shù)據(jù),這時(shí)候可以使用RAID6。
RAID6和RAID5類似,但是數(shù)據(jù)只寫入N-2塊磁盤,并螺旋式地在兩塊磁盤中寫入校驗(yàn)信息(使用不同算法生成)。
在相同磁盤數(shù)目(N)的情況下,各種RAID技術(shù)的比較如下表所示。
RAID技術(shù)有硬件實(shí)現(xiàn),比如專用的RAID卡或者主板直接支持,也可以通過軟件實(shí)現(xiàn),在操作系統(tǒng)層面將多塊磁盤組成RAID,在邏輯視作一個(gè)訪問目錄。RAID技術(shù)在傳統(tǒng)關(guān)系數(shù)據(jù)庫及文件系統(tǒng)中應(yīng)用比較廣泛,是改善計(jì)算機(jī)存儲(chǔ)特性的重要手段。
RAID技術(shù)只是在單臺(tái)服務(wù)器的多塊磁盤上組成陣列,大數(shù)據(jù)需要更大規(guī)模的存儲(chǔ)空間和訪問速度。將RAID技術(shù)原理應(yīng)用到分布式服務(wù)器集群上,就形成了Hadoop分布式文件系統(tǒng)HDFS的架構(gòu)思想。