本發(fā)明涉及一種面向云渲染的文件系統(tǒng)及構(gòu)建和訪問方法,尤其是涉及一種面向云渲染的分布式文件系統(tǒng)及構(gòu)建和訪問方法。
背景技術(shù):
據(jù)互聯(lián)網(wǎng)數(shù)據(jù)中心(IDC)數(shù)據(jù)顯示,截至2009年的數(shù)字信息總量為800,000PB(1PB=106GB),而2010年已達(dá)到1.2ZB(1ZB=1012GB)。到2020年,全球數(shù)字信息總量將達(dá)到35ZB。
正是由于互聯(lián)網(wǎng)的出現(xiàn),才促使數(shù)字信息的暴增。1996年,全球只有4800萬人會經(jīng)常上互聯(lián)網(wǎng),2010年,全球已經(jīng)有16億互聯(lián)網(wǎng)用戶。這些用戶并不僅僅瀏覽下網(wǎng)站而已,他們創(chuàng)建了大量的非結(jié)構(gòu)數(shù)據(jù),包括圖片、電子郵件等等。除了圖片、電子郵件之外,像即時消息、Wiki、博客的出現(xiàn)也導(dǎo)致了信息量的激增。
面對信息爆炸的互聯(lián)網(wǎng),對數(shù)據(jù)存儲和處理提出了新的挑戰(zhàn)。在這些挑戰(zhàn)下,傳統(tǒng)的數(shù)據(jù)存儲技術(shù)如數(shù)據(jù)庫,以及數(shù)據(jù)處理技術(shù)已經(jīng)不能滿足技術(shù)發(fā)展的需求,新興的海量數(shù)據(jù)存儲技術(shù),數(shù)據(jù)處理技術(shù)也不斷涌現(xiàn),其中一種數(shù)據(jù)處理技術(shù)是使數(shù)據(jù)存儲和數(shù)據(jù)處理相結(jié)合,面向的是海量數(shù)據(jù)的存儲應(yīng)用。
HDFS技術(shù)就是一項(xiàng)備受歡迎的數(shù)據(jù)處理技術(shù),HDFS的體系結(jié)構(gòu)采用主從結(jié)構(gòu)。一個HDFS系統(tǒng)只有一個管理節(jié)點(diǎn)和多個存儲節(jié)點(diǎn),單一的管理節(jié)點(diǎn)簡化了系統(tǒng)的架構(gòu)。但隨著數(shù)據(jù)量的不斷增長,單一的管理節(jié)點(diǎn)帶來的不足不斷突出,比如單點(diǎn)失效問題,單點(diǎn)性能瓶頸問題,擴(kuò)展性問題等。因此,由單一的管理節(jié)點(diǎn)演化成分布式的管理節(jié)點(diǎn)是HDFS未來的發(fā)展方向。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的就是為了克服上述現(xiàn)有技術(shù)存在的缺陷而提供一種面向云渲染的分布式文件系統(tǒng)及構(gòu)建和訪問方法。
本發(fā)明的目的可以通過以下技術(shù)方案來實(shí)現(xiàn):
一種面向云渲染的分布式文件系統(tǒng),該系統(tǒng)包括主管理節(jié)點(diǎn)、機(jī)架管理節(jié)點(diǎn)和存儲節(jié)點(diǎn),所述的主管理節(jié)點(diǎn)設(shè)有一個,所述的機(jī)架管理節(jié)點(diǎn)設(shè)置多個并分別連接至主管理節(jié)點(diǎn),每個機(jī)架管理節(jié)點(diǎn)均連接多個存儲節(jié)點(diǎn),進(jìn)而主管理節(jié)點(diǎn)、機(jī)架管理節(jié)點(diǎn)和客戶端節(jié)點(diǎn)形成樹狀結(jié)構(gòu),所述的存儲節(jié)點(diǎn)存儲相應(yīng)的文件數(shù)據(jù)塊,所述的機(jī)架管理節(jié)點(diǎn)存儲與之連接的存儲節(jié)點(diǎn)中存儲的文件數(shù)據(jù)塊的元數(shù)據(jù)信息,所述的主管理節(jié)點(diǎn)存儲整個文件系統(tǒng)的元數(shù)據(jù)信息。
所述的元數(shù)據(jù)信息包括目錄和文件元數(shù)據(jù)信息以及數(shù)據(jù)塊元數(shù)據(jù)信息,所述的目錄和文件元數(shù)據(jù)信息包括文件屬性信息,所述的數(shù)據(jù)塊元數(shù)據(jù)信息包括存儲節(jié)點(diǎn)與存儲節(jié)點(diǎn)中存儲的數(shù)據(jù)塊之間的映射關(guān)系。
該系統(tǒng)還包括日志服務(wù)器,所述的主管理節(jié)點(diǎn)、機(jī)架管理節(jié)點(diǎn)和存儲節(jié)點(diǎn)均連接至該日志服務(wù)器,所述的日志服務(wù)器存儲該文件系統(tǒng)的日志信息,所述的日志信息包括客戶端訪問該文件系統(tǒng)的讀寫操作日志以及整個文件系統(tǒng)中各節(jié)點(diǎn)的狀態(tài)信息。
一種面向云渲染的分布式文件系統(tǒng)的構(gòu)建方法,該方法包括如下步驟:
(a)配置存儲機(jī)架,設(shè)定每個存儲機(jī)架中的機(jī)架管理節(jié)點(diǎn)及相應(yīng)的存儲節(jié)點(diǎn);
(b)設(shè)定主管理節(jié)點(diǎn)選取周期;
(c)在每個選取周期開始時采用基于超時機(jī)制的paxos算法從所有機(jī)架管理節(jié)點(diǎn)中選取出主管理節(jié)點(diǎn)。
步驟(c)采用基于超時機(jī)制的paxos算法從所有機(jī)架管理節(jié)點(diǎn)中選取出主管理節(jié)點(diǎn)具體包括如下步驟:
(c1)系統(tǒng)中的每個機(jī)架管理節(jié)點(diǎn)分別作為提案者確定各自的租約編號,所有租約編號遞增,每個機(jī)架管理節(jié)點(diǎn)給系統(tǒng)中除自身以外的機(jī)架管理節(jié)點(diǎn)發(fā)送包括自身租約編號的租約狀態(tài)請求;
(c2)各機(jī)架管理節(jié)點(diǎn)接受到租約狀態(tài)請求后均分別作為一個參議者,每個參議者判斷自身是否存儲有先前租約狀態(tài)信息,若是則根據(jù)先前租約狀態(tài)信息和接收到的租約狀態(tài)請求進(jìn)行應(yīng)答回復(fù),否則進(jìn)行應(yīng)答回復(fù),應(yīng)答回復(fù)內(nèi)容為空;
其中根據(jù)先前租約狀態(tài)信息和接收到的租約狀態(tài)請求進(jìn)行應(yīng)答回復(fù)具體為:對接收到租約狀態(tài)請求中的租約編號Ni與先前租約狀態(tài)新信息中的先前租約編號K進(jìn)行一一比較,其中i=1,2……n,n為接收到的租約狀態(tài)請求總個數(shù),若K>Ni,則不回應(yīng),若K<Ni,則將先前租約編號為K的先前租約狀態(tài)信息回復(fù)給相應(yīng)的機(jī)架管理節(jié)點(diǎn);
(c3)各機(jī)架管理節(jié)點(diǎn)作為提案者檢查收到的應(yīng)答回復(fù),若應(yīng)答回復(fù)數(shù)量滿足多數(shù)派且應(yīng)答回復(fù)內(nèi)容均為空,則向系統(tǒng)中除自身以外的機(jī)架管理節(jié)點(diǎn)發(fā)送包含自身租約編號的租約狀態(tài)指令,若應(yīng)答回復(fù)數(shù)量滿足多數(shù)派且應(yīng)答回復(fù)內(nèi)容不全為空,則從所有應(yīng)答回復(fù)中獲取滿足多數(shù)派的應(yīng)答回復(fù)作為租約狀態(tài)指令發(fā)送至除自身以外的機(jī)架管理節(jié)點(diǎn),若應(yīng)答回復(fù)數(shù)量不滿足多數(shù)派則返回執(zhí)行步驟(c1);
(c4)各機(jī)架管理節(jié)點(diǎn)作為參議者接受到租約狀態(tài)指令,更新先前租約狀態(tài)信息,并回復(fù)確認(rèn)接受信息;
(c5)某一機(jī)架管理節(jié)點(diǎn)在時間T內(nèi)接受到確認(rèn)接受信息且滿足多數(shù)派,則標(biāo)記自身為主管理節(jié)點(diǎn),完成主管理節(jié)點(diǎn)選取。
一種面向云渲染的分布式文件系統(tǒng)的訪問方法,該方法包括如下步驟:
(1)客戶端采用就近原則向就近的機(jī)架管理節(jié)點(diǎn)發(fā)出訪問請求信息,該訪問請求信息為對應(yīng)的文件元數(shù)據(jù)信息,機(jī)架管理節(jié)點(diǎn)查找是否存在相應(yīng)的文件元數(shù)據(jù)信息,若存在,則訪問成功,執(zhí)行步驟(2),否則訪問失敗執(zhí)行步驟(3);
(2)客戶端從機(jī)架管理節(jié)點(diǎn)獲取文件元數(shù)據(jù)信息對應(yīng)的數(shù)據(jù)塊元數(shù)據(jù)信息,進(jìn)而根據(jù)數(shù)據(jù)塊元數(shù)據(jù)信息對相應(yīng)的存儲節(jié)點(diǎn)進(jìn)行讀寫操作,結(jié)束訪問;
(3)客戶端向主管理節(jié)點(diǎn)發(fā)出與步驟(1)中相同的訪問請求信息,主管理節(jié)點(diǎn)查找是否存在相應(yīng)的文件元數(shù)據(jù)信息,若存在,則訪問成功,執(zhí)行步驟(4),否則向客戶端反饋訪問異常信息并結(jié)束;
(4)客戶端從主管理節(jié)點(diǎn)獲取文件元數(shù)據(jù)信息對應(yīng)的數(shù)據(jù)塊元數(shù)據(jù)信息,進(jìn)而根據(jù)數(shù)據(jù)塊元數(shù)據(jù)信息對相應(yīng)的存儲節(jié)點(diǎn)進(jìn)行讀寫操作,結(jié)束訪問。
與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn):
(1)本發(fā)明分布式文件系統(tǒng)設(shè)置多個機(jī)架管理節(jié)點(diǎn)分擔(dān)主管理節(jié)點(diǎn)的負(fù)荷,因?yàn)榇蟛糠值目蛻舳苏埱蠖紩诒緳C(jī)架內(nèi)完成,因此客戶端對主管理節(jié)點(diǎn)二次請求的額外開銷很小,同時由于機(jī)架內(nèi)的文件數(shù)量有限,對每個機(jī)架管理節(jié)點(diǎn)設(shè)置多個存儲節(jié)點(diǎn),把數(shù)據(jù)存儲在存儲節(jié)點(diǎn)中,當(dāng)客戶端進(jìn)行請求操作時,可以加快數(shù)據(jù)的操作,本發(fā)明將傳統(tǒng)的文件系統(tǒng)單一的管理節(jié)點(diǎn)演化成分布式的管理節(jié)點(diǎn),有效解決了單點(diǎn)失效問題,單點(diǎn)性能瓶頸問題,擴(kuò)展性問題,提高了文件系統(tǒng)的優(yōu)越性和系統(tǒng)穩(wěn)定性;
(2)由于在云渲染中網(wǎng)絡(luò)帶寬是一個不可忽略的因素,如果不采取超時機(jī)制,任何的算法都不能保證在有限的時間內(nèi)完成,這必定會影響系統(tǒng)的整體性能,因此本發(fā)明基于超時機(jī)制的paxos算法能夠在云渲染環(huán)境中選取出主管理節(jié)點(diǎn),提高分布式文件系統(tǒng)的可靠性;
(3)本發(fā)明的面向云渲染的分布式文件系統(tǒng)的訪問方法中客戶端進(jìn)行訪問時,首先從機(jī)架管理節(jié)點(diǎn)獲取數(shù)據(jù)塊元數(shù)據(jù)信息,進(jìn)而訪問相應(yīng)的存儲節(jié)點(diǎn),若從機(jī)架管理節(jié)點(diǎn)獲取數(shù)據(jù)塊元數(shù)據(jù)信息失敗則從主管理節(jié)點(diǎn)進(jìn)行訪問,大大減小了主管理節(jié)點(diǎn)的壓力,提高了分布式文件系統(tǒng)的穩(wěn)定性。
附圖說明
圖1為本發(fā)明面向云渲染的分布式文件系統(tǒng)的結(jié)構(gòu)示意圖;
圖中,1為主管理節(jié)點(diǎn),2為機(jī)架管理節(jié)點(diǎn),3為存儲節(jié)點(diǎn),4日志服務(wù)器,5為客戶端。
具體實(shí)施方式
下面結(jié)合附圖和具體實(shí)施例對本發(fā)明進(jìn)行詳細(xì)說明。
實(shí)施例
如圖1所示,一種面向云渲染的分布式文件系統(tǒng),該系統(tǒng)包括主管理節(jié)點(diǎn)1、機(jī)架管理節(jié)點(diǎn)2和存儲節(jié)點(diǎn)3,主管理節(jié)點(diǎn)1設(shè)有一個,機(jī)架管理節(jié)點(diǎn)2設(shè)置多個并分別連接至主管理節(jié)點(diǎn)1,每個機(jī)架管理節(jié)點(diǎn)2均連接多個存儲節(jié)點(diǎn)3,進(jìn)而主管理節(jié)點(diǎn)1、機(jī)架管理節(jié)點(diǎn)2和客戶端5節(jié)點(diǎn)形成樹狀結(jié)構(gòu),存儲節(jié)點(diǎn)3存儲相應(yīng)的文件數(shù)據(jù)塊,機(jī)架管理節(jié)點(diǎn)2存儲與之連接的存儲節(jié)點(diǎn)3中存儲的文件數(shù)據(jù)塊的元數(shù)據(jù)信息,主管理節(jié)點(diǎn)1存儲整個文件系統(tǒng)的元數(shù)據(jù)信息。其中,元數(shù)據(jù)信息包括目錄和文件元數(shù)據(jù)信息以及數(shù)據(jù)塊元數(shù)據(jù)信息,目錄和文件元數(shù)據(jù)信息包括文件屬性信息,數(shù)據(jù)塊元數(shù)據(jù)信息包括存儲節(jié)點(diǎn)3與存儲節(jié)點(diǎn)3中存儲的數(shù)據(jù)塊之間的映射關(guān)系。該系統(tǒng)還包括日志服務(wù)器4,主管理節(jié)點(diǎn)1、機(jī)架管理節(jié)點(diǎn)2和存儲節(jié)點(diǎn)3均連接至該日志服務(wù)器4,日志服務(wù)器4存儲該文件系統(tǒng)的日志信息,日志信息包括客戶端5訪問該文件系統(tǒng)的讀寫操作日志以及整個文件系統(tǒng)中各節(jié)點(diǎn)的狀態(tài)信息。
一種面向云渲染的分布式文件系統(tǒng)的構(gòu)建方法,該方法包括如下步驟:
(a)配置存儲機(jī)架,設(shè)定每個存儲機(jī)架中的機(jī)架管理節(jié)點(diǎn)2及相應(yīng)的存儲節(jié)點(diǎn)3;
(b)設(shè)定主管理節(jié)點(diǎn)1選取周期;
(c)在每個選取周期開始時采用基于超時機(jī)制的paxos算法從所有機(jī)架管理節(jié)點(diǎn)2中選取出主管理節(jié)點(diǎn)1。
Paxos算法是一種基于消息傳遞的一致性算法,具有很強(qiáng)的容錯性,允許消息傳遞過程中出現(xiàn)丟失、重復(fù)、亂序的現(xiàn)象,但是不允許消息被修改;Paxos算法在節(jié)點(diǎn)少于半數(shù)失效的情況下仍能正常的工作,任何時候的節(jié)點(diǎn)失效都不會影響算法的正常執(zhí)行。
Paxos算法主要包括以下兩個階段:
(1)準(zhǔn)備階段
每個提案者在收到某個客戶發(fā)來的關(guān)于某個Value的請求時,向系統(tǒng)中大多數(shù)的參議者發(fā)送一個提案編號K,這里Value是請求的內(nèi)容。K在系統(tǒng)中是唯一的,并規(guī)定系統(tǒng)中的K是遞增的。默認(rèn)是采用提案者在系統(tǒng)中的ID作為第一次提案的初始值,此后提案編號的遞增公式如下:
假設(shè)系統(tǒng)中有N個提案者,每個編號為Ir(0≤Ir<N),提案者提交的提案編號K都應(yīng)該大于它已知的最大值,并且滿足:
其中,M=K/N,即使M是K除以N的商,其實(shí)M是個倍數(shù),初始時M=0,然后逐漸的M增加,使K大于系統(tǒng)中已知的最大編號值就可以了。然后Ir=K%N,即Ir是K除以N的余數(shù),這個公式其實(shí)變化的就是M,通過M不斷增加,來改變K值。
每個參議者在收到提案消息后,首先判斷收到的提案序號K在已收到的提案中的大小,假設(shè)已收到的提案序號最大為MaxN,if(MaxN>K),則不回應(yīng),結(jié)束本次批準(zhǔn)過程;if(MaxN<K),參議者則將自己收到的MaxN的提案信息回復(fù)給Proposer,并承諾不再接受小于K的提案;如果之前沒有進(jìn)行批準(zhǔn),則簡單回復(fù)空。
(2)接受階段
經(jīng)過一段時間后,提案者收到一些參議者回復(fù),回復(fù)可分為以下幾種:
(201)回復(fù)數(shù)量滿足多數(shù)派,并且所有的回復(fù)都是空,則提案者發(fā)出Accept(K,V)請求,K是準(zhǔn)備階段中的提案編號,V是參議者回復(fù)中的MaxN對應(yīng)的Value。
(202)回復(fù)數(shù)量滿足多數(shù)派,但回復(fù)的內(nèi)容中的提案編號不一致,則提案者找到所有回復(fù)中超過半數(shù)的提案回復(fù)給參議者。
(203)回復(fù)數(shù)量不滿足多數(shù)派,提案者嘗試增加提案序號,轉(zhuǎn)準(zhǔn)備階段繼續(xù)執(zhí)行。
參議者在接受階段接收到提案者的Accept(K,V)請求,首先檢查是否違背了準(zhǔn)備階段的承諾的不再接受小于K的提案的承諾,如沒有,則接收這個Accept(K,V)請求。
基于超時機(jī)制的paxos算法是在算法執(zhí)行期間加入超時機(jī)制,假定設(shè)定的超時時間為T,如果Proposer在T內(nèi)接收到Acceptor的回復(fù),就可以確定自己提交的提案被接受,標(biāo)記自己為主管理節(jié)點(diǎn)1。
根據(jù)上述超時機(jī)制的Paxos算法的基本思想,可總結(jié)得到步驟(c)采用基于超時機(jī)制的paxos算法從所有機(jī)架管理節(jié)點(diǎn)2中選取出主管理節(jié)點(diǎn)1具體包括如下步驟:
(c1)系統(tǒng)中的每個機(jī)架管理節(jié)點(diǎn)2分別作為提案者確定各自的租約編號,所有租約標(biāo)號遞增,每個機(jī)架管理節(jié)點(diǎn)2給系統(tǒng)中除自身以外的機(jī)架管理節(jié)點(diǎn)2發(fā)送包括自身租約編號的租約狀態(tài)請求;
(c2)各機(jī)架管理節(jié)點(diǎn)2接受到租約狀態(tài)請求后均分別作為一個參議者,每個參議者判斷自身是否存儲有先前租約狀態(tài)信息,若是則根據(jù)先前租約狀態(tài)信息和接收到的租約狀態(tài)請求進(jìn)行應(yīng)答回復(fù),否則進(jìn)行應(yīng)答回復(fù),應(yīng)答回復(fù)內(nèi)容為空;
其中根據(jù)先前租約狀態(tài)信息和接收到的租約狀態(tài)請求進(jìn)行應(yīng)答回復(fù)具體為:對接收到租約狀態(tài)請求中的租約編號Ni與先前租約狀態(tài)新信息中的先前租約編號K進(jìn)行一一比較,其中i=1,2……n,n為接收到的租約狀態(tài)請求總個數(shù),若K>Ni,則不回應(yīng),若K<Ni,則將先前租約編號為K的先前租約狀態(tài)信息回復(fù)給相應(yīng)的機(jī)架管理節(jié)點(diǎn)2;
(c3)各機(jī)架管理節(jié)點(diǎn)2作為提案者檢查收到的應(yīng)答回復(fù),若應(yīng)答回復(fù)數(shù)量滿足多數(shù)派且應(yīng)答回復(fù)內(nèi)容均為空,則向系統(tǒng)中除自身以外的機(jī)架管理節(jié)點(diǎn)2發(fā)送包含自身租約編號的租約狀態(tài)指令,若應(yīng)答回復(fù)數(shù)量滿足多數(shù)派且應(yīng)答回復(fù)內(nèi)容不全為空,則從所有應(yīng)答回復(fù)中獲取滿足多數(shù)派的應(yīng)答回復(fù)作為租約狀態(tài)指令發(fā)送至除自身以外的機(jī)架管理節(jié)點(diǎn)2,若應(yīng)答回復(fù)數(shù)量不滿足多數(shù)派則返回執(zhí)行步驟(c1);
(c4)各機(jī)架管理節(jié)點(diǎn)2作為參議者接受到租約狀態(tài)指令,更新先前租約狀態(tài)信息,并回復(fù)確認(rèn)接受信息;
(c5)某一機(jī)架管理節(jié)點(diǎn)2在時間T內(nèi)接受到確認(rèn)接受信息且滿足多數(shù)派,則標(biāo)記自身為主管理節(jié)點(diǎn)1,完成主管理節(jié)點(diǎn)1選取。
一種面向云渲染的分布式文件系統(tǒng)的訪問方法,該方法包括如下步驟:
(1)客戶端5采用就近原則向就近的機(jī)架管理節(jié)點(diǎn)2發(fā)出訪問請求信息,該訪問請求信息為對應(yīng)的文件元數(shù)據(jù)信息,機(jī)架管理節(jié)點(diǎn)2查找是否存在相應(yīng)的文件元數(shù)據(jù)信息,若存在,則訪問成功,執(zhí)行步驟(2),否則訪問失敗執(zhí)行步驟(3);
(2)客戶端5從機(jī)架管理節(jié)點(diǎn)2獲取文件元數(shù)據(jù)信息對應(yīng)的數(shù)據(jù)塊元數(shù)據(jù)信息,進(jìn)而根據(jù)數(shù)據(jù)塊元數(shù)據(jù)信息對相應(yīng)的存儲節(jié)點(diǎn)3進(jìn)行讀寫操作,結(jié)束訪問;
(3)客戶端5向主管理節(jié)點(diǎn)1發(fā)出與步驟(1)中相同的訪問請求信息,主管理節(jié)點(diǎn)1查找是否存在相應(yīng)的文件元數(shù)據(jù)信息,若存在,則訪問成功,執(zhí)行步驟(4),否則向客戶端5反饋訪問異常信息并結(jié)束;
(4)客戶端5從主管理節(jié)點(diǎn)1獲取文件元數(shù)據(jù)信息對應(yīng)的數(shù)據(jù)塊元數(shù)據(jù)信息,進(jìn)而根據(jù)數(shù)據(jù)塊元數(shù)據(jù)信息對相應(yīng)的存儲節(jié)點(diǎn)3進(jìn)行讀寫操作,結(jié)束訪問。