欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數(shù)據(jù)獲取方法和分布式文件系統(tǒng)的制作方法

文檔序號:6431574閱讀:231來源:國知局
專利名稱:一種數(shù)據(jù)獲取方法和分布式文件系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種分布式數(shù)據(jù)處理領(lǐng)域,尤其涉及一種數(shù)據(jù)獲取方法和分布式文件系統(tǒng)。
背景技術(shù)
Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)是一種適合運行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)。HDFS能提供高吞吐量的數(shù)據(jù) 訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。對外部客戶機而言,HDFS就像一個傳統(tǒng)的分級文件系統(tǒng)。可以創(chuàng)建、刪除、移動或重命名文件,等等。HDFS的架構(gòu)是基于一組特定的節(jié)點構(gòu)建的,這些節(jié)點包括NameNode (僅一個),其在HDFS內(nèi)部提供元數(shù)據(jù)服務(wù);DataNode,其為HDFS提供存儲塊。其中,NameNode是一個通常在HDFS實例中的單獨機器上運行的軟件。它負責(zé)管理文件系統(tǒng)名稱空間和控制外部客戶機的訪問。NameNode決定是否將文件映射到DataNode上的復(fù)制塊上。對于最常見的3個復(fù)制塊,第一個復(fù)制塊存儲在同一機架的不同節(jié)點上,最后一個復(fù)制塊存儲在不同機架的某個節(jié)點上。NameNode在一個文件中存儲所有關(guān)于文件系統(tǒng)名稱空間的信息。這個文件和一個包含所有事務(wù)的記錄文件將存儲在NameNode的本地文件系統(tǒng)上。由于僅存在一個NameNode,在基于C/S (客戶/服務(wù)器)架構(gòu)的設(shè)計中只有一臺Namenode機器就造成了 Namenode的單點問題,這成為了 HDFS的一個缺點。

發(fā)明內(nèi)容
本發(fā)明實施例所要解決的技術(shù)問題在于,提供一種數(shù)據(jù)獲取方法和分布式文件系統(tǒng)??山鉀QHDFS中的單點問題,提高HDFS集群任務(wù)的并發(fā)處理能力。為了解決上述技術(shù)問題,本發(fā)明實施例提供了一種分布式文件系統(tǒng)中的數(shù)據(jù)獲取方法,所述方法包括
獲取待訪問文件的文件目錄,并獲取預(yù)定義的根節(jié)點的節(jié)點值;
根據(jù)所述根節(jié)點的節(jié)點值的散列值獲取所述根節(jié)點的區(qū)塊信息,所述區(qū)塊中存儲有文件,或/和文件夾中的文件列表及所述文件列表中的文件對應(yīng)的節(jié)點值;
當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件時,根據(jù)所述區(qū)塊中存儲的塊列表和塊列表位置信息獲取數(shù)據(jù)文件;
當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件夾時,根據(jù)所述文件目錄從所述區(qū)塊中存儲的文件列表和所述文件列表中的文件對應(yīng)的節(jié)點值中獲取下一級節(jié)點的節(jié)點值,再根據(jù)所述下一級節(jié)點的節(jié)點值獲取所述下一級節(jié)點的區(qū)塊信息,直至最終獲取數(shù)據(jù)文件。其中,所述根據(jù)所述根節(jié)點的節(jié)點值的散列值獲取所述根節(jié)點的區(qū)塊信息包括 根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的服務(wù)器; 根據(jù)所述根節(jié)點的節(jié)點值在所述服務(wù)器中獲取所述節(jié)點值對應(yīng)的節(jié)點信息;根據(jù)所述節(jié)點值對應(yīng)的節(jié)點信息獲取所述根節(jié)點的區(qū)塊信息。所述根節(jié)點或其他節(jié)點的區(qū)塊信息中包括多個區(qū)塊的信息。所述方法還包括在所述分布式系統(tǒng)中劃分多個數(shù)據(jù)區(qū)域,節(jié)點值通過散列算法與所述數(shù)據(jù)區(qū)域?qū)?yīng);
所述根據(jù)所述根節(jié)點的節(jié)點值的散 列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的服務(wù)器相應(yīng)為,所述根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的數(shù)據(jù)區(qū)域所在的服務(wù)器。所述方法還包括緩存所述數(shù)據(jù)文件的各級節(jié)點值。相應(yīng)的,本發(fā)明實施例還提供了一種分布式文件系統(tǒng),包括
目錄獲取單元,用于獲取待訪問文件的文件目錄,并獲取預(yù)定義的根節(jié)點的節(jié)點值;區(qū)塊獲取單元,用于根據(jù)所述根節(jié)點的節(jié)點值的散列值獲取所述根節(jié)點的區(qū)塊信息,所述區(qū)塊中存儲有文件,或/和文件夾中的文件列表及所述文件列表中的文件對應(yīng)的節(jié)點值;
文件獲取單元,用于當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件時,根據(jù)所述區(qū)塊中存儲的塊列表和塊列表位置信息獲取數(shù)據(jù)文件;當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件夾時,根據(jù)所述文件目錄從所述區(qū)塊中存儲的文件列表和所述文件列表中的文件對應(yīng)的節(jié)點值中獲取下一級節(jié)點的節(jié)點值,再根據(jù)所述下一級節(jié)點的節(jié)點值獲取所述下一級節(jié)點的區(qū)塊信息,直至最終獲取數(shù)據(jù)文件。其中,所述區(qū)塊獲取單元包括
服務(wù)器定位子單元,用于根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的服務(wù)器;
節(jié)點信息獲取子單元,用于根據(jù)所述根節(jié)點的節(jié)點值在所述服務(wù)器中獲取所述節(jié)點值對應(yīng)的節(jié)點信息;
區(qū)塊信息獲取子單元,用于根據(jù)所述節(jié)點值對應(yīng)的節(jié)點信息獲取所述根節(jié)點的區(qū)塊信
肩、O所述區(qū)塊獲取單元獲取的根節(jié)點或其他節(jié)點的區(qū)塊信息中包括多個區(qū)塊的信息。所述系統(tǒng)還包括劃分單元,用于在所述分布式系統(tǒng)中劃分多個數(shù)據(jù)區(qū)域,節(jié)點值通過散列算法與所述數(shù)據(jù)區(qū)域?qū)?yīng);
所述服務(wù)器定位子單元還用于所述根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的數(shù)據(jù)區(qū)域所在的服務(wù)器。所述系統(tǒng)還包括緩存單元,用于緩存所述數(shù)據(jù)文件的各級節(jié)點值。實施本發(fā)明實施例,具有如下有益效果由于將整個目錄樹分布式的存儲在不同的區(qū)塊,并利用節(jié)點值來指向這些區(qū)塊,實現(xiàn)了目錄樹結(jié)構(gòu)的分散存儲,利用散列算法有效的解決了 nameno de單點故障和瓶頸問題。


為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I是本發(fā)明實施例中的目錄樹的一個組成示意 圖2是本發(fā)明實施例中的分布式文件系統(tǒng)中的數(shù)據(jù)獲取方法的一個具體流程示意圖; 圖3是本發(fā)明實施例中的分布式文件系統(tǒng)中的數(shù)據(jù)獲取方法的另一個具體流程示意
圖4是本發(fā)明實施例中的分布式文件系統(tǒng)的一個具體組成示意 圖5是圖4中的區(qū)塊獲取單元的一個具體組成示意圖。
具體實施方式

下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。在本發(fā)明中定義兩個概念,節(jié)點值(inodenum)和區(qū)塊(block),只要知道inodenum就可以迅速定位節(jié)點(inode)信息(即inode數(shù)據(jù)信息),繼而通過inode定位到block以讀取文件或文件夾內(nèi)容。block的文件中存儲數(shù)據(jù)塊信息,文件夾做為特殊文件,在其中存儲了其子目錄的所有文件列表和文件列表中的文件的inodenum,這樣就可以通過文件目錄逐級找到需要訪問的數(shù)據(jù)文件,也可以迅速在內(nèi)存中還原構(gòu)建出個目錄樹,如圖I所示。一般,根目錄是需要做特殊處理的,其inodenum可以在全局配置信息中進行指定,或者預(yù)定義inodenum=0的文件存儲的就是根目錄數(shù)據(jù)。即,在本發(fā)明的解決方案中定義,I) inodenum,作為定位文件的索引;2)block (為文件或文件夾),存儲有目錄列表、數(shù)據(jù)塊信息(在每臺機器內(nèi)存中存儲block);3)數(shù)據(jù)塊(datablock)為存儲文件數(shù)據(jù)的載體。對于block,當(dāng)inodenum指向的為文件夾時,block存儲的數(shù)據(jù)格式如下文件名,文件類型,inodenum;當(dāng)inodenum指向的數(shù)據(jù)為文件時,block存儲的數(shù)據(jù)格式如下數(shù)據(jù)DataBlock的blockID列表和位置信息。以下從數(shù)據(jù)獲取的角度進一步說明本發(fā)明的上述架構(gòu)。如圖2所示,為本發(fā)明實施例中的分布式文件系統(tǒng)中的數(shù)據(jù)獲取方法的一個具體流程示意圖,所述方法包括如下步驟。201、獲取待訪問文件的文件目錄,并獲取預(yù)定義的根節(jié)點的節(jié)點值。所述存儲文件目錄至少包括根目錄,當(dāng)然除了根目錄還可進一步包括一級目錄、二級目錄等等。202、根據(jù)所述根節(jié)點的節(jié)點值的散列值獲取所述根節(jié)點的區(qū)塊(block)信息,所述區(qū)塊中存儲有文件,或/和文件夾中的文件列表及所述文件列表中的文件對應(yīng)的節(jié)點值。其中,可以先根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的服務(wù)器;再根據(jù)所述根節(jié)點的節(jié)點值在所述服務(wù)器中獲取所述節(jié)點值對應(yīng)的節(jié)點信息;最后根據(jù)所述節(jié)點值對應(yīng)的節(jié)點信息獲取所述根節(jié)點的區(qū)塊信息。同時,所述根節(jié)點(或還包括其他各級節(jié)點)的區(qū)塊信息中可包括多個區(qū)塊的信息。即如圖I所示,一個節(jié)點處可以有多個區(qū)塊。在分布式文件系統(tǒng)中可以預(yù)先在所述分布式系統(tǒng)中劃分多個數(shù)據(jù)區(qū)域,節(jié)點值通過散列算法與所述數(shù)據(jù)區(qū)域?qū)?yīng),相應(yīng)的上述的根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的服務(wù)器則為,所述根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的數(shù)據(jù)區(qū)域所在的服務(wù)器。203、當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件時,根據(jù)所述區(qū)塊中存儲的塊列表和塊列表位置信息獲取數(shù)據(jù)文件;當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件夾時,根據(jù)所述文件目錄從所述區(qū)塊中存儲的文件列表 和所述文件列表中的文件對應(yīng)的節(jié)點值中獲取下一級節(jié)點的節(jié)點值,再根據(jù)所述下一級節(jié)點的節(jié)點值獲取所述下一級節(jié)點的區(qū)塊信息,直至最終獲取數(shù)據(jù)文件。如前所述,根節(jié)點或其他各級節(jié)點的節(jié)點值指向區(qū)塊,若區(qū)塊中包括的是文件,則表明文件目錄中所指定的文件就在區(qū)塊的文件中指明的數(shù)據(jù)塊中。此時只要從區(qū)塊的文件中對應(yīng)去獲取數(shù)據(jù)文件就可以了 ;若區(qū)塊中包括的是文件夾,則表明此時還未查找到文件目錄的最后一級,還需要根據(jù)文件夾及文件目錄當(dāng)前的目錄級獲取節(jié)點值,再到下一區(qū)塊去查找文件。該過程可以反復(fù)的執(zhí)行,直到最終查找到文件。通常來說,根節(jié)點一般對應(yīng)的是文件夾,因而在本發(fā)明實施例中,在查找到根節(jié)點后還需要獲得對應(yīng)文件的節(jié)點值來去下一個block獲取文件或文件夾,后續(xù)會有具體的實施例進行描述。如圖3所示,表明了上述的循環(huán)查找并獲取的過程。該過程包括如下步驟。301、獲取待訪問文件的文件目錄和該文件目錄中的根節(jié)點的預(yù)定義inodenum值。302、根據(jù)此inodenum值的散列值確定inode信息位于所述分布式文件系統(tǒng)中的服務(wù)器。303、找到存儲該inode信息所在的服務(wù)器后,在該服務(wù)器通過此inodenum定位到inode信息,讀取這個inode節(jié)點對應(yīng)的block信息,該inode節(jié)點對應(yīng)的block可能有多個。304、如果該inodenum對應(yīng)的是普通文件,那這些block中存儲的就是文件內(nèi)容,轉(zhuǎn)步驟305 ;如果該inodenum對應(yīng)的是目錄(即文件夾),那這些block中存儲該文件夾下的文件列表以及各文件列表中的文件對應(yīng)的inodenum,轉(zhuǎn)步驟306
305、如果該inodenum對應(yīng)的是文件而且是用戶需要訪問的文件,則根據(jù)所述block的文件中的存儲塊列表和存儲塊存儲的位置信息獲取所述數(shù)據(jù)文件。306、如果該inodenum對應(yīng)的是文件夾,通過讀取block內(nèi)容得到該inodenum對應(yīng)文件夾下的所有文件的文件名以及每個文件的inodenum。307、從文件夾中找到文件目錄中的下一級目錄(即下一級節(jié)點)的inodenum值。重復(fù)302 307過程,直到找到需要訪問的文件為止。若在上述方法中還可以進一步包括預(yù)先的數(shù)據(jù)區(qū)域劃分和其與節(jié)點值之間的索引對應(yīng),則可按下述方式進行分區(qū)首先將數(shù)據(jù)分區(qū),采用的是一致性hash的辦法,即將inodenum通過散列算法,散列到(Γ2~32的空間中,假如有Α,B, C,D,E共5臺機器作為master。則定義A機存儲0 2~32/5范圍的數(shù)據(jù);B機存儲2~32/5 2~32/5 *2的數(shù)據(jù);C機存儲2~32/5 *2 2~32/5 *3的數(shù)據(jù);D機存儲2~32/5 *3 2~32/5 *4的數(shù)據(jù);E機存儲2~32/5 *4 2~32的數(shù)據(jù)。同時,可在獲取所述數(shù)據(jù)文件時,緩存所述數(shù)據(jù)文件的存儲文件目錄中的各級目錄對應(yīng)的節(jié)點值。這樣對于一些比較深的文件夾,可以大大提高效率。
實施本發(fā)明實施例,由于將整個目錄樹分布式的存儲在不同的存儲位置,并利用節(jié)點值來指向這些存儲位置,實現(xiàn)了目錄樹結(jié)構(gòu)的分散存儲,利用散列算法有效的解決了nameno de單點故障和瓶頸問題。以下以兩個具體的存儲文件目錄還說明如何進行數(shù)據(jù)文件的獲取。如,目錄分別為/testdata2, /testl/datal, /testl/data20 其中,目錄/testdata2 中的第一個“/”代表根目錄,“/testdata2”代表下一級目錄,由于/testdata2即為文件的整個目錄,可知目錄/testdata2對應(yīng)為文件,目錄/testl/datal中的第一個“/”代表根目錄,/testl/代表下一目錄,/testl/datal則是下下級目錄,由于/testl/datal為文件的整個目錄,可知目錄/testl/datal對應(yīng)為文件。
I、對于讀取/testdata2文件數(shù)據(jù)的情況描述如下。a)獲取inodenum=0 (即根目錄可以直接規(guī)定inodenum=0),假設(shè)O經(jīng)過hash后找到根目錄所在機器為B。b)將查詢inodenum=0的請求發(fā)送到B機,B機通過該inodenum迅速定位到根文件夾的block,對應(yīng)圖2的流程即找到了根目錄的區(qū)塊。c)由于inodenum=0指向根目錄本例中根目錄的block存儲有根目錄文件列表(此時列表中有testl、testdata2,其中,testl為目錄,testdata2為文件),則說明本例中inodenum=0指向的為文件夾,因此,需要獲得下一級目錄/testdata2的inodenum,假設(shè)本例中根目錄的block中存儲了下一級目錄/testdata2對應(yīng)的inodenum=4。d)通過inodenum=4進行hash得到/testdata2的存儲位置為E機。e)將查詢inodenum=4的請求發(fā)送到E機,E機通過該inodenum迅速定位到block,該block中存儲有文件/testdata2,由于/testdata2對應(yīng)的是文件,因而此時可從其對應(yīng)的文件中獲得存儲的datablockID列表和位置(location)信息。f )通過datablockID列表和location信息,依次到相應(yīng)的機器讀取datablock數(shù)據(jù)。2、對于較深目錄文件/testl/datal文件的讀取。a)獲取inodenum=0 (即根目錄可以直接規(guī)定inodenum=0),假設(shè)O經(jīng)過hash后找到根目錄所在機器為B。b)將查詢inodenum=0的請求發(fā)送到B機,B機通過inodenum迅速定位到根文件夾的block。c)從block中可以讀取根目錄文件列表,其中存儲有文件夾/testl/及其對應(yīng)的inodenum,假設(shè)/testl/ 這個文件夾的 inodenum=8。d)根據(jù)inodenum=8進行hash得到存儲位置為C機,將inodenum=8的請求發(fā)送到C機,從C機通過inodenum=8迅速定位到/testl/的文件夾的block。e)從該block中可以讀取/testl/的目錄文件列表(此時列表中有兩個文件,即data I 和 data2),此時,找到 datal 對應(yīng)的 inodenum=10。f)根據(jù)inodenum=10進行hash得到存儲位置為D機,將inodenum=10的請求發(fā)送到D機,從D機通過inodenum=10迅速定位到/testl/datal的block,該block中存儲有文件datal,由于datal對應(yīng)的是文件,因而此時可從其對應(yīng)的文件中獲得存儲的datablockID列表和位置location信息。
g)通過datablockID列表和location信息,依次到相應(yīng)的機器讀取datablock數(shù)據(jù)。同理可以根據(jù)目錄/testl/data2獲得文件data2的數(shù)據(jù)。至于在HDFS文件上傳流程中一個datablock上傳完成后,datanode需要將這個datablock的ID上報給某臺namenode機器,用以通知namenode在不同的datanode上分別存儲哪些datablock,這樣我們就需要在datablock中加入inodenum信息,一方面表示這個datablock數(shù)據(jù)塊屬于哪個文件,另一方面可以通過這個inodenum,經(jīng)過hash和路由選擇就知道這個datablockid該上報給哪臺namenode機器。相應(yīng)的,本發(fā)明實施例中還提供了一種分布式文件系統(tǒng),如圖4所示,所述系統(tǒng)包括目錄獲取單元40,用于獲取待訪問文件的文件目錄,并獲取預(yù)定義的根節(jié)點的節(jié)點值;區(qū)塊獲取單元42,用于根據(jù)所述根節(jié)點的節(jié)點值的散列值獲取所述根節(jié)點的區(qū)塊信息,所 述區(qū)塊中存儲有文件,或/和文件夾中的文件列表及所述文件列表中的文件對應(yīng)的節(jié)點值;文件獲取單元44,用于當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件時,根據(jù)所述區(qū)塊中存儲的塊列表和塊列表位置信息獲取數(shù)據(jù)文件;當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件夾時,根據(jù)所述文件目錄從所述區(qū)塊中存儲的文件列表和所述文件列表中的文件對應(yīng)的節(jié)點值中獲取下一級節(jié)點的節(jié)點值,再根據(jù)所述下一級節(jié)點的節(jié)點值獲取所述下一級節(jié)點的區(qū)塊信息,直至最終獲取數(shù)據(jù)文件。其中,如圖5所示,區(qū)塊獲取單元42可包括服務(wù)器定位子單元420,用于根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的服務(wù)器;節(jié)點信息獲取子單元422,用于根據(jù)所述根節(jié)點的節(jié)點值在所述服務(wù)器中獲取所述節(jié)點值對應(yīng)的節(jié)點信息;區(qū)塊信息獲取子單元424,用于根據(jù)所述節(jié)點值對應(yīng)的節(jié)點信息獲取所述根節(jié)點的區(qū)塊信息。其中,在一些具體實施例中,區(qū)塊獲取單元42獲取的根節(jié)點或其他節(jié)點的區(qū)塊信息中包括多個區(qū)塊的信息。同時,類似前述方法中記載的方案,若將整個分布式系統(tǒng)進行劃分,則所述系統(tǒng)還包括劃分單元(圖中未示),用于在所述分布式系統(tǒng)中劃分多個數(shù)據(jù)區(qū)域,節(jié)點值通過散列算法與所述數(shù)據(jù)區(qū)域?qū)?yīng);相應(yīng)的,所述服務(wù)器定位子單元420還用于所述根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的數(shù)據(jù)區(qū)域所在的服務(wù)器。同時,為了提高系統(tǒng)的處理消息,所述系統(tǒng)還包括緩存單元(圖中未示),用于緩存所述數(shù)據(jù)文件的各級節(jié)點值。在本系統(tǒng)實施例中的相關(guān)術(shù)語和具體功能與前述方法實施例中的一致,其具體細節(jié)不做--贅述。實施本發(fā)明實施例,由于將整個目錄樹分布式的存儲在不同的存儲位置,并利用節(jié)點值來指向這些存儲位置,實現(xiàn)了目錄樹結(jié)構(gòu)的分散存儲,利用散列算法有效的解決了namenode單點故障和瓶頸問題。本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random AccessMemory, RAM)等。以上所揭露的僅為本發(fā)明一種較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的 等同變化,仍屬本發(fā)明所涵蓋的范圍。
權(quán)利要求
1.一種分布式文件系統(tǒng)中的數(shù)據(jù)獲取方法,其特征在于,所述方法包括 獲取待訪問文件的文件目錄,并獲取預(yù)定義的根節(jié)點的節(jié)點值; 根據(jù)所述根節(jié)點的節(jié)點值的散列值獲取所述根節(jié)點的區(qū)塊信息,所述區(qū)塊中存儲有文件,或/和文件夾中的文件列表及所述文件列表中的文件對應(yīng)的節(jié)點值; 當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件時,根據(jù)所述區(qū)塊中存儲的塊列表和塊列表位置信息獲取數(shù)據(jù)文件; 當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件夾時,根據(jù)所述文件目錄從所述區(qū)塊中存儲的文件列表和所述文件列表中的文件對應(yīng)的節(jié)點值中獲取下一級節(jié)點的節(jié)點值,再根據(jù)所述下一級節(jié)點的節(jié)點值獲取所述下一級節(jié)點的區(qū)塊信息,直至最終獲取數(shù)據(jù)文件。
2.如權(quán)利要求I所述的方法,其特征在于,所述根據(jù)所述根節(jié)點的節(jié)點值的散列值獲取所述根節(jié)點的區(qū)塊信息包括 根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的服務(wù)器; 根據(jù)所述根節(jié)點的節(jié)點值在所述服務(wù)器中獲取所述節(jié)點值對應(yīng)的節(jié)點信息; 根據(jù)所述節(jié)點值對應(yīng)的節(jié)點信息獲取所述根節(jié)點的區(qū)塊信息。
3.如權(quán)利要求2所述的方法,其特征在于,所述根節(jié)點或其他節(jié)點的區(qū)塊信息中包括多個區(qū)塊的信息。
4.如權(quán)利要求I至3中任一項所述的方法,其特征在于, 所述方法還包括在所述分布式系統(tǒng)中劃分多個數(shù)據(jù)區(qū)域,節(jié)點值通過散列算法與所述數(shù)據(jù)區(qū)域?qū)?yīng); 所述根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的服務(wù)器相應(yīng)為,所述根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的數(shù)據(jù)區(qū)域所在的服務(wù)器。
5.如權(quán)利要求I至4中任一項所述的方法,其特征在于,所述方法還包括緩存所述數(shù)據(jù)文件的各級節(jié)點值。
6.—種分布式文件系統(tǒng),其特征在于,所述系統(tǒng)包括 目錄獲取單元,用于獲取待訪問文件的文件目錄,并獲取預(yù)定義的根節(jié)點的節(jié)點值;區(qū)塊獲取單元,用于根據(jù)所述根節(jié)點的節(jié)點值的散列值獲取所述根節(jié)點的區(qū)塊信息,所述區(qū)塊中存儲有文件,或/和文件夾中的文件列表及所述文件列表中的文件對應(yīng)的節(jié)點值; 文件獲取單元,用于當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件時,根據(jù)所述區(qū)塊中存儲的塊列表和塊列表位置信息獲取數(shù)據(jù)文件;當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件夾時,根據(jù)所述文件目錄從所述區(qū)塊中存儲的文件列表和所述文件列表中的文件對應(yīng)的節(jié)點值中獲取下一級節(jié)點的節(jié)點值,再根據(jù)所述下一級節(jié)點的節(jié)點值獲取所述下一級節(jié)點的區(qū)塊信息,直至最終獲取數(shù)據(jù)文件。
7.如權(quán)利要求6所述的系統(tǒng),其特征在于,所述區(qū)塊獲取單元包括 服務(wù)器定位子單元,用于根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的服務(wù)器; 節(jié)點信息獲取子單元,用于根據(jù)所述根節(jié)點的節(jié)點值在所述服務(wù)器中獲取所述節(jié)點值對應(yīng)的節(jié)點信息;區(qū)塊信息獲取子單元,用于根據(jù)所述節(jié)點值對應(yīng)的節(jié)點信息獲取所述根節(jié)點的區(qū)塊信肩、O
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述區(qū)塊獲取單元獲取的根節(jié)點或其他節(jié)點的區(qū)塊信息中包括多個區(qū)塊的信息。
9.如權(quán)利要求7至8中任一項所述的系統(tǒng),其特征在于, 所述系統(tǒng)還包括劃分單元,用于在所述分布式系統(tǒng)中劃分多個數(shù)據(jù)區(qū)域,節(jié)點值通過散列算法與所述數(shù)據(jù)區(qū)域?qū)?yīng); 所述服務(wù)器定位子單元還用于所述根據(jù)所述根節(jié)點的節(jié)點值的散列值確定存儲所述節(jié)點值對應(yīng)的節(jié)點信息的數(shù)據(jù)區(qū)域所在的服務(wù)器。
10.如權(quán)利要求6至8中任一項所述的方法,其特征在于,所述系統(tǒng)還包括緩存單元,用于緩存所述數(shù)據(jù)文件的各級節(jié)點值。
全文摘要
本發(fā)明實施例公開了一種數(shù)據(jù)獲取方法和分布式文件系統(tǒng),所述方法包括獲取待訪問文件的文件目錄,并獲取預(yù)定義的根節(jié)點的節(jié)點值;根據(jù)所述根節(jié)點的節(jié)點值的散列值獲取所述根節(jié)點的區(qū)塊信息;當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件時,根據(jù)所述區(qū)塊中存儲的塊列表和塊列表位置信息獲取數(shù)據(jù)文件;當(dāng)所述根節(jié)點的節(jié)點值對應(yīng)所述區(qū)塊中的文件夾時,根據(jù)所述文件目錄從所述區(qū)塊中存儲的文件列表和所述文件列表中的文件對應(yīng)的節(jié)點值中獲取下一級節(jié)點的節(jié)點值,再根據(jù)所述下一級節(jié)點的節(jié)點值獲取所述下一級節(jié)點的區(qū)塊信息,直至最終獲取數(shù)據(jù)文件。采用本發(fā)明,可解決HDFS中的單點問題,提高HDFS集群任務(wù)的并發(fā)處理能力。
文檔編號G06F17/30GK102955808SQ20111024859
公開日2013年3月6日 申請日期2011年8月26日 優(yōu)先權(quán)日2011年8月26日
發(fā)明者史曉峰, 蔡斌, 張文郁, 宮振飛, 崔小豐, 韓欣, 肖桂菊, 邱翔虎, 崔曉春 申請人:騰訊科技(深圳)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
三江| 双牌县| 苗栗市| 永靖县| 湘潭县| 米易县| 沅陵县| 鄂伦春自治旗| 大荔县| 宣汉县| 利辛县| 高邑县| 岳阳市| 大城县| 颍上县| 乌海市| 白河县| 康保县| 北京市| 台北市| 秭归县| 临清市| 福海县| 湘乡市| 许昌县| 望都县| 嘉峪关市| 镶黄旗| 玉门市| 大宁县| 柳林县| 韩城市| 玛沁县| 从江县| 姚安县| 绥化市| 宣恩县| 旺苍县| 德兴市| 长阳| 古蔺县|