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