張俊飛, 吳小玲
(廣州醫科大學 基礎醫學院, 廣州 511436)
隨著信息技術的發展,《國家中長期教育改革和發展規劃綱要(2010-2020年)》[1]明確提出:構建國家教育管理信息系統,制定學校基礎信息管理要求,加快學校管理信息化進程,促進學校管理標準化、規范化。當前很多高校已實現了信息化教學,教師采用ppt、視頻、動畫、圖片、文本等多媒體資源輔助教學;新的信息化教學模式、理念井噴涌現,如MOOC[2]、微課[3]、Moodle[4]等。信息化教學和新的教學模式等都促使教學資源實現數字化轉型,大容量的數字教學資源存儲已經成為不可回避的問題。
當前高校數字教學資源存儲架構,主要以部署了管理系統的應用服務器為中心,這是一種附屬服務器存儲架構模式[5]。這種存儲架構存在如下幾點缺陷:① 具有高性能與高擴展能力的服務器成本較高;② 文件的存儲功能與應用服務爭奪系統資源,造成系統服務效率的大幅下降;③ 應用服務器的系統故障將直接影響教學資源的安全性和可用性,給學校的教學工作帶來不便。
數字化教學資源按照單個資源大小可分為大文件數字教學資源和小文件數字教學資源。一般教學視頻、教學軟件等可歸為大文件數字教學資源,課件ppt、Word等Office文件、圖片以及生成的程序文件可以歸為小文件數字教學資源。本文從單個數字教學資源大小出發,分別設計了針對大文件和小文件的分布式存儲方案,以實現具有大容量的存儲空間,確保整個數據資源的安全和快速存取。
大數據帶來的變化是從集中走向分布,分布式存儲是大數據存儲的發展方向[6]。本研究面向大文件存儲設計采用開源的Hadoop框架[7]。Hadoop框架是在分布式服務器集群上存儲海量數據并運行分布式分析,其設計規模不依賴于硬件, 具有高效性,核心部分由Hadoop分布式文件系統(Hadoop Distributed File System,HDFS)和MapReduce組成。Hadoop的體系結構正是通過HDFS來實現對分布式存儲的底層支持。
HDFS適合于大規模數據集應用,具有高度容錯性和高吞吐量的數據訪問等特點。1個HDFS集群可由1個NameNode和多個DataNode構建。NameNode管理著文件系統的NameSpace、集群配置信息,并且記錄著文件中存儲塊(Block)所在的數據節點的位置信息。DataNode是文件存儲的基本單元, 保存Block的元數據,根據NameNode的調度來存儲和檢索數據, 并且周期性向NameNode發送存儲Block信息的列表[8]。
HDFS的設計面向處理單個文件大小達到幾百MB、GB、TB或PB的大數據,以高數據吞吐量為設計目標,支持1次寫入、多次讀取的流式數據訪問模式。HDFS搭建適于普通商用硬件,通過數據分塊實現數據塊的多副本分布保存,保證了數據的高可靠性,可以容忍集群結點失效和數據不完整,并且多副本管理提高了數據的訪問速度。
(1) 海量小文件。HDFS的設計初衷是便于存儲大文件,針對海量小文件存儲勢必造成NameNode元數據節點變大,從而導致內存成為系統容納文件數目的瓶頸,還有可能導致內存溢出而崩潰。面對小文件存儲,Hadoop提供了對應的解決方案分別是:① Hadoop Archives方法把大量小文件歸檔到1個大文件中進行存儲[9];② 采用序列化文件方式合并大量小文件,并生成SequenceFile文件[10];③ CombineFileInputFormat方法,將多個文件合并成1個單獨的Split[11]。然而這些解決方案操作復雜,且無法實現文件的動態增刪。
(2) 低延時數據訪問。HDFS為保證高吞吐量,往往是以犧牲低延時為代價,所以低延時數據應用不適合在HDFS上存儲和運行,如實時處理事務等。
(3) 多用戶同時寫入,任意修改。HDFS中的寫入操作都是將數據添加到文件的末尾。HDFS到目前為止還不支持同時多個寫入操作,也不支持在文件的任意位置進行修改。
在信息化教學中,小文件數量占有很大比例,這些小文件往往需要及時訪問、修改。面對小文件存儲,HDFS技術顯得有些力不從心。本文小文件存儲技術采用微軟分布式文件系統(Distributed File System, DFS),利用Web、通用網絡文件系統(Common Internet File System, CIFS)協議和映射網絡驅動器實現存儲數據的訪問。
DFS[12]是Microsoft的網絡服務器組件,方便用戶在網絡上查詢和管理跨網絡分布的數據。DFS是1個樹狀結構,包括1個DFS命名空間和多個DFS數據節點。DFS命名空間主要將不同存儲設備上的共享資源以DFS鏈接的形式匯聚一起,使用統一的命名路徑實現對分布資源的集中訪問。DFS數據節點之間通過多機復制機制、只讀復制機制或遠程差分壓縮(Remote differential compression,RDC)復制機制實現復制組中成員數據的一致性。DFS實現了跨網絡分布數據資源的負載均衡、數據的冗余高可用,采用就近訪問機制實現用戶訪問網絡距離最近的數據資源,并且與Windows權限集成以保證數據資源的安全。
DFS組織跨物理網絡分散的共享資源,集合到1個根目錄中,形成虛擬共享資源。對于用戶來說,只需要訪問虛擬共享資源就可以鏈接到分散在其他計算機中的真實資源。DFS分布式存儲設計實現了集中訪問、操作簡單,并且提高了資源的存取效率。DFS數據訪問體系架構如圖1所示。

圖1 DFS數據訪問體系架構
小文件存儲方案采用NAS作為資源存儲介質,以CIFS作為文件共享協議[13]。CIFS是Microsoft公共開放的SMB協議版本,運行在高層的一種應用程序傳輸協議[14]。CIFS提供更加直接的服務器接口,通過訪問遠程Internet中其他計算機上的共享文件以獲取其資源。
“映射網絡驅動器”是微軟實現資源文件共享的一種方法[15]。它采用CIFS協議實現遠端共享資源映射到本地,以盤符的形式存在[16],在權限范圍內,用戶可以進行相應的文件操作。
針對單個文件不同大小的數字教學資源采用不同的存儲方案,從而產生不同的讀寫設計。本文針對不同大小的數字教學資源存儲和讀取方案如圖2、3所示。文件存儲操作,首先會判斷文件大小,選擇相應的存儲方案;文件讀取操作,則會根據文件存儲路徑在對應的存儲介質中進行查詢、提取,并展現出來。

圖2 文件存儲流程

圖3 文件讀取流程
HDFS對大文件存儲和讀取完全依賴自身的分布式處理機制,處理流程如圖4、5所示,分別從數據的寫入、讀取兩方面進行了描繪。

圖4 HDFS寫入數據

圖5 HDFS讀取數據
3.1.1 HDFS寫入數據操作
① 客戶端向HDFS提出寫入數據RPC請求。命名節點接收到請求后,進行客戶端權限檢查、文件是否存在判斷等檢查工作,檢查通過則開始寫入操作,否則拋出異常(圖4步驟1、2);
② 客戶端在開始寫入數據時,先進行數據分塊Block,并放入1個隊列,然后命名節點分配一個數據節點的列表給客戶端來存儲Block數據。圖4中顯示3個數據節點,它們之間做數據冗余復制(圖4步驟3~5);
③ 當客戶端收到當前Block寫入成功的回執ack packet之后,會把隊列中當前Block移除,進行下1個Block的寫入。
3.1.2 HDFS讀取數據操作
① 客戶端讀取1個文件時,先從命名節點取得這個文件的前幾個Block的數據節點信息(圖5步驟1、2);
② 開始調用read()方法,首先去讀取第1次從命名節點取得的幾個Block,當讀取完成后,再去命名節點拿下1批Block的數據節點信息,重復循環(圖5步驟3~5);
③ 調用Close()方法完成讀取(圖5步驟6)。
基于DFS的小文件管理系統包含:Web終端和桌面應用終端,如圖6、7所示。

圖6 系統Web界面

圖7 桌面應用界面
Web終端實現了師生對教學資源按照不同權限進行相應管理。教師通過Web終端可以創建班級,從而實現學生和教學資源按照班級為單位進行管理。學生通過Web終端實現對所在班級的個人文件進行管理,對班級公共課程文件進行查詢、下載操作。教師和學生權限分配見表1。

表1 師生權限分配表
桌面應用終端利用微軟映射網絡驅動器,通過CIFS協議實現了對NAS存儲共享資源文件夾的本地化加載,把班級公共課程文件夾和個人文件夾加載到本地磁盤中。
本研究依靠本校可行的網絡結構實現存儲架構。本校教學機房通過接入層交換機,在服務器房形成匯聚點。NAS存儲設備和應用服務器分別與匯聚交換機相連,形成網絡互通。網絡鏈路采用單模光纖,傳輸速率達到千兆。網絡結構如圖8所示。

圖8 網絡結構圖
HDFS分布式系統部署在5臺高性能的服務器中,其中1臺配置為命名節點,其他4臺為數據節點,用于存儲教學視頻和相關教學軟件。DFS系統采用1臺高配服務器和2臺NAS存儲設備組成,其中服務器配置為DFS的命名空間,1臺NAS設備存儲班級課程公共小文件資源,另外1臺NAS設備存儲教師和學生的個人小文件資源,并且2臺NAS設備間配置RDC,實現數據冗余保證數據的高可用、負載均衡,以供高速訪問。
系統已經在本校推廣,被多門課程使用。在教學實踐應用過程中,對HDFS和DFS寫入和讀取數據速率進行了分析對比,對比系統為該校之前以服務器硬盤為存儲介質的單體教學資源存儲系統。單體教學資源存儲系統采用B/S結構實現教學資源的上傳和下載。HDFS和單體系統數據讀寫速度對比如圖9所示,DFS和單體系統數據讀寫速度對比如圖10所示。

圖9 HDFS和單體系統對比

圖10 DFS和單體系統對比
由圖9可見,HDFS在讀取和寫入方面速度都比單體系統快,并且隨著數據大小的增加,單體系統寫入速度呈明顯下降趨勢;由圖10可見,DFS因采用分布式數據存儲、CIFS協議實現數據的上傳和下載,讀取和寫入速度優于單體系統,且隨著數據大小的增加,速率沒有明顯的下降趨勢。
針對海量數字化教學資源存儲問題,本研究采用HDFS和DFS分布式技術分別應用到了大文件資源和小文件資源的存儲中。后期的教學應用,證實了HDFS對大文件資源的管理是高效可行的,DFS對小文件資源的管理是靈活有效的。