曹恒瑞 +曹展碩
摘要:企業(yè)級(jí)檢索不同于普通的數(shù)據(jù)檢索和網(wǎng)站檢索,它包括復(fù)雜結(jié)構(gòu)的數(shù)據(jù)檢索、安全檢索、高可靠的查全和查準(zhǔn)、智能化的數(shù)據(jù)檢索服務(wù)和實(shí)時(shí)的數(shù)據(jù)更新服務(wù)等。雖然可以利用已有數(shù)據(jù)檢索系統(tǒng)提供的站內(nèi)數(shù)據(jù)檢索功能來(lái)構(gòu)建企業(yè)級(jí)數(shù)據(jù)檢索系統(tǒng),但這種站內(nèi)檢索功能難以滿足絕大多數(shù)企業(yè)自身檢索需求。隨著大數(shù)據(jù)時(shí)代來(lái)臨,為處理海量數(shù)據(jù),建立大數(shù)據(jù)平臺(tái)成為趨勢(shì),使用分布式文件存儲(chǔ)系統(tǒng),通過(guò)云計(jì)算技術(shù)來(lái)分析海量數(shù)據(jù),開(kāi)發(fā)企業(yè)級(jí)智能云檢索系統(tǒng)是提高企業(yè)綜合效益的關(guān)鍵。基于自然語(yǔ)言的智能云檢索,研究開(kāi)發(fā)了基于Hadoop平臺(tái)的分布式數(shù)據(jù)檢索系統(tǒng),實(shí)現(xiàn)了分布式文件系統(tǒng)和傳統(tǒng)關(guān)系數(shù)據(jù)庫(kù)協(xié)同運(yùn)行的高效數(shù)據(jù)檢索系統(tǒng)。
關(guān)鍵詞:智能云檢索;Hadoop平臺(tái);數(shù)據(jù)檢索;企業(yè)級(jí)檢索
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):16727800(2017)004011803
0引言
現(xiàn)代信息技術(shù)迅猛發(fā)展,企業(yè)面對(duì)海量數(shù)據(jù)存儲(chǔ)的壓力越來(lái)越大,導(dǎo)致用戶很難找到所需要的信息[12],已有的傳統(tǒng)數(shù)據(jù)庫(kù)管理系統(tǒng)無(wú)法滿足企業(yè)檢索需求。 〖HJ*3/8〗Hadoop可建立分布式集群,企業(yè)能夠建立屬于自己的大數(shù)據(jù)平臺(tái)并通過(guò)大數(shù)據(jù)平臺(tái)處理超大數(shù)據(jù)集及存儲(chǔ)海量數(shù)據(jù)。為此,本文設(shè)計(jì)了基于Hadoop平臺(tái)的分布式數(shù)據(jù)檢索系統(tǒng)。系統(tǒng)包括4個(gè)模塊[3]:語(yǔ)言處理模塊、中間語(yǔ)言處理模塊、生成查詢SQL模塊和權(quán)限控制模塊。語(yǔ)言處理模塊主要負(fù)責(zé)語(yǔ)言本身的處理,包括切詞、詞性識(shí)別、同義詞識(shí)別等。此模塊提供智慧化的接口,用戶可使用自然語(yǔ)言查詢需要的信息,通過(guò)分詞、詞性識(shí)別等操作,輸出結(jié)果,〖HJ〗提供給中間語(yǔ)言處理模塊處理。中間語(yǔ)言處理模塊主要負(fù)責(zé)將接收到的信息組合成偽SQL,然后通過(guò)SQL模塊,生成能被數(shù)據(jù)庫(kù)執(zhí)行的SQL語(yǔ)句,得到查詢記錄集,最后格式化記錄集返回給前臺(tái)查詢頁(yè)面,完成自然語(yǔ)言查詢過(guò)程。
1系統(tǒng)關(guān)鍵技術(shù)
1.1Hadoop技術(shù)
Hadoop是分布式處理PB級(jí)數(shù)據(jù)的開(kāi)源框架,具有可靠性、高效性和可伸縮性,能維護(hù)多個(gè)工作數(shù)據(jù)副本,并針對(duì)失敗節(jié)點(diǎn)重新分布處理,以并行工作方式來(lái)加速處理數(shù)據(jù)[4]。Hadoop的可伸縮性使其處理PB級(jí)數(shù)據(jù)得心應(yīng)手,開(kāi)源設(shè)計(jì)和廉價(jià)服務(wù)器配置使其得到廣泛應(yīng)用。HDFS內(nèi)部的所有通信都基于標(biāo)準(zhǔn)的TCP/IP協(xié)議,HDFS內(nèi)部機(jī)制如圖1所示[5]。
1.2Lucene框架
Lucene是非常優(yōu)秀、成熟且開(kāi)源的純Java語(yǔ)言全文索引檢查工具包,Lucene擁有高性能、可伸縮的信息檢索庫(kù)IRL(Information Retrieval Library,IRL),可為應(yīng)用程序添加索引和檢索功能。Lucene不是純粹的引擎,只是引擎框架,實(shí)現(xiàn)索引、查詢和部分文本解析功能[6],如圖2所示。
1.3Solr檢索
Solr是基于Lucene Java的企業(yè)級(jí)檢索服務(wù)器,易于加入到Web應(yīng)用程序中。Solr提供層次化檢索和高亮顯示并支持多種輸出文件格式,還有基于Http的管理頁(yè)面。相對(duì)于Lucene的底層檢索,Solr更專注于企業(yè)應(yīng)用。 Solr對(duì)外提供標(biāo)準(zhǔn)的Http接口實(shí)現(xiàn)對(duì)數(shù)據(jù)索引的各項(xiàng)操作,用戶可通過(guò)Solr部署在Servlet容器中的Web應(yīng)用來(lái)發(fā)送命令,Slor接到命令后會(huì)以同樣的方法回應(yīng),Solr特性如下:①高級(jí)全文檢索功能;②可擴(kuò)展的插件體系;③綜合的HTML管理頁(yè)面;④專對(duì)高通量網(wǎng)絡(luò)進(jìn)行優(yōu)化;⑤使用XML配置達(dá)到靈活性和適配性;⑥基于開(kāi)放接口(XML和HTTP)標(biāo)準(zhǔn);⑦可伸縮性:能夠有效復(fù)制到另一個(gè)Solr服務(wù)器[7]。
1.4Spark Streaming技術(shù)
Spark Streaming是基于Spark處理數(shù)據(jù)的框架。在MapReduce中,由于其分布式特性——所有數(shù)據(jù)需要讀寫磁盤,啟動(dòng)Job耗時(shí)較大,難以滿足時(shí)效性要求。Streaming能夠在Spark上發(fā)展的原因是因?yàn)槠鋬?nèi)存特性、低延時(shí)的執(zhí)行引擎和高速的執(zhí)行效率。Streaming原理:將Stream數(shù)據(jù)分成小的時(shí)間間隔(比如幾秒),即將其離散化(Discretized)并轉(zhuǎn)換成數(shù)據(jù)集(RDD),然后分批處理RDD。所以Streaming很容易與mlib、Spark SQL等結(jié)合,做到實(shí)時(shí)數(shù)據(jù)分析處理。此外,Streaming繼承RDD的容錯(cuò)特性。如果RDD的某些Partition丟失,可通過(guò)Lineage信息重新計(jì)算恢復(fù),如圖3所示。Streaming的數(shù)據(jù)源分兩種類型: (1)外部文件系統(tǒng),如HDFS、Streaming可以監(jiān)控一個(gè)目錄中新產(chǎn)生的數(shù)據(jù)并及時(shí)處理。如果出現(xiàn)fail,可以通過(guò)重新讀取數(shù)據(jù)來(lái)恢復(fù),絕不會(huì)有數(shù)據(jù)丟失。 (2)〖JP3〗網(wǎng)絡(luò)系統(tǒng):如MQ系統(tǒng)(Kafka、ZeroMQ、Flume等)。Streaming會(huì)默認(rèn)在兩個(gè)不同節(jié)點(diǎn)加載數(shù)據(jù)到內(nèi)存,一個(gè)節(jié)點(diǎn)fail了,系統(tǒng)可通過(guò)另一個(gè)節(jié)點(diǎn)數(shù)據(jù)重算。正在運(yùn)行InputReceiver的節(jié)點(diǎn)出現(xiàn)fail,可能會(huì)丟失一部分?jǐn)?shù)據(jù)[8]。
2系統(tǒng)設(shè)計(jì)
本系統(tǒng)模型及框架由頁(yè)面展示組建、權(quán)限控制組件、自然語(yǔ)言處理組件、企業(yè)級(jí)數(shù)據(jù)檢索、數(shù)據(jù)集接口組件組成。頁(yè)面展示組件就是用戶界面,用于用戶數(shù)據(jù)以及反饋結(jié)果頁(yè)面給用戶;權(quán)限控制組件用于在反饋結(jié)果頁(yè)面添加權(quán)限控制,以確保用戶數(shù)據(jù)安全;自然語(yǔ)言處理組件對(duì)自然語(yǔ)言進(jìn)行分詞處理,并標(biāo)注詞性,用于后續(xù)對(duì)應(yīng)索引庫(kù)獲取參數(shù)字段;企業(yè)級(jí)數(shù)據(jù)檢索,用于對(duì)用戶輸入進(jìn)行分詞處理,并建立索引庫(kù);提供接口組件連接文檔庫(kù)、HBase數(shù)據(jù)庫(kù)、Web頁(yè)面等。
系統(tǒng)整合Hadoop分布式數(shù)據(jù)庫(kù)和DB2關(guān)系數(shù)據(jù)庫(kù)實(shí)現(xiàn)分布式協(xié)同計(jì)算框架,通過(guò)Spark Streaming流處理技術(shù)實(shí)現(xiàn)實(shí)時(shí)索引提高檢索效率,通過(guò)Lucene和Solr搭建分詞服務(wù)器并實(shí)現(xiàn)詞庫(kù)的自我完善與更新,通過(guò)Apache和Tomcat搭建Web服務(wù)器。智能云檢索系統(tǒng)架構(gòu)如圖4所示。
企業(yè)級(jí)數(shù)據(jù)檢索引擎是基于全文檢索技術(shù)實(shí)現(xiàn)的,就是系統(tǒng)索引程序基于詞庫(kù)解析文本數(shù)據(jù),每一個(gè)分詞后得到的詞語(yǔ)均建立索引,用戶可根據(jù)索引進(jìn)行查詢并將查詢結(jié)果呈現(xiàn)。企業(yè)數(shù)據(jù)檢索引擎由索引引擎和檢索引擎構(gòu)成,數(shù)據(jù)檢索引擎基于分詞工具實(shí)現(xiàn)分詞并根據(jù)分詞結(jié)果產(chǎn)生多個(gè)請(qǐng)求,如圖5所示。
3系統(tǒng)實(shí)現(xiàn)
數(shù)據(jù)檢索要求實(shí)現(xiàn)高性能、高穩(wěn)定性、高可擴(kuò)展性,針對(duì)數(shù)據(jù)檢索的核心設(shè)計(jì)包括Web存儲(chǔ)集群、索引計(jì)算集群、索引服務(wù)集群。 Web存儲(chǔ)集群(Web Storage Cluster)[9]:主要存放資源文件如網(wǎng)頁(yè)等,根據(jù)系統(tǒng)查詢的文件類型如Word、PDF、圖片等,都可以存放在Web存儲(chǔ)集群中;索引計(jì)算集群(Indexing Cluster)[10]:主要用于計(jì)算Web存儲(chǔ)的文件,生成索引數(shù)據(jù)和文件,為后續(xù)工作做準(zhǔn)備;索引服務(wù)集群(Index Service Cluster):主要用于存放索引文件并進(jìn)行查詢工作,如圖6所示。
數(shù)據(jù)檢索的前端頁(yè)面并不需要華麗的外表和復(fù)雜的界面設(shè)計(jì),簡(jiǎn)潔的頁(yè)面反而更受用戶青睞。對(duì)系統(tǒng)前端頁(yè)面設(shè)計(jì)沿用常規(guī)設(shè)計(jì)風(fēng)格,有一個(gè)主頁(yè)標(biāo)簽、檢索輸入框、檢索功能按鈕,根據(jù)業(yè)務(wù)需求提供指標(biāo)、標(biāo)簽、知識(shí)、頁(yè)面、表、翻譯等功能候選項(xiàng)。 良好的查詢界面對(duì)檢索系統(tǒng)也是非常重要的,整個(gè)查詢過(guò)程都需要保證頁(yè)面的整潔有序。如用戶查詢?nèi)≠M(fèi)用戶數(shù)分布,以及選擇TD客戶分布情況,查詢結(jié)果頁(yè)面效果如圖7所示。
4結(jié)語(yǔ)
本文對(duì)基于大數(shù)據(jù)平臺(tái)的智能云檢索系統(tǒng)關(guān)鍵技術(shù)作了詳細(xì)介紹。目前大數(shù)據(jù)技術(shù)基本成熟,分布式文件系統(tǒng)對(duì)海量數(shù)據(jù)的存儲(chǔ)和處理能力很強(qiáng),各種大數(shù)據(jù)開(kāi)源框架的出現(xiàn)讓大數(shù)據(jù)處理技術(shù)變得不再遙不可及,企業(yè)可以在低投入的情況下建立自己的大數(shù)據(jù)平臺(tái),根據(jù)自身特點(diǎn)研究大數(shù)據(jù)處理技術(shù),建立企業(yè)級(jí)數(shù)據(jù)檢索系統(tǒng),充分利用數(shù)據(jù)資源為企業(yè)創(chuàng)造效益。
參考文獻(xiàn):[1]孟小峰,慈祥.大數(shù)據(jù)管理:概念、技術(shù)與挑戰(zhàn)[J].計(jì)算機(jī)研究與發(fā)展,2013,34(1):146169.
[2]高明.大數(shù)據(jù)企業(yè)應(yīng)用探索[J].合作經(jīng)濟(jì)與科技,2014,21(3):106107.
[3]艷琳.大數(shù)據(jù)應(yīng)用之道[J].科學(xué)大觀園,2013,12(2):7576.
[4]WU D P ,HOU Y T ,ZHU W W,et al.Streaming video over the internet:approaches and directions[J].IEEE Transactions on Circuits and Systems for Video Technology,2011,21(3):282300.
[5]TRAN D A ,HUA K A ,DO T T.A peertopeer architecture for media streaming[J].IEEE Journal on Selected Areas in Communications,2014,22(2):114.
[6]許波,陳曉龍.UML結(jié)合軟件工程教學(xué)改革探討[J].計(jì)算機(jī)教育,2013,25(2):239244.
[7]肖漢,車葵,石艷芳.軟件工程[M].北京:國(guó)防工業(yè)出版社,2013:1020.
[8]馮慧林,朱樹(shù)人.基于開(kāi)源技術(shù)的Web應(yīng)用架構(gòu)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2015,38(5):2729.
[9]史長(zhǎng)民.軟件工程:原理、方法與應(yīng)用[M].北京:高等教育出版社,2014,3660.
[10]Microsoft Media Server.Protocol specification[M].Microsoft Corp,USA,2013:110.
[11]向世靜.大數(shù)據(jù)關(guān)鍵技術(shù)及發(fā)展[J].軟件導(dǎo)刊,2016,15(10):2325.
[12]劉卓,崔忠偉.大數(shù)據(jù)技術(shù)在高校智慧校園中的應(yīng)用[J].軟件導(dǎo)刊,2015,14(8):224225.
(責(zé)任編輯:杜能鋼)