7種分布式文件系統(tǒng)介紹_第1頁(yè)
7種分布式文件系統(tǒng)介紹_第2頁(yè)
7種分布式文件系統(tǒng)介紹_第3頁(yè)
7種分布式文件系統(tǒng)介紹_第4頁(yè)
7種分布式文件系統(tǒng)介紹_第5頁(yè)
已閱讀5頁(yè),還剩46頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、FastDFS7Fastdfs 簡(jiǎn)介7Fastdfs 系統(tǒng)結(jié)構(gòu)圖7FastDFS 和mogileFS 的對(duì)比8MogileFS10Mogilefs 簡(jiǎn)介10Mogilefs 組成部分10數(shù)據(jù)庫(kù)(MySQL)部分100)節(jié)點(diǎn)111).112) trackers(工具113)Client114)Mogilefs 的特點(diǎn)121.應(yīng)用層沒(méi)有特殊的組件要求122.3.無(wú)單點(diǎn)失敗12. 12自動(dòng)的文件4. “比RAID 好多了”125.傳輸中立,無(wú)特殊協(xié)議136.簡(jiǎn)單名空間137. 不用共享任何東西138. 不需要RAID139.碰到文件系統(tǒng)本身的不可知情況13HDFS14HDFS 簡(jiǎn)介14特點(diǎn)和目標(biāo)14

2、硬件故障141.142. 流式的數(shù)據(jù)簡(jiǎn)單一致性模型153.通信協(xié)議154.基本概念151.數(shù)據(jù)塊(block)152. 元數(shù)據(jù)節(jié)點(diǎn)(Namenode)和數(shù)據(jù)節(jié)點(diǎn)(datanode)162.1 這些結(jié)點(diǎn)的用途162.2 元數(shù)據(jù)節(jié)點(diǎn)文件夾結(jié)構(gòu)172.3 文件系統(tǒng)命名空間映像文件及修改日志182.4 從元數(shù)據(jù)節(jié)點(diǎn)的目錄結(jié)構(gòu)212.5 數(shù)據(jù)節(jié)點(diǎn)的目錄結(jié)構(gòu)21文件讀寫221.文件221.11.2文件示意圖22的過(guò)程23文件2. 寫入文件24寫入文件示意圖242.12.2寫入文件的過(guò)程24HDFS 不能提供的特點(diǎn)251. 低延時(shí)2. 大量. 25件263.多用戶寫,任意文件修改27TFS27TFS 簡(jiǎn)介2

3、7TFS 系統(tǒng)的基本情況28應(yīng)用規(guī)模28性能參數(shù)28TFS 的邏輯架構(gòu)圖29結(jié)合架構(gòu)圖做了進(jìn)一步說(shuō)明29TFS 的不足之處301、通用性方面。302、性能方面。303、用戶接口。304、代碼方面。305、技術(shù)文檔。316、件優(yōu)化。31MooseFS(簡(jiǎn)稱MFS)31MFS 簡(jiǎn)介31MFS 的優(yōu)點(diǎn)31網(wǎng)絡(luò)示意圖(如下)32MFS 文件系統(tǒng)結(jié)構(gòu)33. 33包含的 4 種u .管理服務(wù)器 managing server (master)33u 元數(shù)據(jù)日志服務(wù)器Mogger serve(Mogger)33u 數(shù)據(jù)服務(wù)器data servers (chunkservers)34u .客戶端 client

4、 computers34的協(xié)作過(guò)程354 種MFS 讀寫進(jìn)程35MFS 讀進(jìn)程35MFS 寫進(jìn)程36KFS38KFS 簡(jiǎn)介38KFS 的特性38擴(kuò)充381.自動(dòng)2.有效性38粒度383.文件. 384.還原5.負(fù)載平衡396.數(shù)據(jù)完整性397.文件寫入398.契約399.支持FUSE3910.支持C+,Java,Python 方式的調(diào)用4011.提供了豐富的工具程序40.4012.提供了啟動(dòng)和停止服務(wù)的KFS 高級(jí)特性40KFS 與HDFS 的比較401.體系結(jié)構(gòu)圖的比較402.特點(diǎn)的比較41Ceph42的目標(biāo)42Ceph系統(tǒng)42Ceph可以大致劃分為四部分42系統(tǒng)的概念架構(gòu)43Ceph架構(gòu)視

5、圖 1432.44架構(gòu)視圖組件44Ceph客戶端45Ceph元數(shù)據(jù)服務(wù)器47Ceph. 49Ceph 對(duì)象其他有趣功能49的地位和未來(lái)50Ceph其他分布式文件系統(tǒng)50展望未來(lái)50FastDFSFastdfs 簡(jiǎn)介 國(guó)人在mogileFS 基礎(chǔ)上進(jìn)行改進(jìn)的key-value 型文件系統(tǒng),不支持FUSE,提供比 mogileFS 更好的性能 輕量級(jí)(移植性比較強(qiáng),依賴性???)的開源分布式文件系統(tǒng) 解決的問(wèn)題:1.大容量的文件2.高并發(fā)的3.文件存取時(shí)的負(fù)載均衡 特色:實(shí)現(xiàn)了軟件方式的 RAID;支持服務(wù)器擴(kuò)充;支持相同的文件只存一份,節(jié)省了磁盤空間限制:只能通過(guò)client api 方式,不支持

6、posix 方式適合范圍:大中型用來(lái)文件(如圖片、文檔、音頻、音頻等),即以文件為載體的服務(wù)FastDFS 服務(wù)端有兩個(gè):()和節(jié)點(diǎn)(),跟蹤器總要做調(diào)度工作,在上做負(fù)載均衡的作用,且可用多臺(tái)服務(wù)器進(jìn)行均衡,這樣可避免單點(diǎn)故障的發(fā)生。文件支持HTTP通信協(xié)議:有專門協(xié)議,F(xiàn)astdfs 系統(tǒng)結(jié)構(gòu)圖FastDFS 和mogileFS 的對(duì)比1.FastDFS 完善程度較高,不需要二次開發(fā)即可直接使用;2.和MogileFs 相比,F(xiàn)astDFS 裁減了跟蹤用的數(shù)據(jù)庫(kù),只有兩個(gè)角3.在系統(tǒng)中增加任何的服務(wù)器都很容易:增加tracker 服務(wù)器色:tracker 和storage。FastDFS 的

7、架構(gòu)既簡(jiǎn)化了系統(tǒng),同時(shí)也消除了性能瓶頸;4. FastDFS 比MogileFS 更高效。表現(xiàn)在如下幾個(gè)方面:5. FastDFS 有著詳細(xì)的設(shè)計(jì)和使用文檔,而MogileFS 的文檔相對(duì)比較缺乏。6. FastDFS 的日志非常詳細(xì),系統(tǒng)運(yùn)行時(shí)發(fā)生的任何錯(cuò)誤信息7. FastDFS 還對(duì)文件附加屬性(即meta data,如文件大小、圖都會(huì)到日志文件中,當(dāng)出現(xiàn)問(wèn)題時(shí)方便管理員錯(cuò)誤所在。1) 參見(jiàn)上面的第 2 點(diǎn),F(xiàn)astDFS 和MogileFS 相比,沒(méi)有文件索引數(shù)據(jù)庫(kù),F(xiàn)astDFS 整體性能更高;2) 從采用的開發(fā)語(yǔ)言上看,F(xiàn)astDFS 比MogileFS 更底層、更高效。FastD

8、FS 用C 語(yǔ)言編寫,代碼量不到 2 ,沒(méi)有依賴其他開源軟件或程序包,安裝和部署特別簡(jiǎn)潔;而MogileFS 用 perl 編寫;3) FastDFS 直接使用socket 通信方式,相對(duì)于 MogileFS 的H TTP 方式,效率更高。并且FastDFS 使用sendfile 傳輸文件,采用了內(nèi)存零拷貝,系統(tǒng)開銷更 件傳輸效率更高。時(shí),只需要修改 storage 和client 的配置文件(增加一行 tra cker 配置);增加storage 服務(wù)器時(shí),通常不需要修改任何配置文件,系統(tǒng)會(huì)自動(dòng)將該卷中已有文件到該服務(wù)器;片寬度、高度等)進(jìn)行存取,應(yīng)用不需要使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)這些信息。8. F

9、astDFS 從 V1.14 開始支持相同文件內(nèi)容只保存一份,這樣可以節(jié)省空間,提高文件性能。MogileFSMogilefs 簡(jiǎn)介 一種分布式文件系統(tǒng),可支持文件自動(dòng)備份的功能,提供可用性和擴(kuò)展性,用 Perl 語(yǔ)言編寫,由于有依賴模塊的問(wèn)題,安裝過(guò)程需要其他庫(kù)和模塊的支持,安裝不算容易。key-value文件系統(tǒng),不支持 FUSE,應(yīng)用程序它需要API,主要在web 領(lǐng)域處理海量小圖片,效率高,適用性:不支持對(duì)一個(gè)文件的隨機(jī)讀寫,只適合做一部分應(yīng)用。比如圖片服務(wù),靜態(tài)html 服務(wù),即文件寫入后基本上那個(gè)不需要修改的應(yīng)用。Mogilefs 組成部分0)數(shù)據(jù)庫(kù)(MySQL)部分mogdbse

10、tup 程序可用來(lái)初始化數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)保存了Mogilefs 的所有元數(shù)據(jù),你可以單獨(dú)拿數(shù)據(jù)庫(kù)服務(wù)器來(lái)做,也可以跟其他程序跑在一起,數(shù)據(jù)庫(kù)部分非常重要,類似郵件系統(tǒng)的認(rèn)證中心那么重要,如果這兒掛了,那么整個(gè) Mogilefs將處于不可用狀態(tài)。因此最好是HA 結(jié)構(gòu)。1)節(jié)點(diǎn)mogstored 程序的啟動(dòng)將使本機(jī)成為一個(gè)節(jié)點(diǎn)。啟動(dòng)時(shí)默認(rèn)去讀/etc/mogilefs/mogstored.conf ,具體配置可以參考配置部分。mogstored 啟動(dòng)后,便可以通過(guò)mogadm 增到cluster 中。一臺(tái)加這臺(tái)可以只運(yùn)行一個(gè)mogstored 作為節(jié)點(diǎn)即可,也可以同時(shí)運(yùn)行其他程序。2)tracker

11、s()mogilefsd 即trackers 程序,類似 mogilefs 的wiki 上介紹的,trackers 做了很多工作,Replication ,Deletion,Query,Reaper,Monitor 等等。mogadm,mogtool 的所有操作都要跟trackers 打交道,Client 的一些操作也需要定義好trackers,因此最好同時(shí)運(yùn)行多個(gè)trackers 來(lái)做負(fù)載均衡。trackers 也可以只運(yùn)行在一臺(tái)上,也可以跟其他程序運(yùn)行在一起,只要你配置好他的配置文件即可,默認(rèn)在/etc/mogilefs/mogilefsd.conf。3)工具主要就是mogadm,mogt

12、ool 這兩個(gè)工具了,用來(lái)在命令行下控制整個(gè)mogilefs 系統(tǒng)以及查看狀態(tài)等等。4)ClientClient 實(shí)際上是一個(gè) Perl 的pm,可以寫程序調(diào)用該pm 來(lái)使用mogilefs 系統(tǒng),對(duì)整個(gè)系統(tǒng)進(jìn)行讀寫操作。Mogilefs 的特點(diǎn)1. 應(yīng)用層沒(méi)有特殊的組件要求2. 無(wú)單點(diǎn)失敗MogileFS 啟動(dòng)的三個(gè)組件(節(jié)點(diǎn)、跟蹤用的數(shù)據(jù)庫(kù)),均可運(yùn)行在多個(gè)上,因此沒(méi)有單點(diǎn)失敗。(你也可以將和節(jié)點(diǎn)運(yùn)行在同一臺(tái)上,這樣你就沒(méi)有必要用 4 臺(tái))推薦至少兩臺(tái)。3. 自動(dòng)的文件基于不同的文件“分類”,文件可以被自動(dòng)的到多個(gè)有足夠空間的節(jié)點(diǎn)上,這樣可以滿足這個(gè)“類別”的最少要求。比,你可以設(shè)置原始的

13、 JPEG 圖片需要如你有一個(gè)圖片至少三份,但實(shí)際只有 1 or 2 分拷貝,如果丟失了數(shù)據(jù),那么 Mogile 可以重新建立遺失的拷貝數(shù)。用這種辦法,MogileFS (不做 RAID)可以節(jié)約磁盤,否則你將同樣的拷貝多份,完全沒(méi)有必要。4. “比RAID 好多了”區(qū)域網(wǎng)絡(luò)的 RAID(non-SAN RAID)的建立中,磁在一個(gè)非盤是冗余的,但主機(jī)不是,如果你整個(gè)壞了,那么文件也將不能o MogileFS 在不同的之間進(jìn)行文件,因此文件始終是可用的。5. 傳輸中立,無(wú)特殊協(xié)議MogileFS 客戶端可以通過(guò) NFS 或 HTTP 來(lái)和 MogileFS 的節(jié)點(diǎn)來(lái)通信,但首先需要告知一下。6

14、.簡(jiǎn)單名空間文件通過(guò)一個(gè)給定的 key 來(lái)確定,是一個(gè)全局名空間。你可以生成多個(gè)命名空間,只要你愿意,但是這樣可能在同一 MogileFSkey。中,會(huì)造成7.不用共享任何東西MogileFS 不需要依靠昂貴的 SAN 來(lái)共享磁盤,每個(gè)只用維護(hù)好的磁盤。8.不需要RAID在MogileFS 中的磁盤可以是做了RAID 的也可以是沒(méi)有,如果是為了安全性著想的話RAID 沒(méi)有必要買了,因?yàn)镸ogileFS 已經(jīng)提供了。9.碰到文件系統(tǒng)本身的不可知情況在 MogileFS 中的節(jié)點(diǎn)的磁盤可以被格式化成多種格(ext3,reiserFS 等等)。MogilesFS 會(huì)做內(nèi)部目錄的,所以它碰到文件系統(tǒng)本

15、身的一些限制,比如一個(gè)目錄中的最大文件數(shù)。你可以放心的使用。HDFSHDFS 簡(jiǎn)介HDFS 全稱是 Hadoop Distributed FileSystem。目前 HDFS 支持的使用接口除了Java 的還有,Thrift、C、FUSE、WebDAV、HTTP 等。HDFS 主要是Namenode(master)和一系列的 Datanode(workers)。特點(diǎn)和目標(biāo)HDFS 使應(yīng)用程序流式地它們的數(shù)據(jù)集。HDFS 是設(shè)計(jì)成適合批量處理的,而不是用戶交互式的。所以其重視數(shù)據(jù)吞吐量,而不1. 硬件故障硬件故障是計(jì)算機(jī)常見(jiàn)的問(wèn)題。整個(gè) HDFS 系統(tǒng)由數(shù)百或數(shù)千個(gè)存儲(chǔ)著文件數(shù)據(jù)片斷的服務(wù)器組成

16、。實(shí)際上它里面有非常巨大的組成部分,每一個(gè)組成部分都會(huì)頻繁地出現(xiàn)故障,這就意味著 HDFS 里的一些組成部分總是失效的,因此,故障的檢測(cè)和自動(dòng)快速恢復(fù)是 HDFS 一個(gè) 的目標(biāo)。2. 流式的數(shù)據(jù)的反應(yīng)速度。亦即HDFS是為以流的方式存取大文件而是數(shù)據(jù)設(shè)計(jì)的。適用于幾百M(fèi)B,GB以及TB,并寫一次讀多次的場(chǎng)合。而對(duì)于低延時(shí)數(shù)據(jù)、大量件、同時(shí)寫和任意的文件修改,則并不是十分適合。所有的通信協(xié)議都是在 TCP/IP 協(xié)議之上的。一個(gè)客戶確的配置端口的名字節(jié)點(diǎn)建立連接之后,它和名字節(jié)點(diǎn)的協(xié)議是 ClientProtocal 。數(shù)據(jù)節(jié)點(diǎn)和名字節(jié)點(diǎn)之間用DatanodeProtocal。基本概念1. 數(shù)據(jù)

17、塊(block)Ø HDFS(Hadoop Distributed File System)默認(rèn)的最基本的存是 64M 的數(shù)據(jù)塊。儲(chǔ)Ø 和普通文件系統(tǒng)相同的是,HDFS 中的文件是被分成 64M 一塊的數(shù)據(jù)塊的。3. 簡(jiǎn)單一致性模型大部分的 HDFS 程序?qū)ξ募僮餍枰氖且淮螌懭耄啻蔚摹R粋€(gè)文件一旦創(chuàng)建、寫入、關(guān)閉之后就不需要修改了。這個(gè)假定簡(jiǎn)化了數(shù)據(jù)一致的問(wèn)題和高吞吐量的數(shù)據(jù)。4. 通信協(xié)議Ø 不同于普通文件系統(tǒng)的是,HDFS 中,如果一個(gè)文件小于一個(gè)數(shù)據(jù)塊的大小,并不占用空間。之所以將默認(rèn)的block 大小設(shè)置為 64MB整個(gè)數(shù)據(jù)塊這么大,是因?yàn)閎lock

18、-sized 對(duì)于文件很有幫助,同件更使傳輸?shù)臅r(shí)間遠(yuǎn)大于文件尋找的時(shí)間,這樣可以最大化地減少文件的時(shí)間在整個(gè)文件獲取總時(shí)間中的比例 。2. 元數(shù)據(jù)節(jié)點(diǎn)(Namenode)和數(shù)據(jù)節(jié)點(diǎn)(datanode)2.1 這些結(jié)點(diǎn)的用途2.1.1 元數(shù)據(jù)節(jié)點(diǎn)用來(lái)管理文件系統(tǒng)名空間1)其將所有的文件和文件夾的元數(shù)據(jù)保存在一個(gè)文件系統(tǒng)樹中。2)這些信息也會(huì)在硬盤上保存成以下文件:命名空間鏡像(namespace image)及修改日志(edit log)3)其還保存了一個(gè)文件包括哪些數(shù)據(jù)塊,分布在哪些數(shù)據(jù)節(jié)點(diǎn)上。然而這些信息并不在硬盤上,而是在系統(tǒng)啟動(dòng)的時(shí)候從數(shù)據(jù)節(jié)點(diǎn)收集而成的。2.1.2 數(shù)據(jù)節(jié)點(diǎn)是文件系統(tǒng)中

19、真正數(shù)據(jù)的地方。1)客戶端(client)或者元數(shù)據(jù)信息(namenode)可以向數(shù)據(jù)節(jié)點(diǎn)請(qǐng)求寫入或者讀出數(shù)據(jù)塊。2) 其周期性的向元數(shù)據(jù)節(jié)點(diǎn)回報(bào)其的數(shù)據(jù)塊信息。2.1.3從元數(shù)據(jù)節(jié)點(diǎn)(secondary namenode)1)從元數(shù)據(jù)節(jié)點(diǎn)并不是元數(shù)據(jù)節(jié)點(diǎn)出現(xiàn)問(wèn)題時(shí)候的備用節(jié)點(diǎn),它和元數(shù)據(jù)節(jié)點(diǎn)負(fù)責(zé)不同的事情。2)其主要功能就是周期性將元數(shù)據(jù)節(jié)點(diǎn)名空間鏡像文件和修改日志合并,以防日志文件過(guò)大。這點(diǎn)在下面會(huì)相信敘述。3)合并過(guò)后名空間鏡像文件也在從元數(shù)據(jù)節(jié)點(diǎn)保存了一份,以防元數(shù)據(jù)節(jié)點(diǎn)失敗的時(shí)候,可以恢復(fù)。2.2 元數(shù)據(jù)節(jié)點(diǎn)文件夾結(jié)構(gòu)· VERSION 文件是java properties

20、文件,保存了HDFS 的版本號(hào)。layoutVersion 是一個(gè)負(fù)整數(shù),保存了HDFS 的持續(xù)化在硬盤o上的數(shù)據(jù)結(jié)構(gòu)的格式版本號(hào)。namespaceID 是文件系統(tǒng)的o唯一標(biāo)識(shí)符,是在文件系統(tǒng)初次格式化時(shí)生成的。cTime 此處為 0storageType 表示此文件夾中oo保存的是元數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)結(jié)構(gòu)。2.3 文件系統(tǒng)命名空間映像文件及修改日志· 當(dāng)文件系統(tǒng)客戶端(client)進(jìn)行寫操作時(shí),首先把它在修改日志中(edit log)· 元數(shù)據(jù)節(jié)點(diǎn)在內(nèi)存中保存了文件系統(tǒng)的元數(shù)據(jù)信息。在了修改日志后,元數(shù)據(jù)節(jié)點(diǎn)則修改內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)。namespaceID=12327370

21、62 cTime=0 storageType=NAME_NODE layoutVersion=-18· 每次的寫操作之前,修改日志都會(huì)同步(sync)到文件系統(tǒng)。· fsimage 文件,也即命名空間映像文件,是內(nèi)存中的元數(shù)據(jù)在硬盤上的checkpoint,它是一種序列化的格式,并不能夠在硬盤上直接修改。· 同數(shù)據(jù)的機(jī)制相似,當(dāng)元數(shù)據(jù)節(jié)點(diǎn)失敗時(shí),則最新checkpoint 的元數(shù)據(jù)信息從fsimage 加載到內(nèi)存中,然后逐一重新執(zhí)行修改日志中的操作。· 從元數(shù)據(jù)節(jié)點(diǎn)就是用來(lái)幫助元數(shù)據(jù)節(jié)點(diǎn)將內(nèi)存中的元數(shù)據(jù)信息checkpoint 到硬盤上的· c

22、heckpoint 的過(guò)程如下:o 從元數(shù)據(jù)節(jié)點(diǎn)通知元數(shù)據(jù)節(jié)點(diǎn)生成新的日志文件,以后的日志都寫到新的日志文件中。o 從元數(shù)據(jù)節(jié)點(diǎn)用 http get 從元數(shù)據(jù)節(jié)點(diǎn)獲得fsimage 文件及舊的日志文件。o 從元數(shù)據(jù)節(jié)點(diǎn)將fsimage 文件加載到內(nèi)存中,并執(zhí)行日志文件中的操作,然后生成新的fsimage 文件。從元數(shù)據(jù)節(jié)點(diǎn)獎(jiǎng)新的fsimage文件用 http post 傳回元數(shù)據(jù)o節(jié)點(diǎn)元數(shù)據(jù)節(jié)點(diǎn)可以將舊的ofsimage 文件及舊的日志文件,換為新的fsimage 文件和新的日志文件(第一的),然后更新fstime 文件,寫入此次checkpoint 的時(shí)間。這樣元數(shù)據(jù)節(jié)點(diǎn)中的fsimage文

23、件保存了最新的checkpointo的元數(shù)據(jù)信息,日志文件也重新開始,變的很大了。2.4 從元數(shù)據(jù)節(jié)點(diǎn)的目錄結(jié)構(gòu)2.5 數(shù)據(jù)節(jié)點(diǎn)的目錄結(jié)構(gòu)數(shù)據(jù)節(jié)點(diǎn)的 VERSION 文件格式如下:blk_<id>保存的是 HDFS 的數(shù)據(jù)塊,其中保存了具體的二進(jìn)制數(shù)據(jù)。blk_<id>.meta 保存的是數(shù)據(jù)塊的屬性信息:版本信息,類型信息,和 checksum當(dāng)一個(gè)目錄中的數(shù)據(jù)塊到達(dá)一定數(shù)量的時(shí)候,則創(chuàng)建子文件夾來(lái)保存數(shù)據(jù)塊及數(shù)據(jù)塊屬性文件讀寫1.文件1.1文件示意圖namespaceID=1232737062storageID=DS-1640411682--500

24、10-1254997319480cTime=0 storageType=DATA_NODE layoutVersion=-181.2 文件的過(guò)程使用 HDFS 提供的客戶端開發(fā)庫(kù),的 Namenode 發(fā)起 RPC(Remote ProcedureCall)請(qǐng)求;Namenode 會(huì)視情況返回文件的部分或者全部block 列表,對(duì)于每個(gè)block,Namenode 都會(huì)返回有該block 拷貝的datanode 地址;客戶端開發(fā)庫(kù)會(huì)選取離客戶端最接近的datanode 來(lái)block;完當(dāng)前 block 的數(shù)據(jù)后,關(guān)閉與當(dāng)前的 datanode 連接,并為讀取下一個(gè)block 尋找最佳的data

25、node;當(dāng)讀完列表的block 后,且文件還沒(méi)有結(jié)束,客戶端開發(fā)庫(kù)會(huì)繼續(xù)向Namenode 獲取下一批的block 列表。完一個(gè) block 都會(huì)進(jìn)行 checksum 驗(yàn)證,如果datanode 時(shí)出現(xiàn)錯(cuò)誤,客戶端會(huì)通知Namenode,然后再?gòu)南乱粋€(gè)擁有該block拷貝的datanode 繼續(xù)讀。2. 寫入文件2.1寫入文件示意圖2.2寫入文件的過(guò)程1)使用 HDFS 提供的客戶端開發(fā)庫(kù),的Namenode 發(fā)起RPC請(qǐng)求;2)Namenode 會(huì)檢查要?jiǎng)?chuàng)建的文件是否已經(jīng)存在,創(chuàng)建者是否限進(jìn)行操作,則會(huì)為文件創(chuàng)建一個(gè),否則會(huì)讓客戶端拋出異常;3)當(dāng)客戶端開始寫入文件的時(shí)候,開發(fā)庫(kù)會(huì)將文件

26、切分成多個(gè)packets,并在內(nèi)部以"data queue"的形式管理這些 packets,并向Namenode 申請(qǐng)新的 blocks , 獲取用來(lái)replicas 的合適的datanodes 列表,列表的大小根據(jù)在 Namenode 中對(duì)replication 的設(shè)置而定。4)開始以 pipeline(管道)的形式將 packet 寫入所有的replicas 中。開發(fā)庫(kù)把 packet 以流的方式寫入第一個(gè) datanode,該 datanode 把該 packet之后, 再將其傳遞給在此 pipeline 中的下一個(gè)datanode,直到最后一個(gè) datanode,這

27、種寫數(shù)據(jù)的流水線的形式。5)最后一個(gè) datanode之后會(huì)返回一個(gè) ack packet,在pipeline 里傳遞至客戶端, 在客戶端的開發(fā)庫(kù)內(nèi)部維護(hù)著"ackqueue",收到 datanode 返回的 ack packet 后會(huì)從"ack queue"移除相應(yīng)的packet。如果傳輸過(guò)程中,有某個(gè) datanode 出現(xiàn)了故障,那么當(dāng)前的 pipeline會(huì)被關(guān)閉,出現(xiàn)故障的 datanode 會(huì)從當(dāng)前的pipeline 中移除,剩余的block 會(huì)繼續(xù)剩下的datanode 中繼續(xù)以pipeline 的形式傳輸,同時(shí)Namenode 會(huì)分配一個(gè)

28、新的datanode,保持 replicas 設(shè)定的數(shù)量。HDFS 不能提供的特點(diǎn)1.低延時(shí)HDFS 不太適合于那些要求低延時(shí)(數(shù)十毫秒的應(yīng)用程序,因?yàn)镠DFS 是設(shè)計(jì)用于大吞吐量數(shù)據(jù)的,這是以一定延時(shí)為代價(jià)的。HDFS 是單Master 的,所有的對(duì)文件的請(qǐng)求都要經(jīng)過(guò)它,當(dāng)請(qǐng)求多時(shí),肯定會(huì)有延時(shí)。當(dāng)前,對(duì)于那些有低延時(shí)要求的應(yīng)用程序,HBase是一個(gè)更好的選擇?,F(xiàn)在 HBase 的版本是 0.20,相對(duì)于以前的版就是 goes real time。本,在性能上有了很大的提升,它的使用緩存或多 master 設(shè)計(jì)可以降低 client 的數(shù)據(jù)請(qǐng)求,以減少延時(shí)。還有就是對(duì) HDFS 系統(tǒng)內(nèi)部的修

29、改,這就得權(quán)衡大吞,HDFS 不是萬(wàn)能的銀彈。吐量與低2.大量件因?yàn)镹amenode 把文件系統(tǒng)的元數(shù)據(jù)放置在內(nèi)存中,所以文件系統(tǒng)所能容納的文件數(shù)目是由Namenode 的內(nèi)存大小來(lái)決定。一般來(lái)說(shuō),每一個(gè)文件、文件夾和 Block 需要占據(jù) 150 字節(jié)左右的空間, 所以,如果你有 100 萬(wàn)個(gè)文件,每一個(gè)占據(jù)一個(gè) Block,你就至少需要 300MB 內(nèi)存。當(dāng)前來(lái)說(shuō),數(shù)百萬(wàn)的文件還是可行的,當(dāng)擴(kuò)展到數(shù)十億時(shí),對(duì)于當(dāng)前的硬件水平來(lái)說(shuō)就沒(méi)法實(shí)現(xiàn)了。還有一個(gè)問(wèn)題就是,因?yàn)?Map task 的數(shù)量是由 splits 來(lái)決定的,所以用 MR 處理件時(shí),就會(huì)產(chǎn)生過(guò)多的 Map task,線程管理開銷將

30、會(huì)增大量的加作業(yè)時(shí)間。舉個(gè)例子,處理 10000M 的文件,若每個(gè) split 為 1M, 那就會(huì)有 10000 個(gè)Map tasks,會(huì)有很大的線程開銷;若每個(gè) split為 100M,則只有 100 個(gè) Map tasks,每個(gè)Map task 將會(huì)有的事情做,而線程的管理開銷也將減小很多。要想讓HDFS 能處理好件,有不少方法:1、利用 SequenceFile、MapFile、Har 等方式歸檔件歸檔起來(lái)管理,HBase 就是基于件,這個(gè)方法的原理就是把此的。對(duì)于這種方法,如果想找回原來(lái)的件內(nèi)容,那就必須得知道與歸檔文件的關(guān)系。2、橫向擴(kuò)展,一個(gè) Hadoop 集群能管理的件有限,那就

31、把幾個(gè)Hadoop 集群拖在一個(gè)虛擬服務(wù)器后面,形成一個(gè)大的 Hadoop集群。也是這么干過(guò)的。3、多Master 設(shè)計(jì),這個(gè)作用顯而易見(jiàn)了。正在研發(fā)中的GFSII 也要改為分布式多Master 設(shè)計(jì),還支持 Master 的Failover,而且Block 大小改為 1M,有意要調(diào)優(yōu)處理件啊。附帶個(gè) Alibaba DFS 的設(shè)計(jì),也是多 Master 設(shè)計(jì),它把 Metadata了,由多個(gè) Metadata的和管理節(jié)點(diǎn)和一個(gè)Master 節(jié)點(diǎn)組成。3.多用戶寫,任意文件修改目前 Hadoop 只支持單用戶寫,不支持并發(fā)多用戶寫。可以使用 Append 操作在文件的末尾添加數(shù)據(jù),但不支持在文

32、件的任意位置進(jìn)行修改。這些特性可能會(huì)在將來(lái)的版本中加入,但是這些特性的加入將會(huì)降低Hadoop 的效率。利用 Chubby、ZooKeeper 之類的分布式協(xié)調(diào)服務(wù)來(lái)解決一致性問(wèn)題。TFSTFS 簡(jiǎn)介File System(TFS)作為淘寶的分布式文件系統(tǒng),是一個(gè)擴(kuò)展、用、高性能、面向互聯(lián)網(wǎng)服務(wù)的分布式文件系統(tǒng),其設(shè)計(jì)目標(biāo)是“支持海量的非結(jié)構(gòu)化數(shù)據(jù)”。海量件的隨機(jī)讀寫性能做了特殊優(yōu)化,承載著淘寶主站所有圖片、商品描述等數(shù)據(jù)。TFS 系統(tǒng)的基本情況1.完全扁平化的數(shù)據(jù)組織結(jié)構(gòu),拋棄了傳統(tǒng)文件系統(tǒng)的目錄結(jié)構(gòu)。2.在塊設(shè)備基礎(chǔ)上建立自有的文件系統(tǒng),減少 EXT3 等文件系統(tǒng)數(shù)據(jù)碎片帶來(lái)的性能損耗。3

33、.單進(jìn)程管理單塊磁盤的方式,摒除RAID5 機(jī)制。4.帶有 HA 機(jī)制的節(jié)點(diǎn),在安全穩(wěn)定和性能復(fù)雜度之間取得平衡。5.盡量縮減元數(shù)據(jù)大小,將元數(shù)據(jù)全部加載入內(nèi)存,提升速度。6.跨機(jī)架和IDC 的負(fù)載均衡和冗余安全策略。7.完全平滑擴(kuò)容。應(yīng)用規(guī)模達(dá)到“數(shù)百臺(tái)PCServer,PB 級(jí)數(shù)據(jù)量,百億數(shù)據(jù)級(jí)別”性能參數(shù)TFS 在淘寶的部署環(huán)境中前端有兩層緩沖,到達(dá) TFS 系統(tǒng)的請(qǐng)求非常離散,所以 TFS 內(nèi)部是沒(méi)有任何數(shù)據(jù)的內(nèi)存緩沖的,包括傳統(tǒng)文件系統(tǒng)的內(nèi)存緩沖也不存在基本上可以達(dá)到單塊磁盤隨機(jī)IOPS(即I/O per second)理論最大值的 60%左右,整機(jī)的輸出隨增加而線性增加。TFS 的

34、邏輯架構(gòu)圖結(jié)合架構(gòu)圖做了進(jìn)一步說(shuō)明1.TFS 尚未對(duì)最終用戶提供傳統(tǒng)文件系統(tǒng)API , 需要通過(guò)TFSClient 進(jìn)行接口,現(xiàn)有JAVA、JNI、C、PHP 的客戶端2.TFS 的NameServer 作為中心節(jié)點(diǎn),所有數(shù)據(jù)節(jié)點(diǎn)的運(yùn)行狀況,負(fù)責(zé)讀寫調(diào)度的負(fù)載均衡,同時(shí)管理一級(jí)元數(shù)據(jù)用來(lái)幫助客戶端需要的數(shù)據(jù)節(jié)點(diǎn)3.TFS 的DataServer 作為數(shù)據(jù)節(jié)點(diǎn),負(fù)責(zé)數(shù)據(jù)實(shí)際發(fā)生的負(fù)載均衡和數(shù)據(jù)冗余,同時(shí)管理元數(shù)據(jù)幫助客戶端獲取真實(shí)的業(yè)務(wù)數(shù)據(jù)。TFS 的不足之處TFS 與目前一些主流的開源分布式文件系統(tǒng)設(shè)計(jì)思想是相似的,如HDFS, MFS, KFS, Sector。其擴(kuò)展、用性是很好的,然而也存

35、在一定不足,如通用性、用戶接口、性能等方面。1、通用性方面。TFS 目前只支持件的應(yīng)用,大文件應(yīng)用是不支持的。對(duì)小圖片、網(wǎng)頁(yè)等幾十 KB 內(nèi)的數(shù)據(jù)點(diǎn)播 VOD、文件非常適用,但對(duì)等應(yīng)用暫時(shí)無(wú)法適用。2、性能方面。Client 寫文件是同步處理的,需要等所有 dataserver 寫后才能返回,這很是影響性能。3、用戶接口。TFS 沒(méi)有提供POSIX 接口,提供的 API 也與標(biāo)準(zhǔn)接口不一致。另外,TFS 有的文件命名規(guī)則,如果用戶使用自定義的文件名,則需要自已維護(hù)文件名與TFS 文件名之間的關(guān)系。4、代碼方面。使用了C+實(shí)現(xiàn),感覺(jué)相對(duì)臃腫一點(diǎn),如果用純C 實(shí)現(xiàn)應(yīng)該會(huì)簡(jiǎn)潔不少。代碼注釋基本沒(méi)有,

36、代碼質(zhì)量也不是很好。5、技術(shù)文檔。有一些文檔,但顯然非常不夠深入和全面。6、件優(yōu)化。稱海量件的隨機(jī)讀寫性能做了特殊優(yōu)化,現(xiàn)在只看件存放與一個(gè)Block 中,這與 Squid 中的COSS 原理到把眾多相似。其他特殊優(yōu)化措施未知,LOFS(Lost of small files)是個(gè)難點(diǎn)問(wèn)題。MooseFS(簡(jiǎn)稱 MFS)MFS 簡(jiǎn)介MFS 是一款網(wǎng)絡(luò)分布式 文件系統(tǒng)。它把數(shù)據(jù)分散在多臺(tái)服務(wù)器上,但對(duì)于用戶來(lái)講,看到的只是一個(gè)源。MFS 也像其他類unix 文件系統(tǒng)一樣,包含了層級(jí)結(jié)構(gòu)(目錄樹),著文 件屬性(權(quán)限,最后和修改時(shí)間),可以創(chuàng)建特殊的文件(塊設(shè)備,字符設(shè)備,管道,套接字),符號(hào),硬

37、。MFS 的優(yōu)點(diǎn)1.開源2.通用文件系統(tǒng),不需要修改上層應(yīng)用就可以使用3.可以擴(kuò)容,體系架構(gòu)可伸縮性極強(qiáng)4.部署簡(jiǎn)單5.體系架構(gòu)用,所有組件無(wú)單點(diǎn)故障6.文件對(duì)象用,可任意設(shè)置文件的冗余程度,而絕對(duì)影響讀或?qū)懙男阅?,只?huì)。7.提供windows 回收站的功能8.提供類似java 語(yǔ)言的回收(GC)9.提供netapp,emc,ibm 等商業(yè)的snapshot 特性。10.GFS 的一個(gè)c 實(shí)現(xiàn)11.提供web gui接口12.提高隨機(jī)讀或?qū)懙男?3.提高海量件的讀寫效率網(wǎng)絡(luò)示意圖(如下)MFS 文件系統(tǒng)結(jié)構(gòu)包含的 4 種u 管理服務(wù)器managing server (master)負(fù)責(zé)各個(gè)數(shù)

38、據(jù)服務(wù)器的管理,文件讀寫調(diào)度,文件空間回收以及恢復(fù).多節(jié)點(diǎn)拷貝u 元數(shù)據(jù)日志服務(wù)器Mogger serve(Mogger)負(fù) 責(zé) 備 份 master 服 務(wù) 器 的 變 化 日 志 文 件 , 文 件 類 型 為changelog_ml.*.mfs,以便于在 master server 出問(wèn)題的時(shí)候接替其進(jìn)行工作。元數(shù)據(jù)在Master 的內(nèi)存中,同時(shí)會(huì)保存一份在硬盤上(作為臨時(shí)更新的二進(jìn)制文件和立即更新的增量日志方式)u 數(shù)據(jù)服務(wù)器data servers (chunkservers)負(fù)責(zé)連接管理服務(wù)器,聽從管理服務(wù)器調(diào)度,提供空間,并為客戶提供數(shù)據(jù)傳輸. 數(shù)據(jù)文件被分成 64Mb 大小的塊

39、,每個(gè)塊被分散的存塊服務(wù)器的硬盤上,同時(shí)塊服務(wù)器上還會(huì)其他塊服務(wù)器上塊文件的副本。u 客戶端client computers通過(guò) fuse 內(nèi)核接口掛接管理服務(wù)器上所管理的數(shù)據(jù)服務(wù)器,.看起來(lái)共享的文件系統(tǒng)和本地 unix 文件系統(tǒng)使用一樣的效果.客戶端只需要mount 上MFS 就可像操作其他文件系統(tǒng)的文件一樣操作MFS 中的文件了。操作系統(tǒng)的內(nèi)核把對(duì)文件的操作傳遞給 FUSE 模塊,這個(gè)模塊用來(lái)和mfsmount 進(jìn)程進(jìn)行通信。mfsmount 進(jìn)程后續(xù)通過(guò)網(wǎng)絡(luò)和管理服務(wù)器和數(shù)據(jù)塊服務(wù)器進(jìn)行通信。整個(gè)過(guò)程對(duì)用戶來(lái)講是透明的。4 種的協(xié)作過(guò)程在對(duì)所有元數(shù)據(jù)文件(文件創(chuàng)建,文件刪除,讀文件夾,

40、和更改屬性,改變文件大小等等涉及到在 MFSMETA 上的特殊文件)進(jìn)行操作的過(guò)程中,mfsmount 和管理服務(wù)器建立通信,然后開始和寫入數(shù)據(jù)。數(shù)據(jù)到所有數(shù)據(jù)服務(wù)器中有相關(guān)文件塊的一臺(tái)上。在完成寫操作之后,管理服務(wù)器收到文件長(zhǎng)度和最后修改時(shí)間的更新信息。而且,數(shù)據(jù)服務(wù)器之間進(jìn)行通信,保證每個(gè)塊在不同的塊服務(wù)器上都有拷貝。因?yàn)槲募K存在多個(gè)拷貝,所以,任何一臺(tái)數(shù)據(jù)服務(wù)器不可用都是影響到文件的正常的。整體來(lái)看 moosfs,他的設(shè)計(jì)理念還是很符合gfs 的,從架構(gòu)圖來(lái)看,整個(gè)系統(tǒng)實(shí)現(xiàn)起來(lái)還是很容易的。不過(guò)有一點(diǎn)值得注意的還是,對(duì)于master 主機(jī)來(lái)說(shuō),這個(gè)是一個(gè)單點(diǎn),會(huì)存在隱患,在正式環(huán)境應(yīng)用

41、的時(shí)候,如何解決這里,是個(gè)關(guān)鍵。MFS 讀寫進(jìn)程MFS 讀進(jìn)程MFS 寫進(jìn)程PS: MFS 提供文件系統(tǒng)級(jí)回收站的配置,這個(gè)回收站在整個(gè)文件系統(tǒng)工作。那樣如果用戶刪除一個(gè)文件,這個(gè)文件可以一直存在回收站中,只要管理員想留著它。回收站中的文件會(huì)在一段配置時(shí)間之后自動(dòng)清理。KFSKFS 簡(jiǎn)介KFS(KOSMOS DISTRIBUTED FILE SYSTEM),一個(gè)類似 GFS、Hadoop中HDFS 的一個(gè)開源的分布式文件系統(tǒng)??梢詰?yīng)用在諸如圖片、搜索引擎、網(wǎng)格計(jì)算、數(shù)據(jù)挖掘這樣需要處理大數(shù)據(jù)量的網(wǎng)絡(luò)應(yīng)用中。與hadoop 集成得也比較好,這樣可以充分利用了hadoop 一些現(xiàn)成的功能,基于C+

42、。KFS 的特性1.自動(dòng)擴(kuò)充添加新的chunckserver,系統(tǒng)自動(dòng)感知2.有效性機(jī)制保證文件有效性,一般文件會(huì)被以三種方式,當(dāng)其中一個(gè)chunkserver 出現(xiàn)錯(cuò)誤的時(shí)候,影響數(shù)據(jù)的;3.文件粒度可以配置文件的粒度,最大可以被64 份4.還原當(dāng)其中一個(gè)Chunckserver 出現(xiàn)故障的時(shí)候,Metaserver 會(huì)強(qiáng)制使用其他的chunckserver5.負(fù)載平衡系 統(tǒng) 周 期 地 檢 查 chunkservers 的 磁 盤 利 用 , 并 重 新 平 衡chunkservers 的磁盤利用,HDFS 現(xiàn)在還沒(méi)有支持6.數(shù)據(jù)完整性當(dāng)要數(shù)據(jù)時(shí)檢查數(shù)據(jù)的完整性,如果檢驗(yàn)出錯(cuò)使用另外的備份

43、覆蓋當(dāng)前的數(shù)據(jù)7.文件寫入當(dāng)一個(gè)應(yīng)用程序創(chuàng)建了一個(gè)文件,這個(gè)文件名會(huì)被立刻寫入文件系統(tǒng),但為了性能,寫入的數(shù)據(jù)會(huì)被緩存在kfs 客戶端.并且周期性的從緩存中把數(shù)據(jù)更 新到 chunkserver 中。當(dāng)然,應(yīng)用程序也可以強(qiáng)制把數(shù)據(jù)更新到服務(wù)器上。一旦數(shù)據(jù)被更新到服務(wù)器,就可以被有效的了。(我怎么能知道這個(gè)文件什么時(shí)候可以了呢?)8.契約使用契約來(lái)保證Client 緩存的數(shù)據(jù)和文件系統(tǒng)中的文件保持一致性9.支持FUSE在linux 系統(tǒng)下,可以通過(guò) Fuse一個(gè)文件夾,從而可以很方便的kfs 的文件10.支持C+,Java,Python 方式的調(diào)用11.提供了豐富的工具程序如kfsshell,c

44、p2kfs 等12.提供了啟動(dòng)和停止服務(wù)的KFS 高級(jí)特性1.支持同一文件多次寫入和Append,不過(guò)不能在文件中間數(shù)據(jù)。(HDFS 支持一次寫入多次,不支持Append)2.文件及時(shí)生效,當(dāng)應(yīng)用程序創(chuàng)建一個(gè)文件時(shí),文件名在系統(tǒng)馬上有效。(HDFS 文件只當(dāng)輸入流關(guān)閉在系統(tǒng)中有效,因此,如果應(yīng)用程序在關(guān)閉前出現(xiàn)異常導(dǎo)致沒(méi)有關(guān)閉輸入流,數(shù)據(jù)將會(huì)丟失。)這一點(diǎn)好像也不是很好,如果輸入流中斷,在 kfs 里會(huì)留下一個(gè)錯(cuò)誤的文件,當(dāng)時(shí)會(huì)出現(xiàn)錯(cuò)誤,好像也沒(méi)有太大的意義。KFS 與 HDFS 的比較1.體系結(jié)構(gòu)圖的比較2.特點(diǎn)的比較兩者都是GFS 的開源實(shí)現(xiàn),而 HDFS 是Hadoop 的子項(xiàng)目,用 J

45、ava 實(shí)現(xiàn),為Hadoop 上層應(yīng)用提供高吞吐量的可擴(kuò)展的大文件服務(wù)。KFS 是一個(gè)高性能的分布式文件系統(tǒng),主要網(wǎng)絡(luò)規(guī)模的應(yīng)用,例如日志數(shù)據(jù),Map/Reduce 數(shù)據(jù)等. 用C+實(shí)現(xiàn)。它們的元數(shù)據(jù)管理采用集中式方式實(shí)現(xiàn),數(shù)據(jù)實(shí)體先分片然后分布式。CephCeph 的目標(biāo)1.可輕松擴(kuò)展到數(shù) PB 容量2.對(duì)多種工作負(fù)載的高性能(每秒輸入/輸出操作IOPS和帶寬)3.靠性不幸的是,這些目標(biāo)之間會(huì)互相競(jìng)爭(zhēng)(例如,可擴(kuò)展性會(huì)降低或者抑制性能或者影響可靠性)。Ceph 開發(fā)了一些非常有趣的概念(例如,動(dòng)態(tài)元數(shù)據(jù)分區(qū),數(shù)據(jù)分布和),這些概念在本文中只進(jìn)行簡(jiǎn)短地探討。Ceph 的設(shè)計(jì)還包括保護(hù)單一點(diǎn)故障

46、的容錯(cuò)功能,它假設(shè)大規(guī)模(PB 級(jí))故障是常見(jiàn)現(xiàn)象而不是例外情況。最后,它的設(shè)計(jì)并沒(méi)有假設(shè)某種特殊工作負(fù)載,但是包括適應(yīng)變化的工作負(fù)載,提供最佳性能的能力。它利用 POSIX 的兼容性完成所有這些任務(wù),它對(duì)當(dāng)前依賴 POSIX 語(yǔ)義(通過(guò)以 Ceph 為目標(biāo)的改進(jìn))的應(yīng)用進(jìn)行透明的部署。最后,Ceph 是開源分布式,也是主線Linux 內(nèi)核(2.6.34)的一部分。Ceph系統(tǒng)可以大致劃分為四部分1. 客戶端(數(shù)據(jù)用戶),2. 元數(shù)據(jù)服務(wù)器(緩存和同步分布式元數(shù)據(jù)),3.一個(gè)對(duì)象集群(將數(shù)據(jù)和元數(shù)據(jù)作為對(duì)象,執(zhí)行其他關(guān)鍵職能)4. 集群監(jiān)視器(執(zhí)行監(jiān)視功能)。Ceph系統(tǒng)的概念架構(gòu)架構(gòu)視圖 1

47、如上圖 1 所示,客戶使用元數(shù)據(jù)服務(wù)器,執(zhí)行元數(shù)據(jù)操作(來(lái)確定數(shù)據(jù)位置)。元數(shù)據(jù)服務(wù)器管理數(shù)據(jù)位置,以及在何處新數(shù)據(jù)。值集群(標(biāo)為 “元數(shù)據(jù) I/O”)。實(shí)得注意的是,元數(shù)據(jù)在一個(gè)際的文件 I/O 發(fā)生在客戶和對(duì)象集群之間。這樣一來(lái),更次的 POSIX 功能(例如,打開、關(guān)閉、重命名)就由元數(shù)據(jù)服務(wù)器管理,不過(guò) POSIX 功能(例如讀和寫)則直接由對(duì)象集群管理。架構(gòu)視圖 2Ceph一系列服務(wù)器通過(guò)一個(gè)客戶界面系統(tǒng),這就明白了元數(shù)據(jù)服務(wù)器和對(duì)象級(jí)器之間的關(guān)系。分布式系統(tǒng)可以在一設(shè)備的格式(Extent and B-tree-based些層中查看,包括一個(gè)Object File System E

48、BOFS 或者一個(gè)備選),還有一個(gè)設(shè)計(jì)用于管理數(shù)據(jù),故障檢測(cè),恢復(fù),以及隨后的數(shù)據(jù)遷移的覆蓋管理層,叫做 Reliable Autonomic Distributed Object Storage(RADOS)。最后,監(jiān)視器用于識(shí)別組件故障,包括隨后。Ceph 組件Ceph 和傳統(tǒng)的文件系統(tǒng)之間的重要差異之一就是,它將智能在了環(huán)境而不是文件系統(tǒng)本身。圖 3 顯示了一個(gè)簡(jiǎn)單的 Ceph系統(tǒng)。Ceph Client 是Ceph 文件系統(tǒng)的用戶。Ceph Metadata Daemon 提供了元數(shù)據(jù)服務(wù)器,而 Ceph Object Storage Daemon 提供了實(shí)際(對(duì)數(shù)據(jù)和元數(shù)據(jù)兩者)。最

49、后,Ceph Monitor 提供了集群管理。要注意的是,Ceph 客戶,對(duì)象端點(diǎn),元數(shù)據(jù)服務(wù)器(根據(jù)文件系統(tǒng)的容量)可以有許多,而且至少有一對(duì)冗余的監(jiān)視器。Ceph 客戶端內(nèi)核或用戶空間早 期 版 本 的 Ceph利 用 在 User SpacE ( FUSE ) 的Filesystems,它把文件系統(tǒng)推入到用戶空間,還可以很大程度上簡(jiǎn)化其開發(fā)。但是今天,Ceph 已經(jīng)被集成到主線內(nèi)核,使其更快速,因?yàn)橛脩艨臻g上下文交換機(jī)對(duì)文件系統(tǒng) I/O 已經(jīng)不再需要。因?yàn)?Linux 顯示文件系統(tǒng)的一個(gè)公共界面(通過(guò)虛擬文件系統(tǒng)交換機(jī) VFS),Ceph 的用戶圖就是透明的。管理員的圖肯定是不同的,考慮

50、到很多服務(wù)器會(huì)包含系統(tǒng)這一潛在因素。從用戶的角度看,他們大容量的系統(tǒng),卻不知道下面聚一個(gè)大容量的池的元數(shù)據(jù)服務(wù)器,監(jiān)視器,還有的對(duì)象設(shè)備。用戶只是簡(jiǎn)單地看到一個(gè)安裝點(diǎn),在這點(diǎn)上可以執(zhí)行標(biāo)準(zhǔn)文件I/OCeph 文件系統(tǒng) 或者至少是客戶端接口 在 Linux 內(nèi)核中實(shí)現(xiàn)。值得注意的是,在大多數(shù)文件系統(tǒng)中,所有的和智能在內(nèi)核的文件系統(tǒng)源本身中執(zhí)行。但是,在 Ceph 中,文件系統(tǒng)的智能分布在節(jié)點(diǎn)上,這簡(jiǎn)化了客戶端接口,并為 Ceph 提供了大規(guī)模(甚至動(dòng)態(tài))擴(kuò)展能力。Ceph 使用一個(gè)有趣的備選,而不是依賴分配列表(將磁盤上的到指定文件的元數(shù)據(jù))。Linux塊圖中的一個(gè)文件會(huì)分配到一個(gè)來(lái)自元數(shù)據(jù)服務(wù)器的 inode number(INO),對(duì)于文件這是一個(gè)唯一的標(biāo)識(shí)符。然后文件被推入一些對(duì)象中(根據(jù)文件的大小)。使用 INO 和 object number(ONO),每個(gè)對(duì)象都分配到一個(gè)對(duì)象ID(OID)。在 OID 上使用一個(gè)簡(jiǎn)單的,每個(gè)對(duì)象都被分配到一個(gè)放置組。放置組(標(biāo)識(shí)為

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論