郭強(qiáng)
摘要:Hadoop 分布式文件系統(tǒng)利用 Google 文件系統(tǒng)的原理開(kāi)發(fā)和設(shè)計(jì)的,并在相關(guān)的一些領(lǐng)域得到了應(yīng)用,在學(xué)界引起了極大的關(guān)注。本文將從 Hadoop 分布式文件系統(tǒng)架構(gòu)的入手,通過(guò)對(duì)模型各模塊進(jìn)行分析,并將其與傳統(tǒng)的分布式文件系統(tǒng)進(jìn)行比較,總結(jié)出 Hadoop 分布式文件系統(tǒng)具有的海量、可靠性高、可擴(kuò)展性、容錯(cuò)性能好、低成本等面向云計(jì)算領(lǐng)域的重要優(yōu)勢(shì)。Hadoop能為用戶提供一個(gè)可以輕松使用的分布式計(jì)算平臺(tái),使用戶可以輕松地在該平臺(tái)上開(kāi)發(fā)應(yīng)用程序并能夠處理海量數(shù)據(jù),本文通過(guò)對(duì)布式文件系統(tǒng)的模型分析將有助于云計(jì)算背景下的分布式文件系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)。
關(guān)鍵詞:基于Hadoop 分布式文件系統(tǒng);系統(tǒng)模型;云計(jì)算
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2016)17-0229-02
Abstract: Hadoop distributed file system using the principle of Google file system development and design, and related to some areas have been applied, so in the academic community has aroused great concern. In this paper, Hadoop distributed file system architecture from the start, through each module of the model were analyzed and compared with the traditional distributed file system, sums up the Hadoop distributed file system with massive, high reliability and expansion, good fault tolerance performance and low cost for Cloud Computing in the field of important advantages. Hadoop can for the user to provide a can easily use the distributed computing platform, users can easily on the platform application development and be able to handle massive amounts of data. In this paper, the model analysis of distributed file system will be helpful to cloud computing under the background of distributed the system design and development.
Key words: distributed file system based on Hadoop; system model; cloud computing
Hadoop是Apache軟件基金會(huì)所研發(fā)的開(kāi)放源碼并行運(yùn)算編程工具和分散式檔案系統(tǒng)根據(jù)Google公司發(fā)表的MapReduce和Google檔案系統(tǒng)的論文自行而成。Hadoop 主要由HDFS(Hadoop Distributed File System)和MapReduce兩部分組成。HDFS在最底部它主要是用來(lái)存儲(chǔ)Hadoop 集群中存儲(chǔ)節(jié)點(diǎn)上的文件,為海量的數(shù)據(jù)提供存儲(chǔ)。MapReduce在HDFS 的上一層由概念"Map(映射)"和"Reduce(歸約)"組成,主要是用于大規(guī)模數(shù)據(jù)集的并行運(yùn)算,為海量的數(shù)據(jù)提供了計(jì)算。
Hadoop對(duì)數(shù)據(jù)采取可靠、高效、可伸縮的分布式方式進(jìn)行并行處理,使開(kāi)發(fā)軟件平臺(tái)和運(yùn)行海量數(shù)據(jù)變得更加容易。Hadoop是一個(gè)分布式計(jì)算框架并且由 Apache 開(kāi)源組織的,能使一些低成本的硬件設(shè)備得到充分利用并且在它們組成的集群上運(yùn)行應(yīng)用程序,為應(yīng)用程序提供了一組穩(wěn)定可靠的接口,目的在于構(gòu)建可靠性高和擴(kuò)展性比較好的并行分布式系統(tǒng)。Hadoop 有以下優(yōu)點(diǎn):擴(kuò)展性好、成本廉價(jià)、效率較高、可靠性有保障、免費(fèi)開(kāi)源并且有良好的可移植性。
1 分布式文件系統(tǒng)模型
分布式文件系統(tǒng)作為分布式系統(tǒng)中的關(guān)鍵技術(shù),它最大的作用就是使信息資源共享,它采取以文件的方式把文件集中在一起管理,使文件資源達(dá)到共享的目的。在云計(jì)算環(huán)境中,分布式文件系統(tǒng)和本地磁盤提供的服務(wù)相比,它能使用戶在查看、保存在云中的文件時(shí)能夠獲得更高的服務(wù)質(zhì)量 ,使系統(tǒng)性更加可靠從而為用戶帶來(lái)良好的文件服務(wù)。
用戶對(duì)遠(yuǎn)程文件的訪問(wèn)的服務(wù)質(zhì)量能否滿足是分布式文件系統(tǒng)的透明性需求的要求??煽啃愿?、良好的可用性,能夠并發(fā)快速的訪問(wèn)文件等一些其他的設(shè)計(jì)要求也要滿足,并且使文件得數(shù)據(jù)具有一致性和容錯(cuò)性等。針對(duì)以上的設(shè)計(jì)要求,設(shè)計(jì)出由扁平文件服務(wù)、目錄服務(wù)和用戶端模塊 3部分為主要組成的分布式文件系統(tǒng)服務(wù)模型。對(duì)服務(wù)器磁盤上曾經(jīng)保存的文件的操作是由扁平文件服務(wù)負(fù)責(zé),比如查看文件的屬性和內(nèi)容還可以創(chuàng)建新文件刪除不用的文件,為每一個(gè)創(chuàng)建的新文件創(chuàng)建一個(gè)唯一的標(biāo)示符能保證以后操作時(shí)能夠引用;文件的名字和與其對(duì)應(yīng)標(biāo)識(shí)符之間的映射關(guān)系主要是由目錄服務(wù)負(fù)責(zé),包括創(chuàng)建、查找和刪除目錄,然后對(duì)新生成的目錄由扁平文件服務(wù)管理,把它也是以文件方式保存在服務(wù)器磁盤上;扁平文件服務(wù)的封裝以及目錄服務(wù)的訪問(wèn)都需要在客戶端上運(yùn)行的用戶模塊負(fù)責(zé),同時(shí)用戶模塊提供一種調(diào)用有關(guān)功能的映射:是從用戶端本地文件系統(tǒng)的文件操作接口到遠(yuǎn)程服務(wù)器之間。相反扁平文件服務(wù)和目錄服務(wù)也向客戶端模塊提供一種調(diào)用接口:它是一種高效、基于網(wǎng)絡(luò)通信并且能夠組成完備的文件操作集合。 用戶端模塊與本地文件操作接口接近的方式提供給應(yīng)用程序的同時(shí)將操作接口進(jìn)行進(jìn)一步封裝,使透明化進(jìn)一步提高。
2 HDFS分析與建模
當(dāng)前的HDFS(Hadoop Distributed File System)架構(gòu)非常容易實(shí)現(xiàn),因?yàn)檎麄€(gè)架構(gòu)集群上只能存在一個(gè)namespace并且這個(gè)namespace也只能被僅有的一個(gè)namenode管理。但是執(zhí)行起來(lái)并不是這么簡(jiǎn)單,可能在具體實(shí)現(xiàn)過(guò)程中會(huì)導(dǎo)致了一些局限性和模糊點(diǎn),比如限制namenode的擴(kuò)展,當(dāng)添加機(jī)器用水平擴(kuò)展來(lái)解決時(shí)卻發(fā)現(xiàn)集群存儲(chǔ)空間不足,所以namespace不可以擴(kuò)展namenode。集群中數(shù)據(jù)塊,文件和目錄的數(shù)量也要受到限制,因?yàn)閚amenode在內(nèi)存中存儲(chǔ)了分布式文件系統(tǒng)中的所有元數(shù)據(jù)信息,但是當(dāng)前的namespace只能存放在單個(gè)namenode上。還有Block Storage和namespace高耦合性,當(dāng)前namenode中的namespace和block management的結(jié)合使得這兩層架構(gòu)耦合在一起,難以讓其他可能namenode實(shí)現(xiàn)方案直接使用block storage。
鑒于以上不足,HDFS 的設(shè)計(jì)與實(shí)現(xiàn)更加重注重大量數(shù)據(jù)在存儲(chǔ)和管理上的高可擴(kuò)展性和高可靠性,HDFS采用主從(Master/Slave)結(jié)構(gòu)模型,一個(gè)HDFS集群是由一個(gè)NameNode和若干個(gè)DataNode組成的,多個(gè)NameNode的配置已經(jīng)在最新的版本中實(shí)現(xiàn)。NameNode在HDFS架構(gòu)中作為主服務(wù)器主要負(fù)責(zé)用戶端對(duì)文件的訪問(wèn)操作和對(duì)文件系統(tǒng)命名空間的管理,存儲(chǔ)的數(shù)據(jù)是由DataNode負(fù)責(zé)管理并且HDFS還支持以文件形式的數(shù)據(jù)。從內(nèi)部結(jié)構(gòu)來(lái)看,文件把數(shù)據(jù)分成若干塊然后把這若塊數(shù)據(jù)存放在一組的DataNode上。如果想查看、修改文件或者目錄的名字和關(guān)閉保存文件,由文件系統(tǒng)的命名空間發(fā)出命令NameNode負(fù)責(zé)執(zhí)行同時(shí)也負(fù)責(zé)數(shù)據(jù)塊到具體DataNode之間的映射。NameNode作為所有HDFS元數(shù)據(jù)的管理者,在NameNode的統(tǒng)一調(diào)度下,用戶在客戶端對(duì)文件的讀寫操作和創(chuàng)建、刪除和復(fù)制數(shù)據(jù)庫(kù)相關(guān)工作是由DataNode負(fù)責(zé)執(zhí)行,因此,NameNode不在用戶數(shù)據(jù)上經(jīng)過(guò)。用戶端負(fù)責(zé)將要訪問(wèn)得文件的信息其中包含了文件的名字發(fā)送給Namenode,然后Namenode 負(fù)責(zé)反饋在 Datanode 上存儲(chǔ)文件數(shù)據(jù)塊位置的相關(guān)信息給客戶端,最后客戶端直接和對(duì)應(yīng)的Datanode 建立連接并進(jìn)行具體的文件操作。Namenode定期對(duì)Datanode監(jiān)控并負(fù)責(zé)管理 Datanode 提交的已保存文件的數(shù)據(jù)信息。
根據(jù)以上描述的HDFS體系架構(gòu)中的文件服務(wù)模型,就可以建立起HDFS的模型,Namenode 負(fù)責(zé)提供服務(wù)器的主要目錄服務(wù),包括查看、修改文件或目錄的名字和關(guān)閉文件等操作以及對(duì)文件系統(tǒng)名字的空間操作,同時(shí)還需要負(fù)責(zé)調(diào)度 Datanode與數(shù)據(jù)塊之間的映射關(guān)系。Datanode負(fù)責(zé)提供服務(wù)器側(cè)的扁平文件服 務(wù),而處理客戶端發(fā)來(lái)的文件讀寫請(qǐng)求與執(zhí)行數(shù)據(jù)塊的創(chuàng)建、刪除等操作是由服務(wù)器側(cè)的扁平文件服務(wù)負(fù)責(zé),最后按照 Namenode 發(fā)出的指令對(duì)語(yǔ)言文件進(jìn)行訪問(wèn)操作。
通過(guò)以上可以分析出 HDFS的主要特征:
多種通信機(jī)制并存。根據(jù)通信對(duì)象分為遠(yuǎn)程過(guò)程調(diào)用,根據(jù)傳輸內(nèi)容的不同提供數(shù)據(jù)流通信方式,提高了訪問(wèn)性能。
一個(gè)扁平文件可以支持眾多的服務(wù)器運(yùn)行。文件數(shù)據(jù)塊分布廣泛并且互為備份,有多個(gè)Datanode為數(shù)據(jù)庫(kù)為此提供服務(wù)用戶服務(wù)得到顯著提高,從而保證每個(gè)節(jié)點(diǎn)級(jí)在系統(tǒng)中的高可靠性,普通的PC服務(wù)器也可以擔(dān)當(dāng)每個(gè)節(jié)點(diǎn),有利于降低系統(tǒng)的成本價(jià)格。
指定的服務(wù)器為目錄服務(wù)提供服務(wù)。Namenode可以使系統(tǒng)具有高透明性和高擴(kuò)展性,因?yàn)樵谟脩粼L問(wèn)時(shí)可以提供統(tǒng)一的文件名字空間使用戶訪問(wèn)更加高效,不但提高了對(duì)文件元數(shù)據(jù)的管理,而且還達(dá)到了從全局上對(duì)系統(tǒng)進(jìn)行控制的目的。
3 文件系統(tǒng)的比較
NFS 是Network File System的縮寫,即網(wǎng)絡(luò)文件系統(tǒng)。是一種文件系統(tǒng)協(xié)定使用于分散式并能在不同的系統(tǒng)上使用,主要功能是讓在不同的機(jī)器上、不同的操作系統(tǒng)上的數(shù)據(jù)能夠通過(guò)網(wǎng)絡(luò)連接相互分享,在服務(wù)器磁盤中的數(shù)據(jù)通過(guò)網(wǎng)絡(luò)讓應(yīng)用程序在客戶端進(jìn)行訪問(wèn),從而實(shí)現(xiàn)了磁盤文件的共享在類Unix系統(tǒng)之間。在NFS 的客戶端模塊和服務(wù)器側(cè)的服務(wù)器模塊共同組成了NFS分布式文件系統(tǒng),NFS 的客戶端可以成為遠(yuǎn)程文件的客戶端,服務(wù)器模塊可以成為遠(yuǎn)程文件訪問(wèn)服務(wù)的服務(wù)器,因?yàn)樵诿颗_(tái)服務(wù)器都部署了這兩個(gè)模塊并且是互為對(duì)稱分布,所以使集群內(nèi)文件資源的共享程度更高。無(wú)狀態(tài)的 NFS 協(xié)議負(fù)責(zé)NFS 的客戶端與服務(wù)器之間了的聯(lián)系,遠(yuǎn)程服務(wù)器上已保存的文件和目錄客戶端可以通過(guò)網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程操作。NFS 提供了與文件系統(tǒng)之間訪問(wèn)的接口、服務(wù)器和客戶端的緩存訪問(wèn)信息,實(shí)現(xiàn)了訪問(wèn)透明性,使訪問(wèn)性能得到提高。
NFS的 設(shè)計(jì) 體 現(xiàn) 了以前主 流 分 布 式 文 件 系 統(tǒng) 的 典 型 特 征 ,而HDFS 則是面向云計(jì)算的分布式文件系統(tǒng)的代表,NFS和HDFS 在滿足系統(tǒng)需求方面?zhèn)戎攸c(diǎn)不同。HDFS具有位置透明性在訪問(wèn)空間時(shí)用文本文件名和統(tǒng)一的標(biāo)示符訪進(jìn)行空間訪問(wèn),同時(shí)具有文件移動(dòng)透明性因?yàn)樵贜amenode節(jié)點(diǎn)管理和維護(hù)上使用統(tǒng)一的名字空間;在并行訪問(wèn)過(guò)程中能讓多個(gè)文件數(shù)據(jù)塊同時(shí)訪問(wèn),有可靠的訪問(wèn)性能,實(shí)現(xiàn)了性能的透明化;在系統(tǒng)的擴(kuò)展過(guò)程中不用通過(guò)用戶直接根據(jù)負(fù)載規(guī)模增刪Datanode,實(shí)現(xiàn)了擴(kuò)展透明性;在文件方面很好的保持了文件數(shù)據(jù)的一致性,在對(duì)文件進(jìn)行修改過(guò)程中在文件的一致性協(xié)議下通過(guò)原子化修改,然后把修改后的文件塊自動(dòng)復(fù)制多份并且分別保存在多個(gè)Datanode上;具有良好的容故障性,能去除在文件和數(shù)據(jù)塊中的的冗余,PC服務(wù)器可以Linux系統(tǒng)下作為客戶端和服務(wù)器,使文件服務(wù)有可靠的兼容性;在安全方面,用安全套接字的網(wǎng)絡(luò)安全機(jī)制服務(wù)訪問(wèn),文件的安全得到有效保障。
從以上可以看出,HDFS 具有良好的透明性、可靠的擴(kuò)展性,很好地滿足了系統(tǒng)設(shè)計(jì)的要求,以這類新型的分布式文件系統(tǒng)為 基 礎(chǔ),將會(huì)促進(jìn)了分布式計(jì)算 和 分 布 式 數(shù) 據(jù) 庫(kù) 等 重要技術(shù) 的 發(fā) 展 ,這些技術(shù)將會(huì)促進(jìn)云計(jì)算的新的發(fā)展,所以將會(huì)對(duì)當(dāng)今產(chǎn)生巨大影響。
另外,雖然HDFS在當(dāng)前的面向云計(jì)算中有美好的前景或者在相關(guān)鄰域中已取得了較大的突破,但是它也具有一定的不足和局限,如訪問(wèn)透明性不高,在接口方面沒(méi)有與傳統(tǒng)的POSIX完全兼容的接口。在訪問(wèn)過(guò)程中文件不能的并發(fā)的進(jìn)行更新并且在數(shù)據(jù)交互中低延時(shí)的文件數(shù)據(jù)不能交互等。
4 結(jié)束語(yǔ)
通過(guò)以上對(duì)Hadoop 分布式文件系統(tǒng)的模型分析,可以看出,無(wú)論是在服務(wù)器側(cè)提供的扁平文件服務(wù)和目錄服務(wù),還是在用戶端運(yùn)行的用戶端模塊,HDFS 在設(shè)計(jì)和實(shí)現(xiàn)時(shí)都要考慮到如何保存和處理海量數(shù)據(jù),并最終設(shè)計(jì)出高可擴(kuò)展性、高可靠性、高效性和高容錯(cuò)性等滿足需求的系統(tǒng),并在云計(jì)算相關(guān)領(lǐng)域的取得非常突出的成績(jī)。 因此,HDFS 一直以來(lái)都受到了業(yè)界的廣泛關(guān)注,在未來(lái)它將會(huì)在更多的領(lǐng)域中扮演幕后英雄,為我們提供更加快捷優(yōu)質(zhì)的服務(wù)。但是,HDFS 也不是對(duì)任何文件系統(tǒng)都是萬(wàn)能的,文件服務(wù)的提供者必須根據(jù)實(shí)際需求選擇合適自己的文件系統(tǒng)。
參考文獻(xiàn):
[1] Hadoop community. Hadoop distributed file system,http://hadoop.apache.org/hdfs,2010.
[2] 曹寧,吳中海,劉宏志,等.HDFS下載效率的優(yōu)化[J].計(jì)算機(jī)應(yīng)用,,2010,30(8):2060-2065.
[3] George C, Jean D, Tim K. Distributed systems :concepts and design(3rd Edition). Addison-Wesley Publishers Limited,2000.
[4] Russel S, David G, Steve K,et al. Design and implementation of the Sun network file system. Artech House ,1988
[5] 陳劍,龔發(fā)根. 一種優(yōu)化分布式文件系統(tǒng)的文件合并策略[J].計(jì)算機(jī)應(yīng)用,2011(S2).
[6] 姚遠(yuǎn),王麗芳,蔣澤軍.—致性管理的研究[J].現(xiàn)代電子技術(shù),2012(8).
[7] Wang F,Qiu J,Yang J, et al. Hadoop high availability through metadata replication. In:Proceeding of the First International Workshop on Cloud Data Management,Hong Kong,China, 2009.
[8] Gluster community. Gluster file system ,http://www.gluster.org ,2010.