一纱控、分布式文件存儲(chǔ)的來源
在這個(gè)數(shù)據(jù)爆炸的時(shí)代辆毡,產(chǎn)生的數(shù)據(jù)量不斷地在攀升,從GB,TB,PB,ZB.挖掘其中數(shù)據(jù)的價(jià)值也是企業(yè)在不斷地追求的終極目標(biāo)甜害。但是要想對(duì)海量的數(shù)據(jù)進(jìn)行挖掘舶掖,首先要考慮的就是海量數(shù)據(jù)的存儲(chǔ)問題,比如Tb量級(jí)的數(shù)據(jù)尔店。
談到數(shù)據(jù)的存儲(chǔ)眨攘,則不得不說的是磁盤的數(shù)據(jù)讀寫速度問題。早在上個(gè)世紀(jì)90年代初期嚣州,普通硬盤的可以存儲(chǔ)的容量大概是1G左右鲫售,硬盤的讀取速度大概為4.4MB/s.讀取一張硬盤大概需要5分鐘時(shí)間,但是如今硬盤的容量都在1TB左右了,相比擴(kuò)展了近千倍避诽。但是硬盤的讀取速度大概是100MB/s龟虎。讀完一個(gè)硬盤所需要的時(shí)間大概是2.5個(gè)小時(shí)。所以如果是基于TB級(jí)別的數(shù)據(jù)進(jìn)行分析的話沙庐,光硬盤讀取完數(shù)據(jù)都要好幾天了鲤妥,更談不上計(jì)算分析了。那么該如何處理大數(shù)據(jù)的存儲(chǔ)拱雏,計(jì)算分析呢棉安?
二、 常用的分布式文件存儲(chǔ)
常見的分布式文件系統(tǒng)
GFS铸抑、HDFS贡耽、Lustre 、Ceph 鹊汛、GridFS 蒲赂、mogileFS、TFS刁憋、FastDFS等滥嘴。各自適用于不同的領(lǐng)域。它們都不是系統(tǒng)級(jí)的分布式文件系統(tǒng)至耻,而是應(yīng)用級(jí)的分布式文件存 儲(chǔ)服務(wù)若皱。
分布式文件存儲(chǔ)選型比較
知名開源分布式文件存儲(chǔ)
1.GFS(Google File System)
Google公司為了滿足本公司需求而開發(fā)的基于Linux的專有分布式文件系統(tǒng)镊叁。盡管Google公布了該系統(tǒng)的一些技術(shù)細(xì)節(jié),但Google并沒有將該系統(tǒng)的軟件部分作為開源軟件發(fā)布走触。
2.HDFS
Hadoop 實(shí)現(xiàn)了一個(gè)分布式文件系統(tǒng)(Hadoop Distributed File System)晦譬,簡(jiǎn)稱HDFS。 Hadoop是Apache Lucene創(chuàng)始人Doug Cutting開發(fā)的使用廣泛的文本搜索庫互广。它起源于Apache Nutch敛腌,
后者是一個(gè)開源的網(wǎng)絡(luò)搜索引擎,本身也是Luene項(xiàng)目的一部分惫皱。Aapche Hadoop架構(gòu)是MapReduce算法的一種開源應(yīng)用迎瞧,是Google開創(chuàng)其帝國(guó)的重要基石。
3.TFS
TFS(Taobao FileSystem)是一個(gè)高可擴(kuò)展逸吵、高可用凶硅、高性能、面向互聯(lián)網(wǎng)服務(wù)的分布式文件系統(tǒng)扫皱,主要針對(duì)海量的非結(jié)構(gòu)化數(shù)據(jù)足绅,它構(gòu)筑在普通的Linux機(jī)器 集群上,可為外部提供高可靠
和高并發(fā)的存儲(chǔ)訪問韩脑。TFS為淘寶提供海量小文件存儲(chǔ)氢妈,通常文件大小不超過1M,滿足了淘寶對(duì)小文件存儲(chǔ)的需求段多,被廣泛地應(yīng)用 在淘寶各項(xiàng)應(yīng)用中首量。它采用了HA架構(gòu)和平滑擴(kuò)容,保證了整個(gè)文件系統(tǒng)的可用性和擴(kuò)展性进苍。同時(shí)扁平化的數(shù)據(jù)組織結(jié)構(gòu)加缘,可將文件名映射到文件的物理地址,簡(jiǎn)化 了文件的訪問流程觉啊,一定程度上為TFS提供了良好的讀寫性能拣宏。
Google學(xué)術(shù)論文,這是眾多分布式文件系統(tǒng)的起源杠人,HDFS和TFS都是參考Google的GFS設(shè)計(jì)出來的勋乾。
三、
典型的分布式文件存儲(chǔ)的架構(gòu)設(shè)計(jì)
以hadoop的HDFS為例嗡善,畢竟開源的分布式文件存儲(chǔ)使用的最多辑莫。
Hadoop分布式文件系統(tǒng)(HDFS)被設(shè)計(jì)成適合運(yùn)行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)。HDFS是一個(gè)高度容錯(cuò)性的系統(tǒng)罩引,適合部署在廉價(jià)的機(jī)器上各吨。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用蜒程。HDFS放寬了一部分POSIX約束绅你,來實(shí)現(xiàn)流式讀取文件系統(tǒng)數(shù)據(jù)的目的。
大規(guī)模數(shù)據(jù)集
運(yùn)行在HDFS上的應(yīng)用具有很大的數(shù)據(jù)集昭躺。HDFS上的一個(gè)典型文件大小一般都在G字節(jié)至T字節(jié)忌锯。因此,HDFS被調(diào)節(jié)以支持大文件存儲(chǔ)领炫。它應(yīng)該能提供整體上高的數(shù)據(jù)傳輸帶寬偶垮,能在一個(gè)集群里擴(kuò)展到數(shù)百個(gè)節(jié)點(diǎn)。一個(gè)單一的HDFS實(shí)例應(yīng)該能支撐數(shù)以千萬計(jì)的文件帝洪。
簡(jiǎn)單的一致性模型
HDFS應(yīng)用需要一個(gè)“一次寫入多次讀取”的文件訪問模型似舵。一個(gè)文件經(jīng)過創(chuàng)建、寫入和關(guān)閉之后就不需要改變葱峡。這一假設(shè)簡(jiǎn)化了數(shù)據(jù)一致性問題砚哗,并且使高吞吐量的數(shù)據(jù)訪問成為可能。Map/Reduce應(yīng)用或者網(wǎng)絡(luò)爬蟲應(yīng)用都非常適合這個(gè)模型砰奕。目前還有計(jì)劃在將來擴(kuò)充這個(gè)模型蛛芥,使之支持文件的附加寫操作。
異構(gòu)軟硬件平臺(tái)間的可移植性
HDFS在設(shè)計(jì)的時(shí)候就考慮到平臺(tái)的可移植性军援。這種特性方便了HDFS作為大規(guī)模數(shù)據(jù)應(yīng)用平臺(tái)的推廣仅淑。
Namenode 和 Datanode
HDFS采用master/slave架構(gòu)。一個(gè)HDFS集群是由一個(gè)Namenode和一定數(shù)目的Datanodes組成胸哥。
Namenode是一個(gè)中心服務(wù)器涯竟,負(fù)責(zé)管理文件系統(tǒng)的名字空間(namespace)以及客戶端對(duì)文件的訪問。
集群中的Datanode一般是一個(gè)節(jié)點(diǎn)一個(gè)空厌,負(fù)責(zé)管理它所在節(jié)點(diǎn)上的存儲(chǔ)庐船。HDFS暴露了文件系統(tǒng)的名字空間,用戶能夠以文件的形式在上面存儲(chǔ)數(shù)據(jù)嘲更。從內(nèi)部看醉鳖,一個(gè)文件其實(shí)被分成一個(gè)或多個(gè)數(shù)據(jù)塊,這些塊存儲(chǔ)在一組Datanode上哮内。
Namenode執(zhí)行文件系統(tǒng)的名字空間操作盗棵,比如打開、關(guān)閉北发、重命名文件或目錄纹因。它也負(fù)責(zé)確定數(shù)據(jù)塊到具體Datanode節(jié)點(diǎn)的映射。Datanode負(fù)責(zé)處理文件系統(tǒng)客戶端的讀寫請(qǐng)求琳拨。在Namenode的統(tǒng)一調(diào)度下進(jìn)行數(shù)據(jù)塊的創(chuàng)建瞭恰、刪除和復(fù)制。
Namenode和Datanode被設(shè)計(jì)成可以在普通的商用機(jī)器上運(yùn)行狱庇。這些機(jī)器一般運(yùn)行著GNU/Linux操作系統(tǒng)(OS)惊畏。HDFS采用Java語言開發(fā)恶耽,因此任何支持Java的機(jī)器都可以部署Namenode或Datanode。由于采用了可移植性極強(qiáng)的Java語言颜启,使得HDFS可以部署到多種類型的機(jī)器上偷俭。一個(gè)典型的部署場(chǎng)景是一臺(tái)機(jī)器上只運(yùn)行一個(gè)Namenode實(shí)例,而集群中的其它機(jī)器分別運(yùn)行一個(gè)Datanode實(shí)例缰盏。這種架構(gòu)并不排斥在一臺(tái)機(jī)器上運(yùn)行多個(gè)Datanode涌萤,只不過這樣的情況比較少見。
四口猜、分布式存儲(chǔ)的未來
隨著現(xiàn)代社會(huì)從工業(yè)時(shí)代過渡到信息時(shí)代负溪,信息技術(shù)的發(fā)展以及人類生活的智能化帶來數(shù)據(jù)的爆炸性增長(zhǎng),數(shù)據(jù)正成為世界上最有價(jià)值的資源济炎。
根據(jù)物理存儲(chǔ)形態(tài)川抡,數(shù)據(jù)存儲(chǔ)可分為集中式存儲(chǔ)與分布式存儲(chǔ)兩種。集中式存儲(chǔ)以傳統(tǒng)存儲(chǔ)陣列(傳統(tǒng)存儲(chǔ))為主须尚,分布式存儲(chǔ)(云存儲(chǔ))以軟件定義存儲(chǔ)為主猖腕。
傳統(tǒng)存儲(chǔ)一向以可靠性高、穩(wěn)定性好恨闪,功能豐富而著稱倘感,但與此同時(shí),傳統(tǒng)存儲(chǔ)也暴露出橫向擴(kuò)展性差咙咽、價(jià)格昂貴老玛、數(shù)據(jù)連通困難等不足,容易形成數(shù)據(jù)孤島钧敞,導(dǎo)致數(shù)據(jù)中心管理和維護(hù)成本居高不下蜡豹。
分布式存儲(chǔ):將數(shù)據(jù)分散存儲(chǔ)在網(wǎng)絡(luò)上的多臺(tái)獨(dú)立設(shè)備上,一般采用標(biāo)準(zhǔn)x86服務(wù)器和網(wǎng)絡(luò)互聯(lián)溉苛,并在其上運(yùn)行相關(guān)存儲(chǔ)軟件镜廉,系統(tǒng)對(duì)外作為一個(gè)整體提供存儲(chǔ)服務(wù)。愚战。
總之娇唯,分布式文件存儲(chǔ),不僅提高了存儲(chǔ)空間的利用率寂玲,還實(shí)現(xiàn)了彈性擴(kuò)展塔插,降低了運(yùn)營(yíng)成本,避免了資源浪費(fèi)拓哟,更適合未來的數(shù)據(jù)爆炸時(shí)代場(chǎng)景想许。