張俊飛, 吳小玲
(廣州醫(yī)科大學(xué) 基礎(chǔ)醫(yī)學(xué)院, 廣州 511436)
隨著信息技術(shù)的發(fā)展,《國(guó)家中長(zhǎng)期教育改革和發(fā)展規(guī)劃綱要(2010-2020年)》[1]明確提出:構(gòu)建國(guó)家教育管理信息系統(tǒng),制定學(xué)?;A(chǔ)信息管理要求,加快學(xué)校管理信息化進(jìn)程,促進(jìn)學(xué)校管理標(biāo)準(zhǔn)化、規(guī)范化。當(dāng)前很多高校已實(shí)現(xiàn)了信息化教學(xué),教師采用ppt、視頻、動(dòng)畫、圖片、文本等多媒體資源輔助教學(xué);新的信息化教學(xué)模式、理念井噴涌現(xiàn),如MOOC[2]、微課[3]、Moodle[4]等。信息化教學(xué)和新的教學(xué)模式等都促使教學(xué)資源實(shí)現(xiàn)數(shù)字化轉(zhuǎn)型,大容量的數(shù)字教學(xué)資源存儲(chǔ)已經(jīng)成為不可回避的問題。
當(dāng)前高校數(shù)字教學(xué)資源存儲(chǔ)架構(gòu),主要以部署了管理系統(tǒng)的應(yīng)用服務(wù)器為中心,這是一種附屬服務(wù)器存儲(chǔ)架構(gòu)模式[5]。這種存儲(chǔ)架構(gòu)存在如下幾點(diǎn)缺陷:① 具有高性能與高擴(kuò)展能力的服務(wù)器成本較高;② 文件的存儲(chǔ)功能與應(yīng)用服務(wù)爭(zhēng)奪系統(tǒng)資源,造成系統(tǒng)服務(wù)效率的大幅下降;③ 應(yīng)用服務(wù)器的系統(tǒng)故障將直接影響教學(xué)資源的安全性和可用性,給學(xué)校的教學(xué)工作帶來不便。
數(shù)字化教學(xué)資源按照單個(gè)資源大小可分為大文件數(shù)字教學(xué)資源和小文件數(shù)字教學(xué)資源。一般教學(xué)視頻、教學(xué)軟件等可歸為大文件數(shù)字教學(xué)資源,課件ppt、Word等Office文件、圖片以及生成的程序文件可以歸為小文件數(shù)字教學(xué)資源。本文從單個(gè)數(shù)字教學(xué)資源大小出發(fā),分別設(shè)計(jì)了針對(duì)大文件和小文件的分布式存儲(chǔ)方案,以實(shí)現(xiàn)具有大容量的存儲(chǔ)空間,確保整個(gè)數(shù)據(jù)資源的安全和快速存取。
大數(shù)據(jù)帶來的變化是從集中走向分布,分布式存儲(chǔ)是大數(shù)據(jù)存儲(chǔ)的發(fā)展方向[6]。本研究面向大文件存儲(chǔ)設(shè)計(jì)采用開源的Hadoop框架[7]。Hadoop框架是在分布式服務(wù)器集群上存儲(chǔ)海量數(shù)據(jù)并運(yùn)行分布式分析,其設(shè)計(jì)規(guī)模不依賴于硬件, 具有高效性,核心部分由Hadoop分布式文件系統(tǒng)(Hadoop Distributed File System,HDFS)和MapReduce組成。Hadoop的體系結(jié)構(gòu)正是通過HDFS來實(shí)現(xiàn)對(duì)分布式存儲(chǔ)的底層支持。
HDFS適合于大規(guī)模數(shù)據(jù)集應(yīng)用,具有高度容錯(cuò)性和高吞吐量的數(shù)據(jù)訪問等特點(diǎn)。1個(gè)HDFS集群可由1個(gè)NameNode和多個(gè)DataNode構(gòu)建。NameNode管理著文件系統(tǒng)的NameSpace、集群配置信息,并且記錄著文件中存儲(chǔ)塊(Block)所在的數(shù)據(jù)節(jié)點(diǎn)的位置信息。DataNode是文件存儲(chǔ)的基本單元, 保存Block的元數(shù)據(jù),根據(jù)NameNode的調(diào)度來存儲(chǔ)和檢索數(shù)據(jù), 并且周期性向NameNode發(fā)送存儲(chǔ)Block信息的列表[8]。
HDFS的設(shè)計(jì)面向處理單個(gè)文件大小達(dá)到幾百M(fèi)B、GB、TB或PB的大數(shù)據(jù),以高數(shù)據(jù)吞吐量為設(shè)計(jì)目標(biāo),支持1次寫入、多次讀取的流式數(shù)據(jù)訪問模式。HDFS搭建適于普通商用硬件,通過數(shù)據(jù)分塊實(shí)現(xiàn)數(shù)據(jù)塊的多副本分布保存,保證了數(shù)據(jù)的高可靠性,可以容忍集群結(jié)點(diǎn)失效和數(shù)據(jù)不完整,并且多副本管理提高了數(shù)據(jù)的訪問速度。
(1) 海量小文件。HDFS的設(shè)計(jì)初衷是便于存儲(chǔ)大文件,針對(duì)海量小文件存儲(chǔ)勢(shì)必造成NameNode元數(shù)據(jù)節(jié)點(diǎn)變大,從而導(dǎo)致內(nèi)存成為系統(tǒng)容納文件數(shù)目的瓶頸,還有可能導(dǎo)致內(nèi)存溢出而崩潰。面對(duì)小文件存儲(chǔ),Hadoop提供了對(duì)應(yīng)的解決方案分別是:① Hadoop Archives方法把大量小文件歸檔到1個(gè)大文件中進(jìn)行存儲(chǔ)[9];② 采用序列化文件方式合并大量小文件,并生成SequenceFile文件[10];③ CombineFileInputFormat方法,將多個(gè)文件合并成1個(gè)單獨(dú)的Split[11]。然而這些解決方案操作復(fù)雜,且無法實(shí)現(xiàn)文件的動(dòng)態(tài)增刪。
(2) 低延時(shí)數(shù)據(jù)訪問。HDFS為保證高吞吐量,往往是以犧牲低延時(shí)為代價(jià),所以低延時(shí)數(shù)據(jù)應(yīng)用不適合在HDFS上存儲(chǔ)和運(yùn)行,如實(shí)時(shí)處理事務(wù)等。
(3) 多用戶同時(shí)寫入,任意修改。HDFS中的寫入操作都是將數(shù)據(jù)添加到文件的末尾。HDFS到目前為止還不支持同時(shí)多個(gè)寫入操作,也不支持在文件的任意位置進(jìn)行修改。
在信息化教學(xué)中,小文件數(shù)量占有很大比例,這些小文件往往需要及時(shí)訪問、修改。面對(duì)小文件存儲(chǔ),HDFS技術(shù)顯得有些力不從心。本文小文件存儲(chǔ)技術(shù)采用微軟分布式文件系統(tǒng)(Distributed File System, DFS),利用Web、通用網(wǎng)絡(luò)文件系統(tǒng)(Common Internet File System, CIFS)協(xié)議和映射網(wǎng)絡(luò)驅(qū)動(dòng)器實(shí)現(xiàn)存儲(chǔ)數(shù)據(jù)的訪問。
DFS[12]是Microsoft的網(wǎng)絡(luò)服務(wù)器組件,方便用戶在網(wǎng)絡(luò)上查詢和管理跨網(wǎng)絡(luò)分布的數(shù)據(jù)。DFS是1個(gè)樹狀結(jié)構(gòu),包括1個(gè)DFS命名空間和多個(gè)DFS數(shù)據(jù)節(jié)點(diǎn)。DFS命名空間主要將不同存儲(chǔ)設(shè)備上的共享資源以DFS鏈接的形式匯聚一起,使用統(tǒng)一的命名路徑實(shí)現(xiàn)對(duì)分布資源的集中訪問。DFS數(shù)據(jù)節(jié)點(diǎn)之間通過多機(jī)復(fù)制機(jī)制、只讀復(fù)制機(jī)制或遠(yuǎn)程差分壓縮(Remote differential compression,RDC)復(fù)制機(jī)制實(shí)現(xiàn)復(fù)制組中成員數(shù)據(jù)的一致性。DFS實(shí)現(xiàn)了跨網(wǎng)絡(luò)分布數(shù)據(jù)資源的負(fù)載均衡、數(shù)據(jù)的冗余高可用,采用就近訪問機(jī)制實(shí)現(xiàn)用戶訪問網(wǎng)絡(luò)距離最近的數(shù)據(jù)資源,并且與Windows權(quán)限集成以保證數(shù)據(jù)資源的安全。
DFS組織跨物理網(wǎng)絡(luò)分散的共享資源,集合到1個(gè)根目錄中,形成虛擬共享資源。對(duì)于用戶來說,只需要訪問虛擬共享資源就可以鏈接到分散在其他計(jì)算機(jī)中的真實(shí)資源。DFS分布式存儲(chǔ)設(shè)計(jì)實(shí)現(xiàn)了集中訪問、操作簡(jiǎn)單,并且提高了資源的存取效率。DFS數(shù)據(jù)訪問體系架構(gòu)如圖1所示。
圖1 DFS數(shù)據(jù)訪問體系架構(gòu)
小文件存儲(chǔ)方案采用NAS作為資源存儲(chǔ)介質(zhì),以CIFS作為文件共享協(xié)議[13]。CIFS是Microsoft公共開放的SMB協(xié)議版本,運(yùn)行在高層的一種應(yīng)用程序傳輸協(xié)議[14]。CIFS提供更加直接的服務(wù)器接口,通過訪問遠(yuǎn)程Internet中其他計(jì)算機(jī)上的共享文件以獲取其資源。
“映射網(wǎng)絡(luò)驅(qū)動(dòng)器”是微軟實(shí)現(xiàn)資源文件共享的一種方法[15]。它采用CIFS協(xié)議實(shí)現(xiàn)遠(yuǎn)端共享資源映射到本地,以盤符的形式存在[16],在權(quán)限范圍內(nèi),用戶可以進(jìn)行相應(yīng)的文件操作。
針對(duì)單個(gè)文件不同大小的數(shù)字教學(xué)資源采用不同的存儲(chǔ)方案,從而產(chǎn)生不同的讀寫設(shè)計(jì)。本文針對(duì)不同大小的數(shù)字教學(xué)資源存儲(chǔ)和讀取方案如圖2、3所示。文件存儲(chǔ)操作,首先會(huì)判斷文件大小,選擇相應(yīng)的存儲(chǔ)方案;文件讀取操作,則會(huì)根據(jù)文件存儲(chǔ)路徑在對(duì)應(yīng)的存儲(chǔ)介質(zhì)中進(jìn)行查詢、提取,并展現(xiàn)出來。
圖2 文件存儲(chǔ)流程
圖3 文件讀取流程
HDFS對(duì)大文件存儲(chǔ)和讀取完全依賴自身的分布式處理機(jī)制,處理流程如圖4、5所示,分別從數(shù)據(jù)的寫入、讀取兩方面進(jìn)行了描繪。
圖4 HDFS寫入數(shù)據(jù)
圖5 HDFS讀取數(shù)據(jù)
3.1.1 HDFS寫入數(shù)據(jù)操作
① 客戶端向HDFS提出寫入數(shù)據(jù)RPC請(qǐng)求。命名節(jié)點(diǎn)接收到請(qǐng)求后,進(jìn)行客戶端權(quán)限檢查、文件是否存在判斷等檢查工作,檢查通過則開始寫入操作,否則拋出異常(圖4步驟1、2);
② 客戶端在開始寫入數(shù)據(jù)時(shí),先進(jìn)行數(shù)據(jù)分塊Block,并放入1個(gè)隊(duì)列,然后命名節(jié)點(diǎn)分配一個(gè)數(shù)據(jù)節(jié)點(diǎn)的列表給客戶端來存儲(chǔ)Block數(shù)據(jù)。圖4中顯示3個(gè)數(shù)據(jù)節(jié)點(diǎn),它們之間做數(shù)據(jù)冗余復(fù)制(圖4步驟3~5);
③ 當(dāng)客戶端收到當(dāng)前Block寫入成功的回執(zhí)ack packet之后,會(huì)把隊(duì)列中當(dāng)前Block移除,進(jìn)行下1個(gè)Block的寫入。
3.1.2 HDFS讀取數(shù)據(jù)操作
① 客戶端讀取1個(gè)文件時(shí),先從命名節(jié)點(diǎn)取得這個(gè)文件的前幾個(gè)Block的數(shù)據(jù)節(jié)點(diǎn)信息(圖5步驟1、2);
② 開始調(diào)用read()方法,首先去讀取第1次從命名節(jié)點(diǎn)取得的幾個(gè)Block,當(dāng)讀取完成后,再去命名節(jié)點(diǎn)拿下1批Block的數(shù)據(jù)節(jié)點(diǎn)信息,重復(fù)循環(huán)(圖5步驟3~5);
③ 調(diào)用Close()方法完成讀取(圖5步驟6)。
基于DFS的小文件管理系統(tǒng)包含:Web終端和桌面應(yīng)用終端,如圖6、7所示。
圖6 系統(tǒng)Web界面
圖7 桌面應(yīng)用界面
Web終端實(shí)現(xiàn)了師生對(duì)教學(xué)資源按照不同權(quán)限進(jìn)行相應(yīng)管理。教師通過Web終端可以創(chuàng)建班級(jí),從而實(shí)現(xiàn)學(xué)生和教學(xué)資源按照班級(jí)為單位進(jìn)行管理。學(xué)生通過Web終端實(shí)現(xiàn)對(duì)所在班級(jí)的個(gè)人文件進(jìn)行管理,對(duì)班級(jí)公共課程文件進(jìn)行查詢、下載操作。教師和學(xué)生權(quán)限分配見表1。
表1 師生權(quán)限分配表
桌面應(yīng)用終端利用微軟映射網(wǎng)絡(luò)驅(qū)動(dòng)器,通過CIFS協(xié)議實(shí)現(xiàn)了對(duì)NAS存儲(chǔ)共享資源文件夾的本地化加載,把班級(jí)公共課程文件夾和個(gè)人文件夾加載到本地磁盤中。
本研究依靠本??尚械木W(wǎng)絡(luò)結(jié)構(gòu)實(shí)現(xiàn)存儲(chǔ)架構(gòu)。本校教學(xué)機(jī)房通過接入層交換機(jī),在服務(wù)器房形成匯聚點(diǎn)。NAS存儲(chǔ)設(shè)備和應(yīng)用服務(wù)器分別與匯聚交換機(jī)相連,形成網(wǎng)絡(luò)互通。網(wǎng)絡(luò)鏈路采用單模光纖,傳輸速率達(dá)到千兆。網(wǎng)絡(luò)結(jié)構(gòu)如圖8所示。
圖8 網(wǎng)絡(luò)結(jié)構(gòu)圖
HDFS分布式系統(tǒng)部署在5臺(tái)高性能的服務(wù)器中,其中1臺(tái)配置為命名節(jié)點(diǎn),其他4臺(tái)為數(shù)據(jù)節(jié)點(diǎn),用于存儲(chǔ)教學(xué)視頻和相關(guān)教學(xué)軟件。DFS系統(tǒng)采用1臺(tái)高配服務(wù)器和2臺(tái)NAS存儲(chǔ)設(shè)備組成,其中服務(wù)器配置為DFS的命名空間,1臺(tái)NAS設(shè)備存儲(chǔ)班級(jí)課程公共小文件資源,另外1臺(tái)NAS設(shè)備存儲(chǔ)教師和學(xué)生的個(gè)人小文件資源,并且2臺(tái)NAS設(shè)備間配置RDC,實(shí)現(xiàn)數(shù)據(jù)冗余保證數(shù)據(jù)的高可用、負(fù)載均衡,以供高速訪問。
系統(tǒng)已經(jīng)在本校推廣,被多門課程使用。在教學(xué)實(shí)踐應(yīng)用過程中,對(duì)HDFS和DFS寫入和讀取數(shù)據(jù)速率進(jìn)行了分析對(duì)比,對(duì)比系統(tǒng)為該校之前以服務(wù)器硬盤為存儲(chǔ)介質(zhì)的單體教學(xué)資源存儲(chǔ)系統(tǒng)。單體教學(xué)資源存儲(chǔ)系統(tǒng)采用B/S結(jié)構(gòu)實(shí)現(xiàn)教學(xué)資源的上傳和下載。HDFS和單體系統(tǒng)數(shù)據(jù)讀寫速度對(duì)比如圖9所示,DFS和單體系統(tǒng)數(shù)據(jù)讀寫速度對(duì)比如圖10所示。
圖9 HDFS和單體系統(tǒng)對(duì)比
圖10 DFS和單體系統(tǒng)對(duì)比
由圖9可見,HDFS在讀取和寫入方面速度都比單體系統(tǒng)快,并且隨著數(shù)據(jù)大小的增加,單體系統(tǒng)寫入速度呈明顯下降趨勢(shì);由圖10可見,DFS因采用分布式數(shù)據(jù)存儲(chǔ)、CIFS協(xié)議實(shí)現(xiàn)數(shù)據(jù)的上傳和下載,讀取和寫入速度優(yōu)于單體系統(tǒng),且隨著數(shù)據(jù)大小的增加,速率沒有明顯的下降趨勢(shì)。
針對(duì)海量數(shù)字化教學(xué)資源存儲(chǔ)問題,本研究采用HDFS和DFS分布式技術(shù)分別應(yīng)用到了大文件資源和小文件資源的存儲(chǔ)中。后期的教學(xué)應(yīng)用,證實(shí)了HDFS對(duì)大文件資源的管理是高效可行的,DFS對(duì)小文件資源的管理是靈活有效的。