摘要:教學(xué)資源共享平臺(tái)云存儲(chǔ)功能是基于Hadoop框架而設(shè)計(jì),教學(xué)資源具有文件數(shù)量龐大,小容量文件占比較高的特點(diǎn),Hadoop HDFS文件系統(tǒng)對(duì)小文件訪問效率較低,通過構(gòu)建小文件合并存儲(chǔ)的索引結(jié)構(gòu)及合并算法,解決小文件存儲(chǔ)效率問題,實(shí)現(xiàn)對(duì)云存儲(chǔ)性能的優(yōu)化。
關(guān)鍵詞:教學(xué)資源;共享平臺(tái);優(yōu)化設(shè)計(jì)
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2018)33-0018-02
1 引言
本文闡述的教學(xué)資源共享平臺(tái)是基于云存儲(chǔ)技術(shù)應(yīng)用層的業(yè)務(wù)系統(tǒng),眾所周知教學(xué)資源包含課件、教案、教學(xué)案例、教學(xué)視頻、歷屆學(xué)生課程考試作品、參考資料等內(nèi)容,文檔數(shù)目多,數(shù)據(jù)容量龐大,若不注重平臺(tái)性能優(yōu)化設(shè)計(jì),隨著系統(tǒng)運(yùn)行不斷數(shù)據(jù)積累,系統(tǒng)性能問題逐步呈現(xiàn),需要從低層到頂層綜合考慮性能優(yōu)化的設(shè)計(jì)問題。
2 教學(xué)資源共享平臺(tái)的性能問題分析
教學(xué)資源共享平臺(tái)性能問題主要集中在數(shù)據(jù)檢索速度隨著數(shù)據(jù)量的日益增長(zhǎng)而下滑,系統(tǒng)并發(fā)量的增長(zhǎng)而導(dǎo)致性能下滑,數(shù)據(jù)庫(kù)及WEB服務(wù)死鎖導(dǎo)致服務(wù)器資源耗盡,在疊加網(wǎng)絡(luò)基礎(chǔ)設(shè)施外圍不利因素影響下,平臺(tái)訪問性能表現(xiàn)在數(shù)據(jù)擁堵,甚至系統(tǒng)崩潰。
教學(xué)資源共享平臺(tái)為了解決存儲(chǔ)擴(kuò)展及服務(wù)伸縮能力,系統(tǒng)設(shè)計(jì)劃分為存儲(chǔ)層、基礎(chǔ)管理層、應(yīng)用接口層、訪問層,并采用Hadoop作為分布式數(shù)據(jù)存儲(chǔ)和計(jì)算框架。由于系統(tǒng)基于Hadoop框架技術(shù)進(jìn)行設(shè)計(jì),通過分布式文件系統(tǒng)HDFS實(shí)現(xiàn)的數(shù)據(jù)存儲(chǔ)集群。HDFS將文件數(shù)據(jù)拆分為若干Block(數(shù)據(jù)塊)分布存儲(chǔ)在不同的DataNode(數(shù)據(jù)節(jié)點(diǎn))上面,并在NameNode記錄元數(shù)據(jù)。在Hadoop1框架Block大小的默認(rèn)為64M,Hadoop2的Block默認(rèn)為128M,如果系統(tǒng)大批量存入容量小于Block數(shù)據(jù)塊的小文件,會(huì)造成系統(tǒng)讀取數(shù)據(jù)時(shí)在不同的數(shù)據(jù)節(jié)點(diǎn)高頻次跳轉(zhuǎn),嚴(yán)重影響系統(tǒng)性能。
其次,云存儲(chǔ)的特點(diǎn)是用戶數(shù)據(jù)有重復(fù)率較高,解決數(shù)據(jù)冗余主要手段是重復(fù)數(shù)據(jù)刪除技術(shù),重復(fù)數(shù)據(jù)刪除技術(shù)是一種可自動(dòng)搜索重復(fù)數(shù)據(jù),將相同文檔或數(shù)據(jù)塊僅保留一份數(shù)據(jù)作為數(shù)據(jù)正本,與其相同的文檔或數(shù)據(jù)塊采用映射指針的形式作為數(shù)據(jù)副本,以達(dá)到消除冗余數(shù)據(jù)、減少客戶端與服務(wù)端之間數(shù)據(jù)傳輸、降低存儲(chǔ)容量需求的技術(shù)目的。
3 性能優(yōu)化設(shè)計(jì)
大多數(shù)教學(xué)資源文件是屬于小于Block塊的小文件,為了能夠解決小文件影響存儲(chǔ)性能問題,通??紤]將小文件合并成大于Bock快的文件,Hadoop框架也提供文件合并技術(shù)手段,包括HAR、Sequence File、CombineFileInputFormat等都可以實(shí)現(xiàn)小文件的合并。為了便于對(duì)合并數(shù)據(jù)的訪問,需要對(duì)小文件的合并建立相應(yīng)的索引結(jié)構(gòu),同時(shí)還要考慮小文件合并策略的設(shè)計(jì)問題。
3.1 索引結(jié)構(gòu)的建立
常規(guī)的做法是將容量大于Block塊的文件直接遞交給HDFS文件系統(tǒng),容量小于Block塊的文件由小文件合并處理模塊實(shí)現(xiàn)合并訪問,再對(duì)接HDFS文件系統(tǒng)存儲(chǔ)合并文件。小文件合并建立相應(yīng)的索引結(jié)構(gòu),同時(shí)教學(xué)資源共享平臺(tái)需要實(shí)現(xiàn)重復(fù)數(shù)據(jù)刪除技術(shù),也需要設(shè)計(jì)索引結(jié)構(gòu)來(lái)實(shí)現(xiàn)對(duì)重復(fù)文件訪問的映射。為了提高系統(tǒng)性能,本文考慮對(duì)小文件合并、重復(fù)文件訪問映射這兩個(gè)需求統(tǒng)一建立一套索引結(jié)構(gòu),使小文件合并訪問索引、重復(fù)文件訪問映射索引統(tǒng)一處理,減少索引操作次數(shù),進(jìn)一步提高系統(tǒng)性能。索引結(jié)構(gòu)如圖1所示。
在索引結(jié)構(gòu)圖中,以文件名作為小文件的File Key,其Value值包含數(shù)據(jù)塊地址File Block、文件在數(shù)據(jù)塊中的地址偏移量File Offset,文件長(zhǎng)度File Length,小文件數(shù)據(jù)指紋Hash,數(shù)據(jù)指紋作為判斷數(shù)據(jù)重復(fù)文件的特征值。其中,Index File Structure作為小文件的索引表,根據(jù)索引信息指向?qū)?yīng)的合并文件數(shù)據(jù)塊Data Block,數(shù)據(jù)塊里面包含了小文件的描述信息及文件內(nèi)容,當(dāng)用戶上傳教學(xué)資源文件是,通過客戶端插件獲取待上傳文件的Hash,跟索引表當(dāng)中的Hash比對(duì),若發(fā)現(xiàn)相同的Hash值可認(rèn)為云存儲(chǔ)空間已存在相同文件,對(duì)重復(fù)文件訪問做生成相應(yīng)訪問鏈接,避免在服務(wù)器存儲(chǔ)相同的文件數(shù)據(jù)副本,節(jié)省了客戶端向服務(wù)器傳輸文件的時(shí)間及網(wǎng)絡(luò)帶寬。
3.2 小文件合并策略
小文件合并邏輯的設(shè)計(jì)應(yīng)盡量有利于數(shù)據(jù)塊的集中訪問,減少跨DataNode訪問次數(shù),文件數(shù)據(jù)訪問集中度跟文件類型、內(nèi)容相關(guān)性都有很大關(guān)系。例如,如果用戶正在訪問圖片,大概率會(huì)同時(shí)訪問多張圖片,如果用戶正在訪問PPT文件,大概率同時(shí)訪問相關(guān)內(nèi)容的其它PPT文件。為此,在用戶向云端上傳教學(xué)資源時(shí),盡量采集更多內(nèi)容屬性(如學(xué)科分類、課程分類、課程名稱、章節(jié)名稱、知識(shí)點(diǎn)、內(nèi)容關(guān)鍵詞、相似課程資源的歷史訪問熱度等)作為云存儲(chǔ)的元數(shù)據(jù),元數(shù)據(jù)可以轉(zhuǎn)化為文件存儲(chǔ)分類算法所需的特征向量數(shù)據(jù),采用KNN算法,根據(jù)公式(1)計(jì)算訓(xùn)練集文件和測(cè)試集文件的向量:
公式(2)的夾角余弦值越小表示向量相似度越高,測(cè)試集文件相似度越靠近訓(xùn)練集,將文件根據(jù)不同的分類合并到相應(yīng)分類的數(shù)據(jù)塊,使數(shù)據(jù)塊的小文件相關(guān)性更強(qiáng),連續(xù)訪問小文件可獲得更高的訪問集中度。
4 結(jié)束語(yǔ)
HDFS最初的設(shè)計(jì)主要面向流式訪問大文件的應(yīng)用場(chǎng)景,教學(xué)資源共享平臺(tái)的文件資源既有教學(xué)視頻等大容量文件,也有文檔、圖片、教學(xué)軟件數(shù)據(jù)等小文件,同時(shí)因用戶數(shù)眾多,用戶可能產(chǎn)生重復(fù)文件。通過找出HDFS對(duì)小文件存儲(chǔ)效率低下的狀況設(shè)計(jì)小文件合并算法提高數(shù)據(jù)訪問效率,達(dá)到對(duì)云存儲(chǔ)性能優(yōu)化的目的。
參考文獻(xiàn):
[1] 李汶曉. 基于Hadoop的航空貨運(yùn)海量小文件存儲(chǔ)研究[D].中國(guó)民航大學(xué),2018.
[2] 許俊杰. 海量小文件存儲(chǔ)系統(tǒng)的研究與實(shí)現(xiàn)[D].青島科技大學(xué),2018.
[3] 王明. 面向小文件的分布式文件存儲(chǔ)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京郵電大學(xué),2018.
[4]張曉麗,滑亞慧.一種基于HDFS小文件存儲(chǔ)優(yōu)化方案[J].計(jì)算技術(shù)與自動(dòng)化,2017,36(3):134-138.
[5]蘇葉健.基于云存儲(chǔ)的教學(xué)資源共享系統(tǒng)的設(shè)計(jì)[J].電子技術(shù)與軟件工程,2016(16):60-61.
【通聯(lián)編輯:光文玲】