朱曉麗
(山東廣播電視大學(xué),山東 濟(jì)南 250014)
基于Hadoop的遠(yuǎn)程教育海量資源存儲(chǔ)方法研究
朱曉麗
(山東廣播電視大學(xué),山東 濟(jì)南 250014)
遠(yuǎn)程教育資源具有數(shù)據(jù)量大,增長(zhǎng)迅速的特點(diǎn),對(duì)這些海量數(shù)據(jù)資源進(jìn)行低成本存儲(chǔ)和基于內(nèi)容的高效檢索,是遠(yuǎn)程教育云平臺(tái)建設(shè)面臨的一大難題。本文基于Hadoop設(shè)計(jì)了一套對(duì)遠(yuǎn)程教育海量資源進(jìn)行存儲(chǔ)和檢索的方法,解決了這個(gè)難題。
云計(jì)算;Hadoop;海量數(shù)據(jù);遠(yuǎn)程教育
近年來(lái),云計(jì)算日益受到產(chǎn)業(yè)界、學(xué)術(shù)界的重視,我國(guó)政府更是把云計(jì)算上升為戰(zhàn)略新型產(chǎn)業(yè),各級(jí)政府給予政策、資金等大力支持。各個(gè)行業(yè)紛紛基于云計(jì)算來(lái)規(guī)劃下一代信息化建設(shè)。
云計(jì)算是一種共享資源的計(jì)算模式,它通過虛擬化、分布式計(jì)算等技術(shù)手段,將物理上分散于互聯(lián)網(wǎng)各處的計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)、軟件等資源聚合起來(lái),實(shí)現(xiàn)資源的邏輯集中和動(dòng)態(tài)彈性使用,并以服務(wù)的方式將這些資源提供給互聯(lián)網(wǎng)用戶。與傳統(tǒng)模式相比,云計(jì)算具有強(qiáng)大信息存儲(chǔ)與處理能力,可提供方便靈活、按需租用、高性價(jià)比的信息化服務(wù)。
具體到遠(yuǎn)程教育方面,云計(jì)算技術(shù)打破傳統(tǒng)模式,為遠(yuǎn)程教育的發(fā)展帶來(lái)全新的理念[1]。利用云計(jì)算技術(shù)為互聯(lián)網(wǎng)用戶提供計(jì)算、存儲(chǔ)、軟硬件等服務(wù)的全新網(wǎng)絡(luò)服務(wù)模式是實(shí)現(xiàn)終身教育公共服務(wù)體系的重要支柱,將云計(jì)算技術(shù)應(yīng)用于教育,是未來(lái)遠(yuǎn)程教育的發(fā)展方向[2]。
中央電大正向國(guó)家開放大學(xué)轉(zhuǎn)型,國(guó)家開放大學(xué)的建設(shè)方案已經(jīng)過教育部黨組的批準(zhǔn)。為了滿足國(guó)家開放大學(xué)的戰(zhàn)略發(fā)展,有人提出基于云計(jì)算建設(shè)遠(yuǎn)程教育云,通過搭建高性能的計(jì)算環(huán)境,實(shí)現(xiàn)快速存儲(chǔ)、分發(fā)和推送海量數(shù)字化資源,實(shí)現(xiàn)高質(zhì)量的遠(yuǎn)程教學(xué)傳輸力,為用戶提供一個(gè)個(gè)性化、一站式、一體化的學(xué)習(xí)環(huán)境和工作環(huán)境,支持個(gè)性化學(xué)習(xí)和因材施教,促進(jìn)學(xué)習(xí)者高級(jí)思維能力和群體智慧的發(fā)展,提高教育質(zhì)量[3]。
使用云架構(gòu)的方法來(lái)構(gòu)建遠(yuǎn)程教育平臺(tái),包括數(shù)據(jù)中心和智能用戶終端兩部分。針對(duì)“目前的教育資源庫(kù)存在著教學(xué)資源共享程度低、教育資源不全面、不系統(tǒng)、各自為戰(zhàn)等不利現(xiàn)象”,提出“利用云計(jì)算的集中存儲(chǔ)方式,將所有數(shù)據(jù)存儲(chǔ)在規(guī)模龐大的數(shù)據(jù)中心和服務(wù)器群中”的思路,但對(duì)如何實(shí)現(xiàn),沒有展開。
遠(yuǎn)程教育資源在數(shù)據(jù)量、內(nèi)容和形式上都在不斷的豐富,速度以指數(shù)方式增長(zhǎng),這些資源包括從事教育事業(yè)的人力資源、物力資源和無(wú)形資源的總和。其中直接支持教學(xué)活動(dòng)的各種數(shù)字文檔資源稱為教學(xué)資源,包括在教學(xué)過程中所使用和產(chǎn)生的教案、課堂用的幻燈片、課堂練習(xí)題、課件、動(dòng)畫、圖形圖像、音、視頻文件以及各類測(cè)試、考試題;學(xué)生創(chuàng)作類資源和學(xué)習(xí)過程中產(chǎn)生的資源;教育管理與教學(xué)評(píng)估類的數(shù)據(jù)資源;教育科研過程中產(chǎn)生的資源;其他特色資源等等。這些資源不僅在內(nèi)容上多種多樣,在表現(xiàn)形式上豐富多彩,在數(shù)據(jù)量上更是海量驚人。
如何對(duì)如此海量的資源進(jìn)行低成本的存儲(chǔ),并支持高效的檢索面臨著諸多難題,針對(duì)遠(yuǎn)程教育資源大多為非結(jié)構(gòu)化數(shù)據(jù)的特點(diǎn),本文提出了基于Hadoop的遠(yuǎn)程教育海量資源存儲(chǔ)與檢索方法。
目前主要的存儲(chǔ)數(shù)據(jù)技術(shù)的包括本地存儲(chǔ)、共享存儲(chǔ)和分布式存儲(chǔ)三大類。下面分別說(shuō)明并進(jìn)行簡(jiǎn)單比較。
(1)本地存儲(chǔ)
利用服務(wù)器本地磁盤來(lái)存儲(chǔ)數(shù)據(jù)。主要存在兩個(gè)方面問題:數(shù)據(jù)與應(yīng)用系統(tǒng)緊密結(jié)合、數(shù)據(jù)容量受到較大限制(約為幾十TB)??赏ㄟ^DAS(Direct Attached Storage,直接附屬存儲(chǔ))技術(shù)進(jìn)行擴(kuò)容,但系統(tǒng)軟件安裝調(diào)試復(fù)雜。多用于個(gè)人電腦和承載小型業(yè)務(wù)的服務(wù)器。
(2)共享存儲(chǔ)
服務(wù)器通過網(wǎng)絡(luò)來(lái)訪問外部存儲(chǔ),并對(duì)存儲(chǔ)進(jìn)行共享。主要包括NAS和SAN兩種。NAS(Network Attached Storage,網(wǎng)絡(luò)附屬存儲(chǔ)),是一種專業(yè)的網(wǎng)絡(luò)文件存儲(chǔ)及文件備份設(shè)備,或稱為網(wǎng)絡(luò)直聯(lián)存儲(chǔ)設(shè)備、網(wǎng)絡(luò)磁盤陣列。SAN(Storage AreaNet work,存儲(chǔ)區(qū)域網(wǎng)絡(luò)),是一種通過光纖集線器、光纖路由器、光纖交換機(jī)等連接設(shè)備將磁盤陣列、磁帶等存儲(chǔ)設(shè)備與相關(guān)服務(wù)器連接起來(lái)的高速專用子網(wǎng)。NAS提供由文件處理帶來(lái)的協(xié)作性,SAN則具有高性能。由于采用集中的存儲(chǔ)服務(wù)器存放所有數(shù)據(jù),存儲(chǔ)服務(wù)器成為系統(tǒng)性能的瓶頸,也是可靠性和安全性的焦點(diǎn)。數(shù)據(jù)容量通常在PB級(jí)以下,不能滿足大規(guī)模存儲(chǔ)應(yīng)用的需要,且成本較高。
(3)分布式存儲(chǔ)
數(shù)據(jù)分散存儲(chǔ)在多臺(tái)獨(dú)立的服務(wù)器上,這些服務(wù)器形成一個(gè)存儲(chǔ)集群。采用可擴(kuò)展的系統(tǒng)結(jié)構(gòu),利用多臺(tái)存儲(chǔ)服務(wù)器分擔(dān)存儲(chǔ)負(fù)荷,利用位置服務(wù)器定位存儲(chǔ)信息,它不但提高了系統(tǒng)的可靠性、可用性和存取效率,還易于擴(kuò)展。具有存儲(chǔ)成本低、數(shù)據(jù)容量大(PB級(jí)或以上)的特點(diǎn)。
綜上,對(duì)于PB級(jí)以上的海量數(shù)據(jù)需要采用分布式存儲(chǔ)技術(shù)來(lái)解決,Hadoop則是分布式存儲(chǔ)技術(shù)的典型代表。
Hadoop是Google GFS、BigTable和MapReduce三大技術(shù)的開源實(shí)現(xiàn),包含兩部分內(nèi)容:(1)Hadoop提供一個(gè)分布式文件系統(tǒng)HDFS及分布式數(shù)據(jù)庫(kù)HBase用來(lái)將數(shù)據(jù)存儲(chǔ)或部署到各個(gè)計(jì)算節(jié)點(diǎn)上;(2)Hadoop是一個(gè)實(shí)現(xiàn)了MapReduce計(jì)算模型的開源分布式并行編程框架,程序員可以借助Hadoop編寫程序,將所編寫的程序運(yùn)行于計(jì)算機(jī)機(jī)群上,從而實(shí)現(xiàn)對(duì)海量數(shù)據(jù)的處理。概括為一個(gè)公式:
Hadoop=HDFS(分布式文件系統(tǒng))+Hbase(分布式數(shù)據(jù)庫(kù))+MapReduce(并行數(shù)據(jù)處理)
(1)HDFS(分布式文件系統(tǒng))
HDFS采用Master/Slave架構(gòu),對(duì)文件進(jìn)行分布式存儲(chǔ)。一個(gè) HDFS集群是由一個(gè) Master和一定數(shù)目的TrunkServer組成。Master是一個(gè)中心服務(wù)器,負(fù)責(zé)管理文件系統(tǒng)的namespace和客戶端對(duì)文件的訪問。TrunkServer在集群中一般是一個(gè)服務(wù)器節(jié)點(diǎn),負(fù)責(zé)管理節(jié)點(diǎn)上附帶的存儲(chǔ)。在內(nèi)部,一個(gè)文件被分成一個(gè)或多個(gè)block塊,這些block塊存儲(chǔ)在TrunkServer集合里。
(2)HBase(分布式數(shù)據(jù)庫(kù))
HBase是一個(gè)分布式的、面向列的開源數(shù)據(jù)庫(kù),它不同于一般的關(guān)系數(shù)據(jù)庫(kù),是一個(gè)適合于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫(kù)。另一個(gè)不同是HBase是基于列的而不是基于行的模式。HBase使用和BigTable非常相同的數(shù)據(jù)模型。用戶存儲(chǔ)數(shù)據(jù)行在一個(gè)表里,一個(gè)數(shù)據(jù)行擁有一個(gè)可選擇的鍵和任意數(shù)量的列,一個(gè)或多個(gè)列組成一個(gè)ColumnFamily,一個(gè)Family下的列位于一個(gè)HFile中,易于緩存數(shù)據(jù)。表是疏松的存儲(chǔ)的,因此用戶可以給行定義各種不同的列。在HBase中數(shù)據(jù)按主鍵排序,同時(shí)表按主鍵劃分為多個(gè)HRegion。
(3)MapReduce(并行數(shù)據(jù)處理)
MapReduce是一個(gè)使用簡(jiǎn)易的軟件框架,基于它寫出來(lái)的應(yīng)用程序能夠運(yùn)行在大型集群上,并以一種可靠容錯(cuò)的方式并行處理上PB級(jí)別的數(shù)據(jù)集。一個(gè)MapReduce作業(yè)通常會(huì)把輸入的數(shù)據(jù)集切分為若干獨(dú)立的數(shù)據(jù)塊,由Map任務(wù)以完全并行的方式處理它們。框架會(huì)對(duì)Map的輸出先進(jìn)行排序,然后把結(jié)果輸入給Reduce任務(wù)。通常作業(yè)的輸入和輸出都會(huì)被存儲(chǔ)在文件系統(tǒng)中。整個(gè)框架負(fù)責(zé)任務(wù)的調(diào)度和監(jiān)控,以及重新執(zhí)行已經(jīng)失敗的任務(wù)。
遠(yuǎn)程教育資源主要包括文本(如教案、幻燈、題庫(kù)等)和流媒體(音頻、視頻、動(dòng)畫等)兩類格式的數(shù)據(jù),其中文本具體格式有Word、Powerpoint等格式,流媒體包括AVI、MPEG、FLV、AWF等。為了方便使用,遠(yuǎn)程教育資源通常按照學(xué)科進(jìn)行分類。文本數(shù)據(jù)需要支持豐富的檢索,例如關(guān)鍵字、創(chuàng)建時(shí)間、作者等。為了提高檢索的查全率,不僅需要對(duì)文件名進(jìn)行關(guān)鍵字檢索,更需要對(duì)文件內(nèi)容進(jìn)行關(guān)鍵字檢索。同時(shí)被檢索的這些資源數(shù)據(jù)量大、且仍在快速增長(zhǎng)中。綜上,對(duì)遠(yuǎn)程教育海量資源的存儲(chǔ)需做好兩點(diǎn): (1)支持對(duì)文件內(nèi)容基于關(guān)鍵字的檢索;(2)成本低且易于擴(kuò)展。
基于上面兩點(diǎn)考慮,本文設(shè)計(jì)了基于Hadoop的遠(yuǎn)程教育海量資源存儲(chǔ)方法。該存儲(chǔ)方法底層采用HDFS對(duì)資源進(jìn)行分布式存儲(chǔ),從而擁有良好的擴(kuò)展性,成本相對(duì)于共享存儲(chǔ)有較大降低;利用HBase來(lái)存儲(chǔ)教育資源的基本信息、文本內(nèi)容、流媒體內(nèi)容、版本等信息;借助分詞技術(shù)對(duì)文本內(nèi)容進(jìn)行分詞后形成關(guān)鍵詞,一并保存到HBase中,以備查詢時(shí)使用;最后利用MapReduce實(shí)現(xiàn)關(guān)鍵詞的并行檢索,從而提高查詢的效率。下面介紹兩個(gè)關(guān)鍵技術(shù):存儲(chǔ)遠(yuǎn)程教育資源的HBase表結(jié)構(gòu)設(shè)計(jì)、基于內(nèi)容的檢索技術(shù)。
使用HBase來(lái)存儲(chǔ)遠(yuǎn)程教育資源,關(guān)鍵是要建立合適的數(shù)據(jù)模型,以支持對(duì)教育資源的各類應(yīng)用。為此需建立一張遠(yuǎn)程教育資源表(命名為ResourceTable),利用該表對(duì)遠(yuǎn)程教育資源的標(biāo)題、簡(jiǎn)介、作者、文本附件、流媒體附件、附件格式等信息進(jìn)行集中存儲(chǔ)。該表的具體格式如表1所示。
表1 ResourceTable結(jié)構(gòu)
行鍵和時(shí)間戳是HBase表的標(biāo)準(zhǔn)字段。由于HBase表按行鍵順序存儲(chǔ),為了將學(xué)科相關(guān)的資源保存在一起(這樣可提高檢索效率),故將行鍵定義為兩部分:學(xué)科ID和隨機(jī)ID,其中學(xué)科ID遵照我國(guó)相關(guān)標(biāo)準(zhǔn),時(shí)間戳則采用HBase標(biāo)準(zhǔn)格式。
其他列簇用于存儲(chǔ)遠(yuǎn)程資源各項(xiàng)信息。meta列簇用于存儲(chǔ)資源的基本信息,由于基本信息可能包括資源標(biāo)題、簡(jiǎn)介和作者等內(nèi)容,為此設(shè)計(jì)了3列(meta:title、meta: info、meta:author)分別表示這三類信息。教育資源的文本格式內(nèi)容保存到c_text列簇,鑒于可能包含教案、幻燈、試題等文本附件,設(shè)計(jì)了3列(c_text:plan、c_text:slide、c_ text:test)來(lái)表示。教育資源的流媒體格式內(nèi)容保存到c_ stream列簇,鑒于可能包含音頻、視頻、動(dòng)畫等流媒體附件,設(shè)計(jì)了3列(c_stream:video、c_stream:audio、c_text:automation)來(lái)表示。教育資源附件的格式用format列簇表示,并增加了多個(gè)列來(lái)表示各種文本、流媒體附件格式。如“format:plan word”表示教案這個(gè)附件的格式為Word文檔,其他以此類推。為了適應(yīng)教育資源信息未來(lái)的擴(kuò)展需求,所有列簇的列都可以根據(jù)需要進(jìn)行添加。
特別增加了一個(gè)keyword列簇,該列簇主要用于支持基于內(nèi)容的檢索而設(shè)。keyword列簇只有一個(gè)默認(rèn)列,因此沒有命名。所有文本附件分詞后形成的關(guān)鍵詞集合將作為keyword列簇的值。
上面所有列簇除了format列簇外,均省略列值部分。
實(shí)現(xiàn)基于內(nèi)容的檢索,需分兩步來(lái)做:(1)在保存教育資源的時(shí)候,將所有文本內(nèi)容進(jìn)行分詞,獲得關(guān)鍵詞集合,并將其存到ResourceTable的keyword列簇;(2)在檢索的時(shí)候,對(duì)ResourceTable的keyword列簇進(jìn)行檢索。提高上述兩步的性能是實(shí)現(xiàn)基于內(nèi)容檢索的關(guān)鍵。
分詞是第一步的關(guān)鍵環(huán)節(jié),為提高此步性能,采用集群+MapReduce技術(shù)實(shí)現(xiàn)并行處理。具體做法:當(dāng)需要對(duì)大量文本內(nèi)容進(jìn)行分詞時(shí),先將需要分詞的內(nèi)容分成多份,并Map到多個(gè)分詞節(jié)點(diǎn)上,由分詞節(jié)點(diǎn)對(duì)各份數(shù)據(jù)進(jìn)行處理(具體處理流程如圖1所示),最后通過Reduce方法將各節(jié)點(diǎn)的分詞結(jié)果進(jìn)行匯總,作為最終的分詞結(jié)果。通過此并行處理,可顯著提高分詞的效率。
圖1 內(nèi)容關(guān)鍵詞提取過程
在第二步中,由于ResourceTable表中行數(shù)眾多,各行的關(guān)鍵詞較多,每次檢索需要對(duì)大量的關(guān)鍵詞進(jìn)行比對(duì),產(chǎn)生了性能瓶頸。可利用HBase上的MapReduce集群進(jìn)行處理。具體做法為:將ResourceTable表的keyword列簇分散存儲(chǔ)到多個(gè)HBase Region中,通過Map方法對(duì)多個(gè)HBase Region進(jìn)行并行處理(即對(duì)關(guān)鍵詞進(jìn)行比對(duì)),最后通過Reduce方法匯總關(guān)鍵詞比對(duì)結(jié)果。配置HBase使用MapReduce的方法:
(1)首先引入環(huán)境變量(修改/etc/profile文件,在文件末尾追加下面內(nèi)容):
(2)將/jz/hbase-0.20.5/conf下的hbase-site.xml拷貝到hadoop的conf目錄下,同時(shí)在/jz/hbase-0.20.5目錄下,將hbase-0.20.5.jar、hbase-0.20.5-test.jar和/jz/ hbase-0.20.5/lib/zookeeper-3.2.2.jar拷貝到hadoop/lib目錄下。
(3)至此,配置完成。
在完成上述配置后,在對(duì)keyword列簇進(jìn)行查詢時(shí),HBase會(huì)采用MapReduce方式并行進(jìn)行,從而提高查詢的的效率。
采用分布式存儲(chǔ)技術(shù),相對(duì)共享存儲(chǔ),成本更低且擴(kuò)展性更好,可根據(jù)需求增加存儲(chǔ)節(jié)點(diǎn),實(shí)現(xiàn)平滑擴(kuò)展。在MapReduce技術(shù)支撐下,提高了分詞和檢索的性能,從而為實(shí)現(xiàn)針對(duì)海量數(shù)據(jù)基于內(nèi)容的檢索提供了保障。
針對(duì)遠(yuǎn)程教育資源數(shù)據(jù)量大、且增長(zhǎng)迅速的特點(diǎn),本文基于hadoop,采用分布式存儲(chǔ)和并行計(jì)算的思想,設(shè)計(jì)了一套對(duì)遠(yuǎn)程教育海量資源進(jìn)行存儲(chǔ)和檢索的方法。相比傳統(tǒng)的共享存儲(chǔ)方法,本方法不僅成本低,而且支持基于內(nèi)容的高效檢索,提高了查全率。
[1]楊龍?jiān)?云計(jì)算對(duì)教育的影響[J].中國(guó)教育技術(shù)裝備,2011(3).
[2]趙明霞,姚高峰,杜曉靜.云計(jì)算時(shí)代下的教育信息化[J].中國(guó)教育技術(shù)裝備,2011(24).
[3]方慕真.為什么要建設(shè)國(guó)家開放大學(xué)遠(yuǎn)程教育云.
TP391
A
1008—3340(2012)03—0026—04
2012-07-01
朱曉麗,女,山東廣播電視大學(xué)講師。