劉海寧,李德山
(1.天津中德應(yīng)用技術(shù)大學(xué) 經(jīng)貿(mào)管理學(xué)院,天津 300350;2.西南科技大學(xué) 經(jīng)濟(jì)管理學(xué)院,四川 綿陽(yáng) 621010)
隨著物聯(lián)網(wǎng)的發(fā)展,網(wǎng)絡(luò)上產(chǎn)生的數(shù)據(jù)成指數(shù)型增長(zhǎng)[1-2],大數(shù)據(jù)成為研究者的關(guān)注熱點(diǎn)。大數(shù)據(jù)是指從異構(gòu)設(shè)備收集的海量數(shù)據(jù)量[3],包括傳感器網(wǎng)絡(luò)、科學(xué)實(shí)驗(yàn)、網(wǎng)站和其他應(yīng)用以各種格式產(chǎn)生的數(shù)據(jù)[4]。數(shù)據(jù)結(jié)構(gòu)從結(jié)構(gòu)化數(shù)據(jù)向非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行轉(zhuǎn)化,使得傳統(tǒng)的關(guān)系數(shù)據(jù)庫(kù)不再適合存儲(chǔ)[5]。綜上,指數(shù)增長(zhǎng)、數(shù)據(jù)結(jié)構(gòu)和類(lèi)型的多樣性給傳統(tǒng)的數(shù)據(jù)管理系統(tǒng)帶來(lái)了數(shù)據(jù)存儲(chǔ)和分析的挑戰(zhàn)[6]。這就促進(jìn)了高效的分布式存儲(chǔ)機(jī)制的發(fā)展,為動(dòng)態(tài)增長(zhǎng)的大數(shù)據(jù)提供可靠和高效的存儲(chǔ),從而引發(fā)具有改進(jìn)的訪(fǎng)問(wèn)性能和容錯(cuò)性的存儲(chǔ)系統(tǒng)的創(chuàng)新發(fā)展。
存儲(chǔ)機(jī)制從傳統(tǒng)的數(shù)據(jù)存儲(chǔ)到NoSQL技術(shù)的結(jié)構(gòu)轉(zhuǎn)變滿(mǎn)足了大數(shù)據(jù)存儲(chǔ)要求。 NoSQL數(shù)據(jù)庫(kù)克服了關(guān)系數(shù)據(jù)庫(kù)的局限,提供了可橫向擴(kuò)展、靈活、高可用、可訪(fǎng)問(wèn)且相對(duì)便宜的存儲(chǔ)解決方案, 已成為大多數(shù)存儲(chǔ)系統(tǒng)采用的技術(shù)[7]。與關(guān)系數(shù)據(jù)庫(kù)不同,這些技術(shù)可為大量用戶(hù)同時(shí)與大數(shù)據(jù)交互提供支持。NoSQL數(shù)據(jù)庫(kù)在實(shí)現(xiàn)一致性、容錯(cuò)性、可用性和查詢(xún)支持方面表現(xiàn)出色,同時(shí)還保證了關(guān)系數(shù)據(jù)庫(kù)的一些獨(dú)特功能:可伸縮性、可用性、一致性和二級(jí)索引[8]。
文獻(xiàn)[9]提出一種面向列的NoSQL數(shù)據(jù)庫(kù),并從中提取增量,用于不同的增量應(yīng)用程序和不同的數(shù)據(jù)目標(biāo)。文獻(xiàn)[10]提出一種基于圖和關(guān)系數(shù)據(jù)庫(kù)的混合數(shù)據(jù)庫(kù)方法,通過(guò)調(diào)節(jié)一些約束可以從兩者的混合系統(tǒng)中獲益,使得兩個(gè)模型集成在一個(gè)系統(tǒng)中以消除各個(gè)系統(tǒng)的限制。文獻(xiàn)[11]提出了一種基于Mongo DB分布式數(shù)據(jù)庫(kù)存儲(chǔ)結(jié)構(gòu)的蛋白質(zhì)組學(xué)數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)方案,解決了傳統(tǒng)存儲(chǔ)系統(tǒng)中集群架構(gòu)關(guān)系復(fù)雜、維護(hù)成本高、代碼處理復(fù)雜的問(wèn)題。文獻(xiàn)[12]提出了一種可靠的分布式存儲(chǔ)系統(tǒng),使用結(jié)合對(duì)稱(chēng)和非對(duì)稱(chēng)加密方法的冗余輕量級(jí)加密算法,提高了分布式系統(tǒng)的可靠性和安全性。文獻(xiàn)[13]提出了一種新的分布式存儲(chǔ)系統(tǒng)Amoeba,使用自適應(yīng)多屬性數(shù)據(jù)分區(qū)以有效地支持自組織和重復(fù)查詢(xún),使得在所有屬性上的自組織查詢(xún)具有類(lèi)似的性能增益,然后自適應(yīng)地重新劃分基于觀察到的查詢(xún)序列的數(shù)據(jù),使得系統(tǒng)隨著時(shí)間的推移而改進(jìn)。文獻(xiàn)[14]提出一種基于ARM的海量大數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)方法,實(shí)現(xiàn)海量大數(shù)據(jù)的靈活高效存儲(chǔ)。對(duì)于存儲(chǔ)系統(tǒng)中數(shù)據(jù)放置機(jī)制的研究,文獻(xiàn)[15]中給出了一種多數(shù)據(jù)副本放置機(jī)制,以最小化訪(fǎng)問(wèn)代價(jià)為優(yōu)化目標(biāo),基于遺傳算法確定優(yōu)化的數(shù)據(jù)副本放置方案。文獻(xiàn)[16]提出一種可調(diào)整副本部署策略的數(shù)據(jù)副本放置機(jī)制,該機(jī)制根據(jù)數(shù)據(jù)訪(fǎng)問(wèn)頻率調(diào)整副本數(shù)量,并根據(jù)節(jié)點(diǎn)空閑容量設(shè)置副本。以上兩種數(shù)據(jù)放置機(jī)制在檢索時(shí)間等性能方面還有提升空間。
安全有效地存儲(chǔ)大數(shù)據(jù)是一個(gè)迫切的問(wèn)題。本文在現(xiàn)有數(shù)據(jù)存儲(chǔ)系統(tǒng)的基礎(chǔ)上,設(shè)計(jì)了一種大數(shù)據(jù)存儲(chǔ)系統(tǒng)架構(gòu),通過(guò)文件組合策略改進(jìn)HDFS小文件的讀寫(xiě)過(guò)程,使用Hive工具并行分析和提取海量日志,在HDFS文件系統(tǒng)上構(gòu)建云存儲(chǔ)平臺(tái)。提出一種快速啟發(fā)式數(shù)據(jù)放置機(jī)制,將數(shù)據(jù)放置問(wèn)題進(jìn)行數(shù)據(jù)化表示,并通過(guò)圖著色的貪婪算法給出放置方案。該放置方法能在最小化搜索時(shí)間的同時(shí)保證數(shù)據(jù)存儲(chǔ)的安全性,采用該系統(tǒng)及數(shù)據(jù)放置機(jī)制能夠有效實(shí)現(xiàn)大數(shù)據(jù)安全高效地存儲(chǔ)。
大數(shù)據(jù)分布式存儲(chǔ)系統(tǒng)使用HDFS文件系統(tǒng),其主要功能包括文檔用戶(hù)管理、HDFS小文件合并處理和日志分析。HDFS文件系統(tǒng)由1個(gè)名稱(chēng)節(jié)點(diǎn)和3個(gè)數(shù)據(jù)節(jié)點(diǎn)組成,而DFS服務(wù)器封裝了HDFS文件的基本操作,用戶(hù)只需通過(guò)瀏覽器即可輕松完成文件管理。分布式存儲(chǔ)系統(tǒng)的體系結(jié)構(gòu)如圖1所示。
圖1 大數(shù)據(jù)存儲(chǔ)系統(tǒng)架構(gòu)
元數(shù)據(jù)服務(wù)器主要用于存儲(chǔ)小文件的元數(shù)據(jù)信息,如果用戶(hù)上傳的文件被確定為小文件,則通過(guò)附加的寫(xiě)入方法將其合并到用戶(hù)文件中,并將其元數(shù)據(jù)信息記錄在元數(shù)據(jù)服務(wù)器中。當(dāng)用戶(hù)讀取一個(gè)小文件時(shí),它將根據(jù)文件直接定位和讀取元數(shù)據(jù)信息,提高了閱讀效率。在數(shù)據(jù)節(jié)點(diǎn)中顯示DFS服務(wù)器的作用是當(dāng)用戶(hù)讀取小于文件塊的文件時(shí)直接轉(zhuǎn)移到數(shù)據(jù)節(jié)點(diǎn),此時(shí),存儲(chǔ)此文件的數(shù)據(jù)節(jié)點(diǎn)將直接向用戶(hù)傳輸數(shù)據(jù),從而減少DFS服務(wù)器上的壓力,改善服務(wù)器響應(yīng)時(shí)間,同時(shí)提高文件的I / O效率。Hive元數(shù)據(jù)服務(wù)器主要用于日志分析,日志分析保存Hive表的元數(shù)據(jù)信息,然后將日志分析結(jié)果存儲(chǔ)到關(guān)系數(shù)據(jù)庫(kù)中,方便用戶(hù)查看。
NameNode是整個(gè)存儲(chǔ)系統(tǒng)的中央控制器,用于管理和維護(hù)整個(gè)文件系統(tǒng)樹(shù)及其中所有的文件和目錄,同時(shí)負(fù)責(zé)接收和處理留置請(qǐng)求以及管理、分配特定的存儲(chǔ)任務(wù)。NameNode管理的元數(shù)據(jù)信息以?xún)蓚€(gè)文檔的形式持久地保存在本地磁盤(pán)上:名稱(chēng)空間圖像文件FsImage和編輯日志文件EditLog。每個(gè)啟動(dòng)NameNode將首先加載FsImage文件,然后重做所記錄的操作EditLog,最后將Fslmage重新持久化到本地磁盤(pán)以及空的EditLog文件。NameNode定期執(zhí)行檢查點(diǎn),定期合并FsImage文件和EditLog文件。FsImage總是在最后一個(gè)檢查點(diǎn)之后記錄文件系統(tǒng)的元數(shù)據(jù),而EditLog則記錄一次檢查點(diǎn)到下一個(gè)檢查點(diǎn)之間的操作。NameNode記錄與每個(gè)文件對(duì)應(yīng)的每個(gè)塊的Datanode信息,但區(qū)別在于這些信息不會(huì)被持久存儲(chǔ),而是在系統(tǒng)啟動(dòng)時(shí)由Datanode節(jié)點(diǎn)報(bào)告和構(gòu)造。從NameNode對(duì)FsImage和EditLog文件進(jìn)行合并,然后將新的FsImage文件傳輸回舊的文件,并且新的EditLog在獲得FsImage和EditLog之后為空文件,因此一方面要確保EditLog文件不會(huì)太大,減少系統(tǒng)重啟時(shí)間;另一方面,Secondary NameNode對(duì)NameNode中的名稱(chēng)空間映像文件進(jìn)行備份,提高其容錯(cuò)性。
整個(gè)系統(tǒng)可分為認(rèn)證、數(shù)據(jù)文件塊加密、數(shù)字保護(hù)、數(shù)據(jù)文件加密和上傳、解密和下載、數(shù)據(jù)文件檢索查詢(xún)部分以及在后臺(tái)執(zhí)行的分布式數(shù)據(jù)文件系統(tǒng)過(guò)程和異常檢測(cè)軟件部分,系統(tǒng)結(jié)構(gòu)如圖2所示。
目前,性能問(wèn)題和安全性要求的結(jié)合使得大數(shù)據(jù)存儲(chǔ)系統(tǒng)中的數(shù)據(jù)放置問(wèn)題成為具有挑戰(zhàn)性的問(wèn)題。本文提出一種基于圖著色的貪婪算法的安全感知數(shù)據(jù)放置機(jī)制,在系統(tǒng)上以最小化總檢索時(shí)間存儲(chǔ)所有數(shù)據(jù)塊,同時(shí)保證數(shù)據(jù)的安全性,使得即使成功侵入塊,攻擊者也無(wú)法猜測(cè)或推斷其他塊的位置。
圖2 大數(shù)據(jù)存儲(chǔ)系統(tǒng)模塊化
大數(shù)據(jù)分布式存儲(chǔ)系統(tǒng)由M個(gè)存儲(chǔ)節(jié)點(diǎn)組成,節(jié)點(diǎn)i具有Ci單元的總存儲(chǔ)容量。節(jié)點(diǎn)之間的連接由對(duì)稱(chēng)矩陣B(M×M)表示,其中Bi, j=Bj,i表示節(jié)點(diǎn)i和j之間的雙向鏈路的帶寬。因此,Bi, j=Bj,i=0的情況意味著節(jié)點(diǎn)i和j沒(méi)有連接。系統(tǒng)的拓?fù)浣Y(jié)構(gòu)表示為圖G(V,E),其中V是頂點(diǎn)集合,即存儲(chǔ)節(jié)點(diǎn),E是邊緣集合頂點(diǎn),即連接存儲(chǔ)節(jié)點(diǎn)的鏈接。假設(shè)任何存儲(chǔ)節(jié)點(diǎn)都可以被視為訪(fǎng)問(wèn)。用戶(hù)可以提交存儲(chǔ)請(qǐng)求的系統(tǒng)點(diǎn),給定需要存儲(chǔ)大小為D的數(shù)據(jù)量的用戶(hù)請(qǐng)求。假設(shè)數(shù)據(jù)可以被分割成具有任意大小的多個(gè)塊,每個(gè)塊包含整個(gè)數(shù)據(jù)的部分重要/敏感信息,因此泄露單個(gè)塊的信息對(duì)惡意用戶(hù)沒(méi)有意義。本文將安全級(jí)別定義為存儲(chǔ)任何數(shù)據(jù)塊對(duì)的兩個(gè)節(jié)點(diǎn)之間的最小非零距離。最小距離必須保持為變化的參數(shù),以滿(mǎn)足不同用戶(hù)的安全要求。
(1)
假設(shè)來(lái)自/到達(dá)存儲(chǔ)設(shè)備的讀/寫(xiě)時(shí)間可以忽略不計(jì),從讀取請(qǐng)求的節(jié)點(diǎn)i到節(jié)點(diǎn)p的數(shù)據(jù)傳輸時(shí)間與從p到i的數(shù)據(jù)傳輸時(shí)間相同。對(duì)于寫(xiě)請(qǐng)求,因?yàn)橄到y(tǒng)中的鏈接是雙向的,因此如果可以最小化數(shù)據(jù)的檢索時(shí)間,那么它的總上傳時(shí)間也將最小化。
總傳輸時(shí)間的線(xiàn)性?xún)?yōu)化編程公式在數(shù)學(xué)上表示為minimize:TD,其受限條件為:
(2)
該約束確保所有塊大小的總和等于原始數(shù)據(jù)的大小。
Si≤Smax,Si≤Ci
(3)
其中Si≤Smax確保每個(gè)塊的大小不超過(guò)用戶(hù)定義的閾值,表示為Smax,Smax≤D。本文認(rèn)為數(shù)據(jù)所有者是指定塊大小閾值的最佳候選者,以便在塊泄漏時(shí)不泄露太多敏感信息。Si≤Ci確保了候選節(jié)點(diǎn)的足夠存儲(chǔ)容量。
f(Si,Sj,i,j)≥K,i,j=1,…,M
(4)
式(4)確保放置解決方案保證所需的安全級(jí)別,即存儲(chǔ)相同數(shù)據(jù)的兩個(gè)塊的節(jié)點(diǎn)之間的最小距離,表示為K。K=0表示非安全級(jí)別,K=1表示最低安全級(jí)別,K=2表示默認(rèn)安全級(jí)別。然后定義函數(shù)f(Si,Sj,i,j)來(lái)計(jì)算該距離。該功能定義如下:
(5)
當(dāng)Si≠0且Sj≠0時(shí),函數(shù)取值為D(i,j),根據(jù)網(wǎng)絡(luò)中的最短路徑計(jì)算兩個(gè)節(jié)點(diǎn)之間的跳數(shù)。如果Si=0或Sj=0,意味著未選擇節(jié)點(diǎn)i或節(jié)點(diǎn)j來(lái)存儲(chǔ)任何數(shù)據(jù)塊,則將函數(shù)的結(jié)果設(shè)置為大于K的值,設(shè)置為最大整數(shù)值MaxInt。
解決上述問(wèn)題在計(jì)算上是困難的,因?yàn)榧词箤?duì)于簡(jiǎn)單的小型存儲(chǔ)系統(tǒng)來(lái)說(shuō),確定是否存在有效的放置解決方案也是NP的。上面給出的線(xiàn)性規(guī)劃能更好地描述數(shù)據(jù)放置問(wèn)題,并更好地理解問(wèn)題的復(fù)雜性,因此必須設(shè)計(jì)出有效的啟發(fā)式算法來(lái)解決這個(gè)問(wèn)題。
針對(duì)上節(jié)中存儲(chǔ)系統(tǒng)有效放置解決方案是NP的問(wèn)題,提出一種基于圖著色的安全感知數(shù)據(jù)放置機(jī)制。該放置機(jī)制屬于一種貪婪算法,確保了數(shù)據(jù)隱私的安全級(jí)別,同時(shí)最小化了數(shù)據(jù)檢索時(shí)間。
設(shè)圖G=(V,E)表示存儲(chǔ)系統(tǒng)的網(wǎng)絡(luò)拓?fù)?,給定包含0的非負(fù)整數(shù)的集合T,T著色問(wèn)題是從頂點(diǎn)集合V到用于給頂點(diǎn)著色的顏色值的非負(fù)整數(shù)集合的映射函數(shù)f,使得|f(i)-f(j)|?T,其中i,j∈V。即T著色問(wèn)題將顏色分配給頂點(diǎn),使得相鄰頂點(diǎn)的顏色之間的距離必須不屬于T。當(dāng)T={0}時(shí),T著色問(wèn)題歸結(jié)為一個(gè)共同的頂點(diǎn)著色問(wèn)題,其中兩個(gè)相鄰的頂點(diǎn)不能被賦予相同的顏色。
當(dāng)T={0}時(shí),T著色問(wèn)題適用于數(shù)據(jù)放置問(wèn)題以確保數(shù)據(jù)的完全安全性。假定數(shù)據(jù)可以劃分為任意數(shù)量的塊,在默認(rèn)安全級(jí)別(即K=2),兩個(gè)不同的數(shù)據(jù)塊不能存儲(chǔ)在兩個(gè)相鄰節(jié)點(diǎn)中。即給定存儲(chǔ)節(jié)點(diǎn)圖的著色解,具有相同顏色的節(jié)點(diǎn)可以存儲(chǔ)數(shù)據(jù)的塊,因?yàn)樗鼈儾皇菆D中的相鄰節(jié)點(diǎn)。具有相同顏色的存儲(chǔ)節(jié)點(diǎn)的數(shù)量可能比特定數(shù)據(jù)的塊的數(shù)量大得多,這就使得數(shù)據(jù)的安全性得到保證,因?yàn)榧词褂泄?jié)點(diǎn)上發(fā)生成功的入侵,惡意用戶(hù)也不能猜測(cè)其他數(shù)據(jù)塊的位置。
當(dāng)所需的安全級(jí)別高于默認(rèn)級(jí)別時(shí),問(wèn)題會(huì)更復(fù)雜,要求數(shù)據(jù)的兩個(gè)不同塊之間的距離大于2。為了解決這個(gè)問(wèn)題,本文提出一種算法,將K>2的問(wèn)題轉(zhuǎn)換為K=2的問(wèn)題。給定K值及其網(wǎng)絡(luò)拓?fù)?,算法開(kāi)始連接距離小于K的所有節(jié)點(diǎn)對(duì)。圖3給出了當(dāng)K被設(shè)置為3時(shí)的轉(zhuǎn)換過(guò)程的示意圖,其中(a)給出了系統(tǒng)的原始圖,(b)給出了圖轉(zhuǎn)換算法的結(jié)果,添加的邊被標(biāo)記為虛線(xiàn),(c)給出了在得到的圖上獲得的著色解決方案。
圖3 具有所需安全級(jí)別K=3的轉(zhuǎn)換示意圖
鑒于著色解決方案,可得到一組可行的存儲(chǔ)節(jié)點(diǎn)解決方案,如圖3(c)中所示,數(shù)據(jù)可以分成2個(gè)塊并存儲(chǔ)在可行的節(jié)點(diǎn)對(duì)上,節(jié)點(diǎn)1和節(jié)點(diǎn)6(紅色),節(jié)點(diǎn)2和節(jié)點(diǎn)7(藍(lán)色),節(jié)點(diǎn)3和節(jié)點(diǎn)4(綠色)或節(jié)點(diǎn)5和節(jié)點(diǎn)9(紫色)。
上述內(nèi)容解決了圖形轉(zhuǎn)換和著色問(wèn)題。本文的大數(shù)據(jù)放置機(jī)制算法由兩個(gè)部分組成:第1部分即著色解決方案,第2部分是貪婪算法,用以確定存儲(chǔ)在所選節(jié)點(diǎn)上的數(shù)據(jù)塊的大小。算法1給出了用于數(shù)據(jù)塊分配的貪婪算法的偽代碼。
算法首先計(jì)算用于為圖形著色的顏色數(shù)量,然后在外部for循環(huán)中使用用于對(duì)圖著色的顏色集合(表示為C)以確定最佳放置解決方案。對(duì)于集合C中的每種顏色c,該算法首先按照單元數(shù)據(jù)到接入點(diǎn)的檢索時(shí)間的升序?qū)λ泄?jié)點(diǎn)進(jìn)行排序,這些節(jié)點(diǎn)由c著色。給定有序的存儲(chǔ)節(jié)點(diǎn)集,表示為Vc′,算法開(kāi)始以最小的檢索時(shí)間分配來(lái)自第1節(jié)點(diǎn)的數(shù)據(jù)塊。
對(duì)于有序集合中的每個(gè)節(jié)點(diǎn)v,Vc′的數(shù)據(jù)塊大小由min{Smax,Cv,Dtemp}確定。這意味著,如果剩余數(shù)據(jù)的大小較大,則只能分配具有最大Smax的塊。然而,如果存儲(chǔ)節(jié)點(diǎn)的可用存儲(chǔ)空間Cv不夠,則只有較小的塊可以占用剩余的可用存儲(chǔ)空間。當(dāng)整個(gè)數(shù)據(jù)被容納時(shí),即使仍然存在可行的存儲(chǔ)節(jié)點(diǎn),由于這些節(jié)點(diǎn)在數(shù)據(jù)傳輸中較慢,該算法也會(huì)中斷for循環(huán)。
在算法執(zhí)行中,可能會(huì)發(fā)生沒(méi)有足夠節(jié)點(diǎn)來(lái)存儲(chǔ)數(shù)據(jù)的情況,即for循環(huán)已經(jīng)用相同的顏色完成了所有可行的節(jié)點(diǎn),但是數(shù)據(jù)仍然保留。由于無(wú)法在系統(tǒng)中容納數(shù)據(jù),可忽略此分配解決方案。只有可以容納整個(gè)數(shù)據(jù)時(shí),算法才計(jì)算放置解決方案的總檢索時(shí)間,如果當(dāng)前解決方案的總檢索時(shí)間小于先前的最佳解決方案,則該算法更新最佳解決方案以供將來(lái)進(jìn)行比較。
算法在迭代完所有可用解后停止,這些可行解由用于圖著色的顏色集表示。最終的解決方案是最佳的數(shù)據(jù)放置解決方案,它不僅滿(mǎn)足安全約束,而且最小化了數(shù)據(jù)的總檢索時(shí)間。當(dāng)數(shù)據(jù)過(guò)大而所有存儲(chǔ)節(jié)點(diǎn)都已經(jīng)飽和或者具有相同顏色的節(jié)點(diǎn)的數(shù)量過(guò)少時(shí),可能不存在可行的解決方案。在這種情況下拒絕存儲(chǔ)請(qǐng)求,即算法返回空集合。實(shí)際上,如果拒絕率太高,則提供者可能需要通過(guò)增加節(jié)點(diǎn)數(shù)量及其容量來(lái)擴(kuò)展系統(tǒng)。
在具有隨機(jī)網(wǎng)絡(luò)拓?fù)涞脑拼鎯?chǔ)系統(tǒng)上對(duì)本文存儲(chǔ)架構(gòu)和數(shù)據(jù)放置機(jī)制進(jìn)行測(cè)試。隨機(jī)生成具有最小節(jié)點(diǎn)度的拓?fù)湓O(shè)置為2,鏈路的帶寬從[100,500]Mbps隨機(jī)選擇。安全級(jí)別被默認(rèn)設(shè)置為3,即存儲(chǔ)相同數(shù)據(jù)的任何一對(duì)塊的節(jié)點(diǎn)之間的距離應(yīng)該至少是3跳,圖4~6給出了不同方法在隨機(jī)網(wǎng)絡(luò)拓?fù)湎碌男阅堋?/p>
本文采用平均檢索時(shí)間、存儲(chǔ)請(qǐng)求中的拒絕次數(shù)兩個(gè)指標(biāo)性能對(duì)大數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)放置方法進(jìn)行驗(yàn)證。為了驗(yàn)證有效性,將本文方法與其他3種方法進(jìn)行比較,這3種方法分別是:文獻(xiàn)[16]中的ARDS放置方法、隨機(jī)選擇節(jié)點(diǎn)(random selection of nodes,RSN)和最遠(yuǎn)節(jié)點(diǎn)優(yōu)先(furthest node first,FNF)。RSN在滿(mǎn)足安全要求的節(jié)點(diǎn)中隨機(jī)選擇一個(gè)存儲(chǔ)節(jié)點(diǎn)來(lái)存儲(chǔ)數(shù)據(jù)塊。該過(guò)程重復(fù)進(jìn)行,直到?jīng)]有更多的存儲(chǔ)節(jié)點(diǎn)可用時(shí),整個(gè)數(shù)據(jù)被容納或拒絕;FNF選擇與存儲(chǔ)相同數(shù)據(jù)塊的節(jié)點(diǎn)最遠(yuǎn)的節(jié)點(diǎn),F(xiàn)NF是一個(gè)迭代算法,與RSN具有相同的停止條件。
圖4 不同方法的總檢索時(shí)間比較
從圖4中可以看出:與其他算法相比,本文提出的大數(shù)據(jù)存儲(chǔ)系統(tǒng)與數(shù)據(jù)放置機(jī)制的總檢索時(shí)間是最少的。在最好的情況下,刻度減少檢索時(shí)間高達(dá)25.1%。另外,當(dāng)請(qǐng)求次數(shù)增加時(shí),本文方法的檢索時(shí)間略有增加,這是因?yàn)?,在少量?qǐng)求的情況下,本文方法會(huì)利用滿(mǎn)足安全約束的最近節(jié)點(diǎn)進(jìn)行搜索;在請(qǐng)求數(shù)量較高時(shí),所有最近的存儲(chǔ)節(jié)點(diǎn)都飽和,然后利用其他節(jié)點(diǎn),從而增加了檢索時(shí)間。
從圖5中數(shù)據(jù)可以看出:所有方法的存儲(chǔ)數(shù)據(jù)總量性能隨著請(qǐng)求數(shù)量的增加而變大,本文方法的存儲(chǔ)數(shù)據(jù)總量性能總是優(yōu)于其他3種方法,且隨著請(qǐng)求數(shù)量的增加,存儲(chǔ)總量的優(yōu)越性越大。
圖5 不同方法允許存儲(chǔ)的總數(shù)據(jù)量
從圖6中數(shù)據(jù)可以看出:對(duì)于拒絕次數(shù)性能,所有方法的拒絕次數(shù)隨著請(qǐng)求數(shù)量的增加而變大,本文方法的拒絕次數(shù)總是少于其他3種方法;隨著請(qǐng)求次數(shù)的增加,本文方法的拒絕次數(shù)增速較緩,ARDS方法增速也較緩,即隨著請(qǐng)求數(shù)量的增加,RSN和FNF方法的拒絕次數(shù)增加幅度大于本文方法和ARDS方法。
圖6 不同方法的拒絕次數(shù)
綜上,從圖5、6中可以看出:本文方法不僅在檢索時(shí)間方面具有最佳性能,而且在存儲(chǔ)數(shù)據(jù)總量和拒絕次數(shù)性能方面也具有最佳性能,這說(shuō)明本文方法不會(huì)犧牲其他性能指標(biāo)來(lái)實(shí)現(xiàn)數(shù)據(jù)安全性。
為了驗(yàn)證本文方法的普適性和可推廣性,從不同存儲(chǔ)節(jié)點(diǎn)數(shù)量和安全級(jí)別來(lái)驗(yàn)證本文存儲(chǔ)系統(tǒng)和數(shù)據(jù)放置機(jī)制的性能。存儲(chǔ)節(jié)點(diǎn)數(shù)量的影響:通過(guò)將存儲(chǔ)節(jié)點(diǎn)數(shù)量從25個(gè)變?yōu)?0個(gè)來(lái)評(píng)估所提算法的性能。
圖7表示不同算法對(duì)于存儲(chǔ)節(jié)點(diǎn)數(shù)的檢索時(shí)間。每種方法中檢索時(shí)間的縮短是由于鏈路容量的異構(gòu)性導(dǎo)致,可以看出本文算法在不同存儲(chǔ)節(jié)點(diǎn)數(shù)量下總是優(yōu)于其他方法。
圖7 不同存儲(chǔ)節(jié)點(diǎn)數(shù)量下的檢索時(shí)間
安全級(jí)別的影響:將安全級(jí)別從2改為5,并評(píng)估算法的性能。圖8給出了關(guān)于安全級(jí)別的檢索時(shí)間。
圖8 不同安全級(jí)別下的檢索時(shí)間
結(jié)果表明:當(dāng)安全級(jí)別增加時(shí),檢索時(shí)間增加, 這是因?yàn)榭拷尤朦c(diǎn)的存儲(chǔ)節(jié)點(diǎn)違反了安全約束。另外,當(dāng)增加安全級(jí)別時(shí),從存儲(chǔ)數(shù)據(jù)塊的節(jié)點(diǎn)到接入點(diǎn)的平均跳數(shù)也增加,導(dǎo)致檢索時(shí)間增加??梢钥闯霰疚姆椒ㄔ诓煌陌踩?jí)別下檢索時(shí)間總是小于其他方法,同時(shí)能夠保證數(shù)據(jù)的安全性。
本文提出一種大數(shù)據(jù)存儲(chǔ)模型和存儲(chǔ)系統(tǒng)中數(shù)據(jù)放置機(jī)制,首先設(shè)計(jì)了大數(shù)據(jù)存儲(chǔ)的存儲(chǔ)模型架構(gòu),在分析HDFS架構(gòu)和運(yùn)行機(jī)制的基礎(chǔ)上,通過(guò)文件組合策略改進(jìn)HDFS小文件的讀寫(xiě)過(guò)程,給出大數(shù)據(jù)存儲(chǔ)框架。為了減少數(shù)據(jù)存儲(chǔ)檢索時(shí)間和提高安全性能,提出一種用于數(shù)據(jù)存儲(chǔ)系統(tǒng)的數(shù)據(jù)放置機(jī)制,該放置機(jī)制是基于圖著色的貪婪算法來(lái)解決數(shù)據(jù)安全放置問(wèn)題。實(shí)驗(yàn)結(jié)果表明:與其他3種方法比較,本文方法在檢索時(shí)間、存儲(chǔ)數(shù)據(jù)總量和拒絕次數(shù)方面都體現(xiàn)了最佳性能,說(shuō)明了本文方法的有效性。