●薛堯予(國家圖書館,北京100081)
大數(shù)據(jù)關(guān)鍵技術(shù)在數(shù)字文化資源統(tǒng)一揭示與服務(wù)平臺中的應(yīng)用
●薛堯予(國家圖書館,北京100081)
[關(guān)鍵詞]大數(shù)據(jù);分布式處理;數(shù)據(jù)挖掘;非結(jié)構(gòu)化數(shù)據(jù)
[摘要]針對目前主流的大數(shù)據(jù)處理技術(shù)進(jìn)行分析,研究其在數(shù)字資源揭示與服務(wù)平臺中的應(yīng)用方法,分析和構(gòu)建了Hadoop、Memcached、Cassandra、協(xié)同過濾等技術(shù)在數(shù)字文化資源統(tǒng)一揭示與服務(wù)平臺中的應(yīng)用模式,以期為相關(guān)研究提供參考。
隨著大數(shù)據(jù)時代的來臨,我們所創(chuàng)造和產(chǎn)生數(shù)據(jù)的急速增長,數(shù)據(jù)量之巨大已經(jīng)遠(yuǎn)超我們想象。一方面,現(xiàn)有的工具逐漸顯露出結(jié)構(gòu)的局限性;另一方面,大數(shù)據(jù)所帶來的不可估量的價值引領(lǐng)我們重新認(rèn)識這個世界。
數(shù)字圖書館作為數(shù)字信息和知識的保存及服務(wù)中心,本身就擁有大量的數(shù)據(jù)庫、電子書、紙質(zhì)圖書轉(zhuǎn)換的數(shù)字圖書,以及各種音視頻等數(shù)字文化資源,且隨著數(shù)字圖書館建設(shè)的進(jìn)一步開展,將會生產(chǎn)和保存更多的數(shù)據(jù)。如,2013年國家圖書館已擁有874.5TB的數(shù)字資源,資源檢索與揭示系統(tǒng)(國圖使用文津搜索系統(tǒng))中目前已整合超過2億條元數(shù)據(jù)。此外,國家圖書館各業(yè)務(wù)系統(tǒng)和讀者服務(wù)系統(tǒng)中每天都產(chǎn)生大量的系統(tǒng)日志和讀者行為等數(shù)據(jù)。如何對數(shù)字圖書館的大量數(shù)字資源進(jìn)行整合分析,并使其得到合理、深度揭示和服務(wù)已經(jīng)成為擺在我們面前的一項(xiàng)重要課題。
本文依托于數(shù)字文化資源統(tǒng)一揭示與服務(wù)平臺,對大數(shù)據(jù)關(guān)鍵技術(shù)進(jìn)行研究,構(gòu)建合理的應(yīng)用模式,通過分布式處理技術(shù)實(shí)現(xiàn)數(shù)據(jù)從原始狀態(tài)到可用狀態(tài)的處理與準(zhǔn)備,并建立可靠的分布式緩存系統(tǒng),提高檢索效率。對檢索到的資源進(jìn)行詳情展示,同時基于大規(guī)模數(shù)據(jù)挖掘與推薦技術(shù)的實(shí)現(xiàn)對資源關(guān)聯(lián)及用戶行為中的隱含信息加以合理利用,提高平臺的使用體驗(yàn)。
1.1 Hadoop分布式處理技術(shù)
Hadoop是目前應(yīng)用最為廣泛的分布式系統(tǒng)基礎(chǔ)架構(gòu),其技術(shù)框架中主要包含了MapReduce編程模型和HDFS文件系統(tǒng),二者緊密集成并構(gòu)成Hadoop分布式計(jì)算的理論基石,[1]該架構(gòu)主要用在基于計(jì)算機(jī)集群環(huán)境的大規(guī)模數(shù)據(jù)分布式處理。同時,Hadoop分布式處理技術(shù)在實(shí)現(xiàn)層面不同于傳統(tǒng)的并行計(jì)算,對于開發(fā)人員沒有很高的技術(shù)要求,只要熟悉Hadoop所定義的模型結(jié)構(gòu)及實(shí)現(xiàn)方法,即可進(jìn)行大規(guī)模數(shù)據(jù)并行處理的開發(fā)。Memcached分布式內(nèi)存對象緩存技術(shù)可在動態(tài)應(yīng)用中將數(shù)據(jù)庫負(fù)載大幅度降低,合理分配資源,加快訪問速度,[2]常與Hadoop架構(gòu)配合,共同構(gòu)建大規(guī)模、高吞吐量的數(shù)據(jù)處理系統(tǒng)。
以Hadoop為核心的分布式系統(tǒng)架構(gòu),具有可靠性高、效率高、擴(kuò)展性好等優(yōu)勢。首先,在HDFS系統(tǒng)中對數(shù)據(jù)會保留多個副本,當(dāng)數(shù)據(jù)在處理或者存儲過程中出現(xiàn)損失或者丟失,因其他副本的存在,系統(tǒng)會針對丟失數(shù)據(jù)的分布情況進(jìn)行重新部署,從而實(shí)現(xiàn)高可靠性。其次,架構(gòu)中的MapReduce模型可以通過并行方式保證系統(tǒng)的運(yùn)算速度,從而實(shí)現(xiàn)高效率。此外,由于這種架構(gòu)對集群中單臺計(jì)算機(jī)性能沒有太大要求,較底端的服務(wù)器或者普通PC即可滿足其計(jì)算要求,因此是分布式數(shù)據(jù)處理平臺的優(yōu)選架構(gòu)。
1.2非結(jié)構(gòu)化數(shù)據(jù)庫技術(shù)
隨著各種數(shù)據(jù)種類和數(shù)據(jù)量的急劇增長,數(shù)據(jù)的非結(jié)構(gòu)化也逐漸成為我們面臨的重大挑戰(zhàn),單純使用關(guān)系型數(shù)據(jù)庫已經(jīng)無法滿足實(shí)際業(yè)務(wù)中出現(xiàn)的越來越多的非結(jié)構(gòu)化、半結(jié)構(gòu)化數(shù)據(jù),這就催生了MongoDB、Cassandra、Hbase等非關(guān)系型數(shù)據(jù)庫技術(shù)。
MongoDB雖然是為了處理半結(jié)構(gòu)化數(shù)據(jù)而產(chǎn)生的,但是,其查詢功能幾乎可以和關(guān)系型數(shù)據(jù)庫相媲美,同時,數(shù)據(jù)庫結(jié)構(gòu)又較關(guān)系型數(shù)據(jù)庫松散,可以看做一個將非關(guān)系型和關(guān)系型數(shù)據(jù)庫特性結(jié)合的較為完美的數(shù)據(jù)庫。Cassandra是典型的分布式非關(guān)系型數(shù)據(jù)庫,具有很強(qiáng)的擴(kuò)展性和讀寫性,與MongoDB一樣都是目前較為流行的數(shù)據(jù)庫。HBase也是Hadoop家族中的一員,是基于HDFS的分布式數(shù)據(jù)庫,在高性能讀寫大規(guī)模數(shù)據(jù)方面具有優(yōu)勢。
數(shù)字文化資源統(tǒng)一揭示與服務(wù)平臺是一個綜合性平臺,運(yùn)行各類應(yīng)用系統(tǒng),并通過平臺融合為一個整體。它是資源的匯集地、檢索的門戶、服務(wù)的調(diào)度站。[3]平臺匯集各類文化資源元數(shù)據(jù)共1000萬條,分別由6家單位提供,這些資源涉及城市文化、歷史文化、戲曲、舞蹈、旅游等,包括圖書、期刊、圖片、視頻、靜態(tài)三維及活態(tài)三維等多種類型。[4]平臺搜索引擎可以支持各種不同類型的文化資源元數(shù)據(jù),按照分布式集群架構(gòu)搭建系統(tǒng)運(yùn)行環(huán)境,根據(jù)元數(shù)據(jù)的數(shù)量實(shí)現(xiàn)系統(tǒng)規(guī)模的動態(tài)伸縮,從而實(shí)現(xiàn)對文化資源的統(tǒng)一揭示和服務(wù)。不同類型的文化資源元數(shù)據(jù)可以根據(jù)語義、分類、主題等進(jìn)行數(shù)據(jù)關(guān)聯(lián)和調(diào)用,打通不同類型數(shù)字資源的信息孤島,實(shí)現(xiàn)文化資源的深度揭示。通過平臺導(dǎo)引系統(tǒng)的調(diào)度功能,對分布在不同物理區(qū)域的文化資源數(shù)字對象進(jìn)行展示。依托數(shù)字文化資源統(tǒng)一揭示與服務(wù)平臺,將建立貫通各類文化機(jī)構(gòu)的多種類型文化資源的數(shù)字化應(yīng)用示范,打造基于互聯(lián)網(wǎng)、數(shù)字電視平臺、移動終端的數(shù)字文化資源應(yīng)用展示,實(shí)現(xiàn)各類文化資源的集中管理、深度揭示、統(tǒng)一檢索和聯(lián)合展示,為用戶獲取各類文化資源提供新的服務(wù)模式。數(shù)字文化資源統(tǒng)一揭示與服務(wù)平臺的搭建過程中,需要完成四個關(guān)鍵環(huán)節(jié):數(shù)據(jù)收集與處理、分布式檢索、元數(shù)據(jù)調(diào)用及展示、用戶行為信息挖掘與利用。
數(shù)據(jù)處理能力、檢索的效率是評價一個資源揭示與服務(wù)平臺的重要指標(biāo)。以往的資源揭示與服務(wù)系統(tǒng),多是基于關(guān)系型數(shù)據(jù)庫進(jìn)行數(shù)據(jù)處理與檢索,非常適用于點(diǎn)查詢以及小部分?jǐn)?shù)據(jù)的分析處理,對數(shù)據(jù)的結(jié)構(gòu)有嚴(yán)格要求。在大數(shù)據(jù)環(huán)境下,這樣的系統(tǒng)結(jié)構(gòu)顯然已經(jīng)無法滿足大批量數(shù)據(jù)處理與檢索的需求,因此,我們考慮采用分布式處理技術(shù)搭建平臺的數(shù)據(jù)處理與檢索支撐部分,將多種類型、結(jié)構(gòu)各異的數(shù)據(jù)存放于分布式系統(tǒng)中,以便進(jìn)行大批量的、涵蓋整個數(shù)據(jù)集的分析與處理,同時利用分布式緩存技術(shù)構(gòu)建索引,提升檢索效率。
平臺索引項(xiàng)的建立通過分布式緩存系統(tǒng)實(shí)現(xiàn),但是對于資源詳情數(shù)據(jù)、書評、書封等項(xiàng)的展示來說,并不需要大量的計(jì)算,因此并沒有納入分布式計(jì)算體系中,而是采用非結(jié)構(gòu)化數(shù)據(jù)庫實(shí)現(xiàn),一方面減少分布式體系的計(jì)算壓力,另一方面可以使得資源展示更加豐富。
用戶通過平臺進(jìn)行資源檢索時,如果系統(tǒng)能夠通過對用戶及資源數(shù)據(jù)進(jìn)行分析,利用數(shù)據(jù)挖掘方法,將隱含在用戶信息、資源關(guān)聯(lián)、用戶訪問日志等數(shù)據(jù)中的信息挖掘出來,并根據(jù)這些信息向用戶推薦其最需要的資源,將在很大程度上提升用戶體驗(yàn)。
3.1基于Hadoop的分布式數(shù)據(jù)處理
采用Hadoop結(jié)構(gòu)構(gòu)建分布式計(jì)算集群,完成數(shù)字資源重要性計(jì)算、索引構(gòu)建、數(shù)據(jù)挖掘等大規(guī)模計(jì)算,進(jìn)行數(shù)據(jù)處理,提高檢索質(zhì)量。Hadoop框架中分布式計(jì)算通過MapReduce過程實(shí)現(xiàn)(見圖1)。
圖1 MapReduce執(zhí)行過程
首先,系統(tǒng)將原始數(shù)據(jù)集讀取后進(jìn)行分割,其中若有單個數(shù)據(jù)文件較大,尤其是大到影響檢索效率時,也會將其分割成較小文件,每個被分割的數(shù)據(jù)文件會對應(yīng)一個Map操作。程序運(yùn)行時,多個副本按照Master-Worker結(jié)構(gòu)啟動,一個Master程序?qū)?yīng)多個Worker程序,由Master為Worker分配Map或者Reduce操作任務(wù)。分配到任務(wù)的子程序?qū)⒆詣幼x取分割后的文件,并對該文件執(zhí)行預(yù)先定義好的、與文件對應(yīng)的Map操作(在Hadoop框架中有一個已經(jīng)封裝好的Mapper類,通過它來實(shí)現(xiàn)Map操作過程的定義),從而對數(shù)據(jù)進(jìn)行分析處理,生成鍵值對并存至內(nèi)存。固定時間間隔后,內(nèi)存中的結(jié)果集被分割成多個子集,由系統(tǒng)將這些子集寫入系統(tǒng)硬盤形成中間文件,并在Master程序中記錄子集所寫入的位置。接下來,分配到Reduce操作的Worker程序會按照操作指示讀取(往往是遠(yuǎn)程的)對應(yīng)的中間文件,并在讀取后由該Worker程序?qū)Y(jié)果集執(zhí)行排序操作,如果結(jié)果集太大,排序可通過另外的排序程序?qū)崿F(xiàn)。執(zhí)行Reduce操作的Worker程序會對排序后的結(jié)果進(jìn)行遍歷,并對來自相同鍵值的執(zhí)行結(jié)果合并,并最終形成輸出結(jié)果。當(dāng)所有被分配任務(wù)(Map操作和Reduce操作)的Worker程序執(zhí)行完后,Master程序會將結(jié)果返回系統(tǒng)主程序,進(jìn)而執(zhí)行其他操作。
3.2基于Memcached的分布式緩存
Memcached常被用來加速應(yīng)用程序。對一個web應(yīng)用來說,很多情況下返回的信息都是相同的,從數(shù)據(jù)源(數(shù)據(jù)庫或文件系統(tǒng))重復(fù)加載十分低效。在介紹分布式緩存系統(tǒng)前,有必要簡要介紹一下平臺的搜索集群結(jié)構(gòu)。集群采用文檔分布式策略,每臺索引服務(wù)器的行為類似于整個文檔集的一小部分?jǐn)?shù)據(jù)的搜索引擎,根節(jié)點(diǎn)通過父節(jié)點(diǎn)把查詢消息的拷貝發(fā)送到每臺核心搜索集群中的服務(wù)器,每臺搜索服務(wù)器返回檢索結(jié)果及相應(yīng)分?jǐn)?shù),通過父節(jié)點(diǎn)和根節(jié)點(diǎn)歸并和排序,最后由根節(jié)點(diǎn)合并為一個相關(guān)排序表,返還給前端展示頁面。
圖2分布式緩存系統(tǒng)結(jié)構(gòu)
平臺的緩存服務(wù)采用的是Memcached分布式緩存集群系統(tǒng),在各個層面均有構(gòu)建。在父節(jié)點(diǎn)和根節(jié)點(diǎn)層面,緩存的是相關(guān)排序表;在搜索核心集群上,緩存的是倒排表。在大規(guī)模語料庫中,使用密集計(jì)算來處理查詢,相關(guān)排序表被計(jì)算出來后,通過緩存可提高整個系統(tǒng)的性能。根服務(wù)器會根據(jù)圖書館標(biāo)準(zhǔn)的類別體系對檢索結(jié)果進(jìn)行分類,根服務(wù)器、父節(jié)點(diǎn)和搜索核心節(jié)點(diǎn)通過統(tǒng)一的名字服務(wù)器管理各自的地址信息,采用ZooKeeper實(shí)現(xiàn)同步服務(wù)、配置維護(hù)和命名服務(wù)等分布式應(yīng)用(見圖2)。
3.3基于Cassandra的資源詳情展示
平臺的資源詳情顯示功能基于Cassandra結(jié)構(gòu)實(shí)現(xiàn),Cassandra數(shù)據(jù)結(jié)構(gòu)中主要有:Column、SuperColumn、ColumnFamily、Keyspaces、Row,其中Keyspace 是ColumnFamily的容器。一個Keyspace相當(dāng)于關(guān)系型數(shù)據(jù)庫中的一個數(shù)據(jù)庫,ColumnFamily相當(dāng)于關(guān)系型數(shù)據(jù)庫中的表,每個ColumnFamily包含許多Row,每個Row包含Key及其關(guān)聯(lián)的一系列Column。Column 是Cassandra中最小的數(shù)據(jù)單元,是三元的數(shù)據(jù)類型,包含:name,value和timestamp。SuperColumn可以想象成Column的數(shù)組,包含一個name以及一系列相應(yīng)的Column。
平臺前端顯示資源詳細(xì)信息所用的元數(shù)據(jù)保存在Cassandra,如果前端從Cassandra讀取數(shù)據(jù)失敗,會嘗試從Hbase中進(jìn)行讀取。多媒體數(shù)據(jù)和書評數(shù)據(jù)也保存在Cassandra中,如前端顯示書封的圖片和書評時可直接從Cassandra中獲取。
平臺中Cassandra設(shè)計(jì)了兩個數(shù)據(jù)中心,其目的是為了讓另外一個數(shù)據(jù)中心有一套完整的數(shù)據(jù)備份,當(dāng)一個數(shù)據(jù)中心無法正常工作時候,第二個數(shù)據(jù)中心可以頂替,并幫助損壞的數(shù)據(jù)中心恢復(fù)數(shù)據(jù)。
3.4基于協(xié)同過濾的資源推薦
目前,許多網(wǎng)站都已經(jīng)使用了協(xié)同過濾推薦技術(shù),如Amazon、Google等。不同的協(xié)同過濾之間有很大的不同,筆者在選取協(xié)同過濾算法時,綜合考慮了基于用戶協(xié)同過濾算法[5]和基于項(xiàng)目協(xié)同過濾算法[6]的優(yōu)缺點(diǎn),形成基于用戶和項(xiàng)目相結(jié)合的協(xié)同過濾算法。
基于用戶的協(xié)同過濾算法,首先,要對用戶屬性進(jìn)行分類,進(jìn)而根據(jù)結(jié)果尋找最接近的用戶,也就是尋找最近“鄰居”,最終根據(jù)“鄰居”屬性集合對用戶進(jìn)行推薦。在評分過程中,評價依據(jù)來自于兩方面:對用戶基本信息進(jìn)行評價,即顯性評價;對用戶瀏覽、檢索、評論等行為信息進(jìn)行評價,即隱性評價。計(jì)算近鄰時,較常用的算法是相似性算法?;陧?xiàng)目的協(xié)同過濾算法,以預(yù)推薦的項(xiàng)目為基礎(chǔ),這些項(xiàng)目集合由系統(tǒng)預(yù)先分為若干類別,然后計(jì)算出與用戶經(jīng)常使用的項(xiàng)目相近的項(xiàng)目集合,向用戶進(jìn)行推薦。項(xiàng)目集合的類別往往是由上至下的倒樹型結(jié)構(gòu),大類別在上,細(xì)分類別在下。在計(jì)算相似性時,同類項(xiàng)目之間相似度加權(quán)高于類間項(xiàng)目相似度加權(quán)。
利用基于用戶的協(xié)同過濾算法進(jìn)行資源推薦時,需要分析用戶對于資源的使用情況,得到能代表用戶使用偏好的屬性集合,這一過程往往決定于系統(tǒng)對用戶行為信息的收集程度,這使得推薦結(jié)果具有較大隨機(jī)性。而基于項(xiàng)目的協(xié)同過濾,由于推薦來自于資源本身的特性,結(jié)果較為精確,較容易準(zhǔn)確把握用戶需求,但不利于發(fā)掘一些隱含于相似用戶屬性中信息,范圍較窄。將兩種算法進(jìn)行結(jié)合會得到更好的推薦效果。如:一位用戶為化學(xué)專業(yè)學(xué)生,當(dāng)他檢索“高等數(shù)學(xué)”時,通過基于項(xiàng)目的協(xié)同過濾,系統(tǒng)將會推薦《高等數(shù)學(xué)概論》《高等數(shù)學(xué)名師指點(diǎn)》等與高等數(shù)學(xué)相關(guān)的一些資料。如果結(jié)合基于用戶的協(xié)同過濾,系統(tǒng)就會將另外一些化學(xué)專業(yè)學(xué)生檢索過的《化工原理》《高分子化學(xué)》等資源推薦出來,推薦的結(jié)果集將更契合用戶需求。
多數(shù)大數(shù)據(jù)處理技術(shù)都是在原有數(shù)據(jù)處理技術(shù)基礎(chǔ)上結(jié)合了新的應(yīng)用場景和應(yīng)用方法。同時,云計(jì)算技術(shù)近幾年的興起和成熟,也為大數(shù)據(jù)處理技術(shù)的發(fā)展奠定了堅(jiān)實(shí)的理論基礎(chǔ)。研究這些技術(shù)在數(shù)字資源揭示與服務(wù)方面的應(yīng)用,能夠提高數(shù)字資源管理效率,使數(shù)字資源的組織模式更為有序,從而支撐數(shù)字資源更為深層、全面地揭示,使讀者得到更高效的數(shù)字資源檢索、展示服務(wù)。
[1]The Hadoop Distributed File System:Architecture and Design[EB/OL].[2013-10-29].http://hadoop. apache.org/docs/r0.18.0/hdfs_design.pdf.
[2]Memcached website[EB/OL].[2013-10-29].http: //memcached.org/.
[3]魏大威.?dāng)?shù)字文化資源統(tǒng)一揭示與服務(wù)平臺架構(gòu)研究[J].圖書館學(xué)研究,2014(5):56-62.
[4]梁蕙瑋,薩蕾.國家數(shù)字文化資源統(tǒng)一揭示與服務(wù)平臺的資源整合研究[J].圖書館學(xué)研究,2014(2):54-58.
[5]Sarwar B, et al. Analysis of recommendation algorithms for E-commerce[C].Proceedings of the 2nd ACM Conferenceon Electronic Commerce,New York,ACM Press,2000:158-167.
[6]Sarwar B,etal.Item-basedcollaborativefilteringrecommendation algorithms[C]// Proceedings of the 10th International World Wide Web Conference.Hong Kong: ACMPress,2001:285-295.
[收稿日期]2015-02-02[責(zé)任編輯]劉丹
[作者簡介]薛堯予(1982-),男,高級工程師,研究方向:數(shù)字圖書館,圖書館大數(shù)據(jù)研究。
[基金項(xiàng)目]本文系國家科技支撐計(jì)劃項(xiàng)目“文化資源數(shù)字化關(guān)鍵技術(shù)及應(yīng)用示范”(項(xiàng)目編號:2012BAH01F01)的研究成果。
[文章編號]1005-8214(2015)12-0096-04
[文獻(xiàn)標(biāo)志碼]A
[中圖分類號]G250.73