李煥
(咸陽職業(yè)技術(shù)學(xué)院,陜西 咸陽 712000)
在云計(jì)算技術(shù)、傳感器網(wǎng)絡(luò)技術(shù)、終端設(shè)備制造技術(shù)等多元化技術(shù)更新發(fā)展趨勢下,圖書館服務(wù)模式與讀者閱讀方式發(fā)生了巨大轉(zhuǎn)變,即基于讀者個(gè)性化需求的服務(wù)定制與內(nèi)容智能推送。在服務(wù)模式與閱讀方式逐步走向多樣化發(fā)展時(shí),用戶服務(wù)數(shù)據(jù)與讀者閱讀關(guān)聯(lián)性數(shù)據(jù)以海量模式極速增長。智慧圖書館大數(shù)據(jù)類型繁雜,決策系統(tǒng)對于數(shù)據(jù)的儲存與讀取明確要求高效、精確、即時(shí),而傳統(tǒng)數(shù)據(jù)儲存系統(tǒng)早已無法滿足圖書館海量數(shù)據(jù)與準(zhǔn)確儲存讀取等需求[1],所以構(gòu)建新型大數(shù)據(jù)儲存系統(tǒng),滿足智慧圖書館數(shù)據(jù)管理與決策需求已成為必然趨勢。
通過GFS 與HDFS 特性,基于Master/Slave 結(jié)構(gòu)設(shè)計(jì)智慧圖書館海量儲存系統(tǒng),其框架[2]具體如圖1所示。
由圖1可見,系統(tǒng)整體框架劃分為四部分,即客戶端、主節(jié)點(diǎn)、第二主節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn)??蛻舳斯δ芗刺幱谟脩魝?cè),為用戶進(jìn)入系統(tǒng)的入口,同時(shí)也是系統(tǒng)與用戶實(shí)時(shí)交互的載體,關(guān)鍵作用是對外提供操作接口,監(jiān)控用戶操作行為,在用戶發(fā)出指令之后,客戶端與遠(yuǎn)程接口相對接;主節(jié)點(diǎn)功能即其為系統(tǒng)框架核心,作為Master 端不僅可管控多數(shù)據(jù)節(jié)點(diǎn),還可實(shí)現(xiàn)信息與地址映射,就結(jié)構(gòu)層面而言,其功能結(jié)構(gòu)[3]具體如圖2所示。就功能層面來講,可管控日志、數(shù)據(jù)塊、安全。所以,主節(jié)點(diǎn)為系統(tǒng)核心環(huán)節(jié),是管理與驅(qū)動(dòng)儲存系統(tǒng)的神經(jīng)中樞。
第二主節(jié)點(diǎn)功能即主節(jié)點(diǎn)宕機(jī)狀態(tài)下的臨時(shí)備用節(jié)點(diǎn),監(jiān)控主節(jié)點(diǎn)工作狀態(tài),且在主節(jié)點(diǎn)內(nèi)穩(wěn)定運(yùn)行,落實(shí)檢查點(diǎn)相關(guān)機(jī)制,實(shí)時(shí)準(zhǔn)備代替主節(jié)點(diǎn)管理系統(tǒng),但是只具備讀取功能。
數(shù)據(jù)節(jié)點(diǎn)功能即用戶儲存數(shù)據(jù),基于數(shù)據(jù)塊方式在節(jié)點(diǎn)中儲存數(shù)據(jù)。在工作中,管理環(huán)節(jié)占據(jù)比例較大,監(jiān)聽主節(jié)點(diǎn)指令,并匯報(bào)實(shí)時(shí)運(yùn)行狀況。在結(jié)構(gòu)層面,其功能結(jié)構(gòu)[4]具體如圖3所示。由圖可知,邏輯層面包含數(shù)據(jù)操作與生命周期管控,且與上層接口銜接。在接口層,包含兩種模式,即IPC與TCP,以應(yīng)對在不同節(jié)點(diǎn)傳輸數(shù)據(jù)。
以輸入流對象提供接口,就具體需求設(shè)計(jì)多元讀取方式,以讀取數(shù)據(jù),且不同方式間存在特定關(guān)聯(lián)。數(shù)據(jù)讀取過程相對復(fù)雜,即構(gòu)建輸入流與勘誤處理分析。其中構(gòu)建輸入流應(yīng)基于調(diào)取遠(yuǎn)程接口getBlockLoc 方法獲取具體位置信息??蛻舳藙t通過BlockReader 接口根據(jù)字符讀取數(shù)據(jù)。
通過系統(tǒng)對于數(shù)據(jù)儲存的明確指令,寫入功能主要包含數(shù)據(jù)增補(bǔ)與寫入,因此,系統(tǒng)提供了針對性接口加以支持,表征著構(gòu)建新文件,就初始環(huán)節(jié)寫入數(shù)據(jù);通過append接口開啟輸出流以追加數(shù)據(jù),表征著基于既有文件,就末端環(huán)節(jié)寫入數(shù)據(jù)[5]。
3.3.1 元數(shù)據(jù)
元數(shù)據(jù)信息為主節(jié)點(diǎn)高效管理系統(tǒng)的依據(jù),以及命名空間數(shù)據(jù)與參數(shù)數(shù)據(jù)。就數(shù)據(jù)塊參數(shù)而言,文件與數(shù)據(jù)塊映射信息主要通過三個(gè)字段表征,即blockid、size、blockSeq。在設(shè)計(jì)類圖時(shí),構(gòu)成BlockMap 類圖結(jié)構(gòu),具體如圖4所示。
3.3.2 日志數(shù)據(jù)
日志數(shù)據(jù)切實(shí)反映了系統(tǒng)重要元數(shù)據(jù)操作歷史記錄,基于特定字段表示相應(yīng)操作,即創(chuàng)建文件、重命名、刪除、關(guān)閉文件、設(shè)置版本號、設(shè)置訪問時(shí)間等等。在日志數(shù)據(jù)管理中,需周期性與元數(shù)據(jù)融合,構(gòu)成檢查點(diǎn)機(jī)制,其中檢查點(diǎn)構(gòu)成會造成主節(jié)點(diǎn)狀態(tài)實(shí)時(shí)變化。
3.3.3 數(shù)據(jù)節(jié)點(diǎn)
數(shù)據(jù)節(jié)點(diǎn)管理需以特定字段加以表示,其具體管理類圖如圖5所示。
其中DatanodeID 與DataNodeInfo 保存表示信息,DatanodeDescriptor類成員變量即運(yùn)行狀態(tài)信息,而bandwidth代表負(fù)載均衡寬帶設(shè)置相關(guān)命令,invalidateBlocks代表數(shù)據(jù)塊刪除命令。數(shù)據(jù)節(jié)點(diǎn)添加進(jìn)集群前,需加以注冊,注冊過程由主節(jié)點(diǎn)管控,注冊成功之后,相關(guān)信息則會被保存,同時(shí)會把數(shù)據(jù)節(jié)點(diǎn)IP 編入網(wǎng)絡(luò)拓?fù)洹T谙到y(tǒng)運(yùn)行時(shí),主節(jié)點(diǎn)則會發(fā)揮作用,對數(shù)據(jù)節(jié)點(diǎn)進(jìn)行管理,以確保集群工作可靠性與穩(wěn)定性。
3.3.4 數(shù)據(jù)塊
系統(tǒng)中,主節(jié)點(diǎn)不僅需管理數(shù)據(jù)節(jié)點(diǎn),還需管理數(shù)據(jù)塊,即處理數(shù)據(jù)塊與數(shù)據(jù)接收報(bào)告。數(shù)據(jù)塊在主節(jié)點(diǎn)中,存在相應(yīng)不同狀態(tài),還可詳細(xì)劃分相關(guān)狀態(tài)。在類圖設(shè)計(jì)時(shí),基于BlockManager管理數(shù)據(jù)塊,而內(nèi)部結(jié)構(gòu)層面,則選用新方法儲存數(shù)據(jù)塊狀態(tài)[6]。
數(shù)據(jù)節(jié)點(diǎn)中,主要通過DatanodeStorage全程管理數(shù)據(jù)塊,基于Storage Directory管理相關(guān)目錄,此兩類共同構(gòu)成數(shù)據(jù)儲存類圖,具體如圖6所示。
就數(shù)據(jù)節(jié)點(diǎn)層面而言,以FSDataset類為輔助實(shí)現(xiàn)數(shù)據(jù)塊管理,即構(gòu)建數(shù)據(jù)文檔、審核數(shù)據(jù)塊信息。就功能不同,基于此類圖,抽象出子類,即FSDir、FSVolumn、FSVolumnSet。
基于計(jì)算機(jī)技術(shù)的智慧圖書館海量數(shù)據(jù)儲存系統(tǒng)應(yīng)支持多用戶端并發(fā)高速讀取操作,儲存效率高,成本低,且支持系統(tǒng)根據(jù)海量數(shù)據(jù)冗余備份的需要,實(shí)時(shí)數(shù)據(jù)備份策略。系統(tǒng)可擴(kuò)展性儲存流程[7]具體如圖7所示。
其中,NameNode作用是管理文件系統(tǒng)命名空間,即維護(hù)文件系統(tǒng)數(shù)與相關(guān)目錄結(jié)構(gòu)、元數(shù)據(jù),所有信息以不同文件形式永遠(yuǎn)儲存于本地磁盤,其中詳細(xì)記錄了文件塊所處數(shù)據(jù)節(jié)點(diǎn)信息,存儲節(jié)點(diǎn)數(shù)據(jù)塊位置信息在啟動(dòng)系統(tǒng)的時(shí)候,數(shù)據(jù)節(jié)點(diǎn)發(fā)揮作用重新構(gòu)建。DataNode是海量數(shù)據(jù)儲存單元,在智慧圖書館決策需要讀取數(shù)據(jù)時(shí),需先訪問NameNode,獲取文件信息與數(shù)據(jù)分布特性,并基于所獲信息通過儲存節(jié)點(diǎn)進(jìn)行數(shù)據(jù)讀取。在用戶獲取數(shù)據(jù)信息后,后續(xù)重復(fù)讀取數(shù)據(jù)時(shí),便不再需要重復(fù)訪問,客戶端會根據(jù)記錄從儲存節(jié)點(diǎn)讀取數(shù)據(jù)。另外,圖書館還可就海量數(shù)據(jù)儲存需要,以增加DataNode節(jié)點(diǎn)數(shù)量的方式,橫向增大儲存能力,只需把增加的DataNode 添加到NameNode優(yōu)化管理即可。
智慧圖書館海量數(shù)據(jù)儲存系統(tǒng)著重點(diǎn)在于節(jié)點(diǎn)磁盤速度,整合不同框架的集群節(jié)點(diǎn),讀寫速度分別為47MB/s與23MB/s。同時(shí)在個(gè)體差異性層面,與節(jié)點(diǎn)硬件配置也密切相關(guān)。系統(tǒng)在功能性測試時(shí),分別面向主節(jié)點(diǎn)與數(shù)據(jù)節(jié)點(diǎn)做了針對性測試,測試內(nèi)容與結(jié)果[8]具體如表1所示。
表1 功能測試結(jié)果
系統(tǒng)基于Linux 環(huán)境部署,為實(shí)時(shí)監(jiān)控系統(tǒng)運(yùn)行狀態(tài),利用Nmon工具全程監(jiān)控,其可監(jiān)視CPU使用率、內(nèi)存利用、磁盤讀寫比率、網(wǎng)絡(luò)I/O 速度等等,監(jiān)控結(jié)果可通過屏幕展示全部關(guān)鍵性能優(yōu)化信息,動(dòng)態(tài)更新,利于系統(tǒng)性能數(shù)據(jù)分析,且系統(tǒng)運(yùn)行穩(wěn)定,與預(yù)期明確相符。
5.2.1 數(shù)據(jù)讀取實(shí)現(xiàn)
數(shù)據(jù)儲存系統(tǒng)分布式存儲結(jié)構(gòu)在很大程度為數(shù)據(jù)迅速讀取提供了基礎(chǔ)性服務(wù),本文信息讀取主要是基于客戶端對外提供接口得以實(shí)現(xiàn)的,由整體架構(gòu)而言,數(shù)據(jù)讀取涉及客戶端,具體流程即用戶調(diào)用客戶端數(shù)據(jù)讀取接口,此接口便會基于主節(jié)點(diǎn)獲取數(shù)據(jù)塊位置信息,以此由遠(yuǎn)程過程調(diào)取方式與系統(tǒng)數(shù)據(jù)節(jié)點(diǎn)構(gòu)建數(shù)據(jù)讀取通道,從而讀取數(shù)據(jù)。數(shù)據(jù)讀取過程主要包括讀取接口調(diào)用、系統(tǒng)內(nèi)部交互、多數(shù)據(jù)塊副本基礎(chǔ)上怎樣選取最佳數(shù)據(jù)節(jié)點(diǎn)等。本文以讀取接口調(diào)用為例進(jìn)行了實(shí)現(xiàn)分析。
操作接口為用戶或者應(yīng)用程序獲得數(shù)據(jù)讀取的基礎(chǔ)入口,于大數(shù)據(jù)環(huán)境中,數(shù)據(jù)讀取可采取各式各樣的方式,常見的是Shell 接口、Java API、網(wǎng)頁下載,這主要是由應(yīng)用不同層面,為方便用戶層面加以設(shè)計(jì)的,不同方法所呈現(xiàn)的特征與優(yōu)勢大不相同。Shell接口用戶以命令方式執(zhí)行操作,通知系統(tǒng)讀取數(shù)據(jù),系統(tǒng)所提供的Shell 命令包含get、getMerge、cat、copyToLocal 等等。下面就copyToLocal指令,詳細(xì)闡述Shell文件復(fù)制實(shí)現(xiàn)過程:在客戶端傳輸copyToLocal 指令之后,主節(jié)點(diǎn)會就節(jié)點(diǎn)選擇策略,進(jìn)行讀取代價(jià)計(jì)算,以此根據(jù)讀取代價(jià)面向數(shù)據(jù)節(jié)點(diǎn)進(jìn)行排序處理,排名靠前則代表讀取效率越高,客戶端便會選取相對靠前的數(shù)據(jù)節(jié)點(diǎn)以連接構(gòu)建通道,從而實(shí)現(xiàn)數(shù)據(jù)讀取,但是在此過程中很有可能會由于數(shù)據(jù)塊損壞,導(dǎo)致報(bào)錯(cuò)。具體實(shí)現(xiàn)效果如圖8所示。
5.2.2 數(shù)據(jù)寫入實(shí)現(xiàn)
針對智慧圖書館海量數(shù)據(jù)存儲系統(tǒng),作為最為復(fù)雜的操作,數(shù)據(jù)寫入主要包含數(shù)據(jù)寫入與數(shù)據(jù)追加兩項(xiàng)操作。基于整體結(jié)構(gòu)而言,數(shù)據(jù)寫入即客戶端、主節(jié)點(diǎn)、數(shù)據(jù)節(jié)點(diǎn),依舊以操作接口實(shí)現(xiàn)進(jìn)行分析。
不同于數(shù)據(jù)讀取,數(shù)據(jù)寫入操作接口不包含網(wǎng)頁版,由Shell 接口與Java API 接口構(gòu)成。Shell 接口是面向Java API 的封裝,內(nèi)部基于Java API 得以實(shí)現(xiàn)。Shell接口使用類似于Linux 系統(tǒng)的Shell 命令,基于命令實(shí)現(xiàn)文件寫入。在寫入過程中,文件劃分為多個(gè)數(shù)據(jù)塊,其會并發(fā)寫入不同數(shù)據(jù)節(jié)點(diǎn)內(nèi),在寫入時(shí),會和主節(jié)點(diǎn)之間形成關(guān)聯(lián)性,并匯報(bào)數(shù)據(jù)塊存儲位置等相關(guān)信息。具體實(shí)現(xiàn)效果如圖9所示。
綜上所述,為適應(yīng)全新發(fā)展環(huán)境,強(qiáng)化服務(wù)能力,降低管理成本,智慧圖書館基于云計(jì)算、大數(shù)據(jù)等新型信息技術(shù),有機(jī)連接了硬件設(shè)備、數(shù)字資源、用戶、管理人員等相關(guān)對象,全面聯(lián)通,智慧化提供了知識資源服務(wù),實(shí)現(xiàn)了人與科學(xué)理論知識的有機(jī)融合,為用戶提供了更多新型知識,構(gòu)建了智能化、智慧化圖書服務(wù)模式。本文基于計(jì)算機(jī)設(shè)計(jì)了智慧圖書館海量數(shù)據(jù)儲存系統(tǒng),并進(jìn)行了系統(tǒng)測試,結(jié)果表明,系統(tǒng)可有效實(shí)現(xiàn)海量數(shù)據(jù)存儲管理功能,且各節(jié)點(diǎn)運(yùn)行過程中,對于不同數(shù)據(jù)類型,可根據(jù)節(jié)點(diǎn)選擇科學(xué)可行策略,以供高效數(shù)據(jù)儲存服務(wù)與讀寫功能,以此保障存儲性能的實(shí)效性,從而實(shí)現(xiàn)系統(tǒng)良好負(fù)載均衡性,在海量數(shù)據(jù)高效精確搜索的基礎(chǔ)上,系統(tǒng)I/O效率得以顯著提升。
自動(dòng)化技術(shù)與應(yīng)用2022年10期