段文龍 包崇明 周麗華 孔兵
摘 要:為了解決傳統(tǒng)銀行報(bào)表系統(tǒng)無法滿足千萬級以上數(shù)據(jù)實(shí)時(shí)查詢、統(tǒng)計(jì)問題,基于SolrCloud技術(shù)提出一種新的實(shí)時(shí)報(bào)表系統(tǒng),并就系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)作詳細(xì)介紹,最后使用銀行交易數(shù)據(jù)對系統(tǒng)進(jìn)行一系列測試。實(shí)驗(yàn)結(jié)果表明:該系統(tǒng)對數(shù)據(jù)進(jìn)行實(shí)時(shí)查詢與統(tǒng)計(jì)操作時(shí),耗時(shí)均在毫秒級范圍內(nèi),可以很好地完成千萬級以上數(shù)據(jù)的實(shí)時(shí)查詢與統(tǒng)計(jì)。
關(guān)鍵詞:SolrCloud;實(shí)時(shí)查詢;報(bào)表系統(tǒng);數(shù)據(jù)處理DOI:10. 11907/rjdk. 181893
中圖分類號:TP319文獻(xiàn)標(biāo)識碼:A文章編號:1672-7800(2019)002-0079-05
Abstract: For solving the problem that the traditional bank report system has been unable to meet the needs of real-time query and statistics for tens of millions of data, base on SolrCloud technology, this paper designs a new real-time report system and makes a detailed introduction to the construction and index design of the real-time report system. Finally, a series of tests were conducted on the system using the bank transaction data. The experimental results show that when the real-time reporting system performs real-time query and statistics operations on data, it takes time in the range of milliseconds. The experimental conclusion is obtained that the real-time reporting system based on SolrCloud technology can complete the real-time query and statistics of more than tens of millions of data well.
Key Words: SolrCloud; real-time query; report system; data processing
0 引言
報(bào)表系統(tǒng)作為銀行系統(tǒng)的重要組成部分,在其中占據(jù)重要位置。報(bào)表系統(tǒng)通過對銀行交易數(shù)據(jù)進(jìn)行統(tǒng)計(jì)、分析得到有用信息,為銀行管理層決策提供了有力支持[1-2]。數(shù)據(jù)實(shí)時(shí)統(tǒng)計(jì)分析對銀行分析用戶交易情況和輔助銀行管理人員決策顯得更加重要[3]。
國內(nèi)外銀行報(bào)表系統(tǒng)經(jīng)過多年發(fā)展,各種報(bào)表工具相繼出現(xiàn)。國外報(bào)表系統(tǒng)主要包括早期電子報(bào)表[4] 、專業(yè)報(bào)表管理軟件、報(bào)表生成組件、基于大數(shù)據(jù)技術(shù)的報(bào)表系統(tǒng)等,各種報(bào)表系統(tǒng)雖然功能強(qiáng)大,但是無法對數(shù)據(jù)進(jìn)行實(shí)時(shí)查詢、統(tǒng)計(jì)[5]。
與國外相比,我國報(bào)表工具開發(fā)起步較晚,技術(shù)發(fā)展相對滯后。到20世紀(jì)80年代末,我國財(cái)務(wù)軟件公司才開發(fā)出通用的報(bào)表系統(tǒng),其中具有代表性的是用友公司開發(fā)的用友UFO[6]。到20世紀(jì)90年代,隨著Windows使用越來越廣泛,各大公司依托 Windows系統(tǒng)平臺開發(fā)了基于Excel的報(bào)表系統(tǒng),但是該類報(bào)表系統(tǒng)功能比較簡單,并對Excel有很大依賴性。隨著大數(shù)據(jù)技術(shù)快速發(fā)展,各大互聯(lián)網(wǎng)公司開始開發(fā)自己的大數(shù)據(jù)報(bào)表系統(tǒng),極大地解決了傳統(tǒng)報(bào)表系統(tǒng)對大量數(shù)據(jù)處理困難的問題,但各種報(bào)表系統(tǒng)仍無法實(shí)現(xiàn)對數(shù)據(jù)的實(shí)時(shí)查詢、統(tǒng)計(jì)[7]。
本文通過對部分銀行報(bào)表系統(tǒng)的深入分析,找到現(xiàn)有報(bào)表系統(tǒng)無法對數(shù)據(jù)進(jìn)行實(shí)時(shí)查詢、統(tǒng)計(jì)的問題癥結(jié)。通常,部分銀行報(bào)表系統(tǒng)為了縮短數(shù)據(jù)查詢時(shí)間,提高客戶體驗(yàn)度,往往先對數(shù)據(jù)進(jìn)行離線計(jì)算,后查詢。該方法雖然在一定程度上達(dá)到了實(shí)時(shí)查詢效果,但是無法對實(shí)時(shí)交易數(shù)據(jù)進(jìn)行統(tǒng)計(jì)分析,通常只能獲得前一天數(shù)據(jù)的統(tǒng)計(jì)分析結(jié)果,并且只適合數(shù)據(jù)量不大的情況。然而隨著大數(shù)據(jù)時(shí)代到來,銀行各種數(shù)據(jù)呈爆發(fā)式增長,該方法已經(jīng)很難滿足數(shù)據(jù)實(shí)時(shí)統(tǒng)計(jì)、查詢的需求。銀行開始使用大數(shù)據(jù)處理技術(shù)進(jìn)行數(shù)據(jù)計(jì)算,一定程度上緩解了海量數(shù)據(jù)的計(jì)算壓力,但是數(shù)據(jù)計(jì)算大多仍采用離線計(jì)算方式,無法實(shí)現(xiàn)真正意義上的實(shí)時(shí)統(tǒng)計(jì)、查詢[7-9]。
本文通過對銀行報(bào)表系統(tǒng)應(yīng)用背景的分析與研究,利用SolrCloud技術(shù)可近實(shí)時(shí)搜索的特性[10],設(shè)計(jì)新的報(bào)表系統(tǒng)框架,開發(fā)了一個(gè)針對銀行業(yè)務(wù)的報(bào)表系統(tǒng),以實(shí)現(xiàn)對千萬級以上數(shù)據(jù)進(jìn)行實(shí)時(shí)統(tǒng)計(jì)、查詢的目標(biāo)。本文介紹了系統(tǒng)開發(fā)中用到的工具、方法和技術(shù),對類似工作有一定參考價(jià)值。
1 SolrCloud
SolrCloud是為了解決海量數(shù)據(jù)搜索及滿足高容錯(cuò)需求,在Solr[11]和Zookeeper[12]基礎(chǔ)上設(shè)計(jì)的分布式搜索引擎。SolrCloud適用于海量數(shù)據(jù)及高并發(fā)搜索服務(wù),可以在毫秒級時(shí)間范圍內(nèi)完成千萬級以上數(shù)據(jù)的搜索服務(wù)。
SolrCloud是高可靠系統(tǒng),由多臺Solr服務(wù)器共同組成Solr集群,通過Zookeeper管理整個(gè)集群的運(yùn)作[13]。SolrCloud將全部索引文件分布到Solr集群中不同Solr服務(wù)器上,當(dāng)用戶進(jìn)行信息檢索時(shí),由SolrCloud進(jìn)行任務(wù)劃分,將小的檢索任務(wù)分配給不同Solr服務(wù)器進(jìn)行信息檢索,最后將多臺服務(wù)器檢索結(jié)果合并,并將結(jié)果返回。在SolrCloud中,可以為Solr服務(wù)器配置一個(gè)或多個(gè)備份服務(wù)器,當(dāng)主服務(wù)器出現(xiàn)故障時(shí),備份服務(wù)器可以代替主服務(wù)器對外提供搜索服務(wù),保證搜索服務(wù)正常運(yùn)行。
SolrCloud在繼承Solr基本功能的基礎(chǔ)上,對Solr原有功能進(jìn)行了擴(kuò)展,增加了新特性:①對信息進(jìn)行集中配置;②自動(dòng)完成系統(tǒng)容錯(cuò);③可以完成近實(shí)時(shí)搜索;④信息搜索時(shí),自動(dòng)完成負(fù)載均衡[14-15]。
2 系統(tǒng)設(shè)計(jì)
實(shí)時(shí)報(bào)表系統(tǒng)在詳細(xì)分析銀行業(yè)務(wù)特點(diǎn)的基礎(chǔ)上,結(jié)合SolrCloud技術(shù)的近實(shí)時(shí)搜索特性,主要分為數(shù)據(jù)抽取模塊、數(shù)據(jù)計(jì)算模塊、SolrCloud搜索模塊、數(shù)據(jù)加密模塊4個(gè)核心模塊。其中,數(shù)據(jù)抽取模塊主要功能是抽取實(shí)時(shí)交易數(shù)據(jù)和全量數(shù)據(jù),為數(shù)據(jù)計(jì)算模塊提供原始數(shù)據(jù)源;數(shù)據(jù)計(jì)算模塊主要功能是對報(bào)表原始數(shù)據(jù)進(jìn)行計(jì)算,并將計(jì)算結(jié)果整理成SolrCloud索引結(jié)構(gòu)數(shù)據(jù),為SolrCloud提供數(shù)據(jù)源;SolrCloud搜索模塊主要功能是為銀行用戶提供實(shí)時(shí)檢索服務(wù);數(shù)據(jù)加密模塊主要功能是保證整個(gè)系統(tǒng)中數(shù)據(jù)傳輸、上傳及計(jì)算等過程的安全。圖1詳細(xì)展示了實(shí)時(shí)報(bào)表系統(tǒng)設(shè)計(jì)框架。
2.1 數(shù)據(jù)抽取模塊
數(shù)據(jù)抽取模塊作為實(shí)時(shí)報(bào)表系統(tǒng)的核心模塊,主要完成原始數(shù)據(jù)采集,為整個(gè)報(bào)表系統(tǒng)提供數(shù)據(jù)源。根據(jù)銀行業(yè)務(wù)特點(diǎn),將數(shù)據(jù)源分為兩部分:增量數(shù)據(jù)源和全量數(shù)據(jù)源。增量數(shù)據(jù)源是銀行設(shè)備的實(shí)時(shí)交易數(shù)據(jù),為整個(gè)報(bào)表系統(tǒng)提供實(shí)時(shí)數(shù)據(jù)源,保證報(bào)表系統(tǒng)可以統(tǒng)計(jì)任意時(shí)間段的交易情況。全量數(shù)據(jù)源是增量數(shù)據(jù)源的補(bǔ)充,由于增量數(shù)據(jù)需要實(shí)時(shí)更新到SolrCloud集群中,大量、頻繁的插入、更新操作,在集群中產(chǎn)生了大量索引碎片,占用大量存儲空間,同時(shí)影響了檢索效率。為解決該問題,每天都需刪除增量數(shù)據(jù)生成的索引,并使用當(dāng)天全量數(shù)據(jù)進(jìn)行SolrCloud索引重建。
數(shù)據(jù)抽取模塊根據(jù)數(shù)據(jù)源不同,可以分為增量數(shù)據(jù)抽取子模塊和全量數(shù)據(jù)抽取子模塊,前者主要進(jìn)行增量數(shù)據(jù)抽取,后者主要進(jìn)行全量數(shù)據(jù)抽取,并將數(shù)據(jù)導(dǎo)入到高可靠分布式HDFS文件系統(tǒng)中[16]。
2.1.1 增量數(shù)據(jù)抽取子模塊
增量數(shù)據(jù)抽取子模塊主要介紹實(shí)時(shí)數(shù)據(jù)獲取和數(shù)據(jù)計(jì)算的具體設(shè)計(jì),可以分為4個(gè)步驟:第一步,當(dāng)終端發(fā)生交易時(shí),終端會通過加密程序處理數(shù)據(jù),生成相應(yīng)密文上送到服務(wù)器;第二步,當(dāng)服務(wù)器上的監(jiān)聽程序監(jiān)聽到數(shù)據(jù)請求時(shí),數(shù)據(jù)接口接收上送的密文;第三步,由于交易存在高并發(fā)量情況,為了避免數(shù)據(jù)丟失,在進(jìn)行數(shù)據(jù)處理前,將密文存入數(shù)據(jù)暫存隊(duì)列中,利用多線程依次讀取數(shù)據(jù),對密文進(jìn)行解密,還原原始交易數(shù)據(jù);第四步,提取原始交易數(shù)據(jù)中的有用信息,包含機(jī)構(gòu)名、設(shè)備名、交易編碼、交易金額等多個(gè)重要信息,然后分別從SolrCloud集群中獲取設(shè)備分類寬表和機(jī)構(gòu)分類寬表的數(shù)據(jù),按照設(shè)備名稱和機(jī)構(gòu)名稱分別根據(jù)交易碼對兩張寬表的數(shù)據(jù)進(jìn)行重新計(jì)算及更新,并將更新后的寬表數(shù)據(jù)保存至索引更新等待隊(duì)列中。
在整個(gè)處理過程中,由于交易量較大,如果使用傳統(tǒng)的串行方式計(jì)算交易數(shù)據(jù),不但占用資源多,而且耗時(shí)長、效率低。因此,采用多線程并行執(zhí)行數(shù)據(jù)的計(jì)算過程,可以極大地提高計(jì)算效率,縮短整個(gè)子模塊處理時(shí)間。
2.1.2 全量數(shù)據(jù)抽取子模塊
全量數(shù)據(jù)抽取子模塊主要介紹全量數(shù)據(jù)的抽取及上傳過程,根據(jù)實(shí)際需要將整個(gè)過程分為4個(gè)步驟:第一步,Spring啟動(dòng)定時(shí)任務(wù),開始全量數(shù)據(jù)抽取,將抽取的全量數(shù)據(jù)保存到本地文件中;第二步,對全量數(shù)據(jù)文件使用DES加密模塊進(jìn)行文件加密,得到加密數(shù)據(jù)文件;第三步,將加密數(shù)據(jù)文件上傳到HDFS中,從HDFS中讀取接收到的加密數(shù)據(jù)文件,并對加密文件進(jìn)行解密,得到原始數(shù)據(jù)文件;第四步,將解密得到的原始數(shù)據(jù)文件加載到Hive相應(yīng)表中。
在該子模塊設(shè)計(jì)過程中,為了保證全量數(shù)據(jù)抽取順利完成,針對幾個(gè)核心問題提出如下解決方案:
(1)全量數(shù)據(jù)過大、存儲難。由于每天產(chǎn)生的全量數(shù)據(jù)量很大,隨著時(shí)間增加,其存儲問題極大地限制了系統(tǒng)拓展。因此,在該子模塊設(shè)計(jì)時(shí),利用分布式文件HDFS的存儲優(yōu)勢完成全量數(shù)據(jù)存儲。全量數(shù)據(jù)采用文件形式保存,然后存儲在分布式文件系統(tǒng)HDFS中。全量數(shù)據(jù)由數(shù)據(jù)庫中多張表的數(shù)據(jù)組成,包括交易數(shù)據(jù)流水表、設(shè)備信息表、機(jī)構(gòu)信息表和交易碼信息表等。因此,全量數(shù)據(jù)從數(shù)據(jù)庫導(dǎo)出時(shí)不再進(jìn)行數(shù)據(jù)處理,直接將每個(gè)表的數(shù)據(jù)保存為本地?cái)?shù)據(jù)文件,其中每一行保存數(shù)據(jù)庫中的一條信息,同一行中使用逗號分隔不同字段,便于以后對數(shù)據(jù)文件進(jìn)行解析,最后將生成的全量數(shù)據(jù)文件加密后上傳到HDFS中。
(2)數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中傳輸錯(cuò)誤。由于數(shù)據(jù)在網(wǎng)絡(luò)傳輸過程中存在傳輸錯(cuò)誤,為了保證數(shù)據(jù)傳輸順利完成,設(shè)計(jì)了數(shù)據(jù)重傳機(jī)制。當(dāng)數(shù)據(jù)文件導(dǎo)入HDFS文件系統(tǒng)后,返回導(dǎo)入結(jié)果字段,根據(jù)結(jié)果字段進(jìn)行是否重傳判斷,如果導(dǎo)入成功則完成全量數(shù)據(jù)抽取,否則進(jìn)行數(shù)據(jù)文件重傳。
(3)數(shù)據(jù)在網(wǎng)絡(luò)傳輸中丟失信息。數(shù)據(jù)文件通過網(wǎng)絡(luò)進(jìn)行傳輸時(shí)面臨信息丟失風(fēng)險(xiǎn),而數(shù)據(jù)丟失可能給銀行和客戶帶來極大損失。因此,采用DES加密算法對文件數(shù)據(jù)加密,以保證數(shù)據(jù)在傳輸過程中的安全。
2.2 數(shù)據(jù)計(jì)算模塊
數(shù)據(jù)計(jì)算模塊根據(jù)數(shù)據(jù)源不同,可分為增量數(shù)據(jù)計(jì)算子模塊和全量數(shù)據(jù)計(jì)算子模塊兩個(gè)部分。
2.2.1 增量數(shù)據(jù)計(jì)算子模塊
增量數(shù)據(jù)計(jì)算子模塊在進(jìn)行增量數(shù)據(jù)計(jì)算時(shí),由于數(shù)據(jù)并發(fā)量高,采用多線程隊(duì)列進(jìn)行數(shù)據(jù)接收、計(jì)算。增量數(shù)據(jù)計(jì)算具體過程如圖2所示。
第一步,從終端設(shè)備獲得實(shí)時(shí)交易數(shù)據(jù)并使用DES加密算法對數(shù)據(jù)進(jìn)行加密處理,然后將加密數(shù)據(jù)上送到報(bào)表系統(tǒng)后臺。當(dāng)后臺線程監(jiān)聽到上送數(shù)據(jù)時(shí),調(diào)用空閑線程接收上送數(shù)據(jù)并加入等待隊(duì)列。第二步,當(dāng)后臺檢測到等待隊(duì)列處于非空狀態(tài)時(shí),調(diào)用空閑線程從等待隊(duì)列獲取待處理數(shù)據(jù),空閑線程對數(shù)據(jù)使用DES算法進(jìn)行解密,得到原始數(shù)據(jù)信息。第三步,從原始數(shù)據(jù)信息中篩選出需要的數(shù)據(jù)進(jìn)行計(jì)算。第四步,將計(jì)算結(jié)果按照最初設(shè)計(jì)好的索引格式保存到Solr索引文件中。
2.2.1 增量數(shù)據(jù)計(jì)算子模塊
全量數(shù)據(jù)計(jì)算子模塊進(jìn)行全量數(shù)據(jù)計(jì)算時(shí),由于數(shù)據(jù)量太大,傳統(tǒng)的存儲方式很難滿足系統(tǒng)需要,系統(tǒng)設(shè)計(jì)時(shí)引入適合海量數(shù)據(jù)離線計(jì)算的Hadoop[12]平臺,進(jìn)行數(shù)據(jù)的分布式存儲和計(jì)算[17]。全量數(shù)據(jù)計(jì)算具體過程如圖3所示。
第一步,對全量數(shù)據(jù)文件使用DES算法進(jìn)行加密,然后將加密文件上送到Hadoop平臺中的分布式文件系統(tǒng)HDFS中。文件上送結(jié)束后,系統(tǒng)會返回上送結(jié)果標(biāo)識,根據(jù)結(jié)果標(biāo)識判斷下一步執(zhí)行操作。若標(biāo)識是0,表示上送失敗,后臺程序啟動(dòng)重傳機(jī)制不斷進(jìn)行數(shù)據(jù)文件上送,直至數(shù)據(jù)上送成功。第二步,數(shù)據(jù)文件上送成功后,后臺啟動(dòng)解密程序?qū)?shù)據(jù)文件進(jìn)行解密,得到原始數(shù)據(jù)文件,將原始數(shù)據(jù)文件加載到Hive中。第三步,當(dāng)加載結(jié)束后,Hive開始對新加載的數(shù)據(jù)文件進(jìn)行計(jì)算,整個(gè)計(jì)算根據(jù)交易碼、機(jī)構(gòu)名稱、設(shè)備名稱等進(jìn)行分類,將分類計(jì)算結(jié)果保存在不同中間文件中。第四步,根據(jù)規(guī)則將多個(gè)中間文件按照Solr索引格式進(jìn)行合并,合并結(jié)果保存在相應(yīng)的Solr索引文件中。第五步,計(jì)算完成后,需要將相關(guān)信息存儲到Oracle操作日志中,主要包括文件信息、上送時(shí)間、計(jì)算結(jié)束時(shí)間等。
2.3 SolrCloud搜索模塊
SolrCloud搜索模塊主要為整個(gè)系統(tǒng)提供數(shù)據(jù)實(shí)時(shí)查詢、統(tǒng)計(jì)功能,同時(shí)還提供索引創(chuàng)建、更新及刪除等功能。在該模塊中,索引結(jié)構(gòu)設(shè)計(jì)對SolrCloud的檢索效率會產(chǎn)生很大影響。由于系統(tǒng)中所需報(bào)表數(shù)據(jù)由多張數(shù)據(jù)庫表的有用信息組成,為了提高搜索效率,采用寬表結(jié)構(gòu)對多張表的信息進(jìn)行融合[18]。同時(shí),該設(shè)計(jì)的另一個(gè)優(yōu)勢是,寬表結(jié)構(gòu)與SolrCloud索引結(jié)構(gòu)一致,創(chuàng)建索引時(shí),只用創(chuàng)建一條索引而不用創(chuàng)建多條索引,減少了索引數(shù)量,同時(shí)避免跨表檢索,縮短了檢索時(shí)耗,提高了檢索效率。系統(tǒng)中寬表結(jié)構(gòu)設(shè)計(jì)的方法一致,本文介紹其中一個(gè)寬表結(jié)構(gòu),圖4描述了報(bào)表系統(tǒng)中設(shè)備統(tǒng)計(jì)報(bào)表的寬表結(jié)構(gòu)。
從圖4可以看到,寬表中字段由設(shè)備信息表、機(jī)構(gòu)信息表、交易流水表的有用信息共同構(gòu)成,該設(shè)計(jì)使原來需要?jiǎng)?chuàng)建多條SolrCloud索引,變?yōu)橹恍鑴?chuàng)建一條索引。同時(shí),也不需要跨域檢索信息,只需檢索一條索引信息即可,極大地提高了效率。
2.4 數(shù)據(jù)加密模塊
整個(gè)報(bào)表系統(tǒng)中所有數(shù)據(jù)均是銀行每個(gè)客戶交易的具體信息,數(shù)據(jù)通過網(wǎng)絡(luò)傳輸?shù)椒植际紿adoop集群的HDFS文件系統(tǒng)存在很大風(fēng)險(xiǎn),一旦出現(xiàn)數(shù)據(jù)泄露,會給銀行和客戶造成不可預(yù)期的嚴(yán)重后果,因此在報(bào)表系統(tǒng)中數(shù)據(jù)的安全性顯得尤為重要。
DES算法作為分組密碼算法的一種,算法公開、安全級別高、密鑰獲取容易、運(yùn)算過程簡潔[19]。因此,DES算法在通信領(lǐng)域得到廣泛運(yùn)用[20]。系統(tǒng)采用DES算法對全部數(shù)據(jù)文件加密,然后通過網(wǎng)絡(luò)傳輸?shù)椒植际紿adoop集群,并存儲在HDFS文件系統(tǒng)中,最后對新上傳的數(shù)據(jù)文件使用解密算法處理,將其寫入新的數(shù)據(jù)文件中,同時(shí)刪除原有加密數(shù)據(jù)文件。
3 系統(tǒng)實(shí)現(xiàn)
系統(tǒng)設(shè)計(jì)從安全性和穩(wěn)定性考慮,采用多數(shù)生產(chǎn)環(huán)境所用的Linux系統(tǒng),主要部署在安裝有Linux系統(tǒng)的集群中。實(shí)驗(yàn)開發(fā)環(huán)境是基于VMware技術(shù)構(gòu)建的系統(tǒng)環(huán)境[21]。為了實(shí)現(xiàn)Linux集群環(huán)境,首先需要?jiǎng)?chuàng)建多個(gè)VMware虛擬機(jī),然后為其搭建Linux集群,最后配置集群所需各種軟硬件環(huán)境。針對系統(tǒng)各模塊,環(huán)境搭建主要分為Hadoop環(huán)境搭建、離線數(shù)據(jù)計(jì)算所需Hive搭建、Solr集群環(huán)境搭建等幾個(gè)模塊。下文介紹系統(tǒng)安裝和部署。
3.1 系統(tǒng)開發(fā)環(huán)境搭建
主要介紹報(bào)表系統(tǒng)在開發(fā)前環(huán)境的搭建。搭建系統(tǒng)所需的軟硬件環(huán)境,主要步驟如下:①創(chuàng)建VMware虛擬機(jī),安裝Centos系統(tǒng);②搭建分布式Hadoop集群;③在Hadoop集群中搭建Hive,然后搭建Mysql數(shù)據(jù)庫并存儲Hive元數(shù)據(jù);④搭建Zookeeper集群,進(jìn)行Solr集群管理;⑤搭建Tomcat服務(wù)器,并完成Solr與Tomcat的集成;⑥搭建分布式SolrCloud集群。
表1詳細(xì)描述了系統(tǒng)搭建過程中所用軟件相關(guān)信息。整個(gè)系統(tǒng)環(huán)境基于Linux集群,每一臺Linux主機(jī)的環(huán)境配置基本相同。因此,主要對一臺Linux主機(jī)進(jìn)行環(huán)境配置,完成一臺配置后將其Linux主機(jī)克隆到不同Linux主機(jī)中,最后對每臺Linux進(jìn)行必要調(diào)整。
3.2 系統(tǒng)實(shí)現(xiàn)及展示
在數(shù)據(jù)計(jì)算模塊,全量數(shù)據(jù)計(jì)算由于數(shù)據(jù)量太大,因此本文設(shè)計(jì)了兩種計(jì)算方式提高其計(jì)算效率:①采用“分治”思想,將全量數(shù)據(jù)文件分類別計(jì)算,并將計(jì)算結(jié)果保存在中間文件中,最后將所有中間文件合并為特定寬表結(jié)構(gòu)的數(shù)據(jù)文件;②采用MapReduce并行計(jì)算框架對數(shù)據(jù)進(jìn)行計(jì)算。圖5展示了機(jī)構(gòu)分類報(bào)表對機(jī)構(gòu)交易數(shù)據(jù)統(tǒng)計(jì)的情況。
實(shí)驗(yàn)證明,實(shí)時(shí)報(bào)表系統(tǒng)可以在毫秒級時(shí)間范圍內(nèi)完成千萬級以上數(shù)據(jù)的統(tǒng)計(jì)、查詢。
4 結(jié)語
本文針對銀行報(bào)表千萬級以上數(shù)據(jù)無法實(shí)時(shí)統(tǒng)計(jì)、查詢的問題,基于SolrCloud分布式搜索框架近實(shí)時(shí)查詢的特點(diǎn),設(shè)計(jì)了一個(gè)適合銀行的實(shí)時(shí)報(bào)表系統(tǒng)。通過實(shí)驗(yàn)證明,基于SolrCloud技術(shù)實(shí)現(xiàn)的實(shí)時(shí)報(bào)表系統(tǒng)在毫秒級時(shí)間范圍內(nèi),很好地實(shí)現(xiàn)了千萬級以上數(shù)據(jù)的實(shí)時(shí)統(tǒng)計(jì)、查詢,為銀行實(shí)時(shí)報(bào)表系統(tǒng)設(shè)計(jì)提供了一定參考?,F(xiàn)階段該實(shí)時(shí)系統(tǒng)也存在一些不足,如全量數(shù)據(jù)文件在HDFS中進(jìn)行存儲時(shí)效率不高,下一階段需針對此問題著重改進(jìn)存儲方法,以提高文件存儲效率。
參考文獻(xiàn):
[1] 王文欣. 中資銀行境外分行報(bào)表系統(tǒng)分析[J]. 現(xiàn)代商貿(mào)工業(yè),2013,25(3):117-118.
[2] 宋華. 企業(yè)數(shù)據(jù)統(tǒng)計(jì)分析報(bào)表系統(tǒng)的設(shè)計(jì)分析[J]. 決策與信息:下半月,2013 (5):132-133.
[3] 馬文慶,王晉生,張少華. 基于Web的實(shí)時(shí)報(bào)表系統(tǒng)研究[J]. 中國科技信息,2011(21):60.
[4] 頎桓. 基于數(shù)據(jù)倉庫的商業(yè)銀行報(bào)表系統(tǒng)基礎(chǔ)數(shù)據(jù)分析設(shè)計(jì)[J]. 企業(yè)技術(shù)開發(fā),2011,30(23):127-129.
[5] 周豪. 大數(shù)據(jù)量下的實(shí)時(shí)數(shù)據(jù)報(bào)表系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京交通大學(xué),2016.
[6] 馮鑫永. 用友UFO報(bào)表系統(tǒng)存在的問題及對策[J]. 財(cái)會月刊,2014(3):96-98.
[7] 周志陽,陳飛. 大數(shù)據(jù)實(shí)時(shí)計(jì)算平臺技術(shù)綜述[J]. 中國新通信,2017,19(4):47.
[8] 楊東芳,王少英. 面向大數(shù)據(jù)的計(jì)算框架研究[J]. 河南科技,2015(1X):20-22.
[9] 王磊,張真,王胤然. 實(shí)時(shí)云計(jì)算數(shù)據(jù)庫——數(shù)據(jù)立方[J]. 中興通訊技術(shù), 2013,19(4):25-31.
[10] SOLR WIKI. Welcome to the Apache SolrWiki[DB/OL].? https://wiki.apache.org/solr.
[11] TREY G,TIMOTHY P. Solr in action[M]. New York:Manning Publications Co,2014.
[12] WHITE T. Hadoop權(quán)威指南[M]. 周敏,曾大聃,周傲,譯. 北京:清華大學(xué)出版社,2011.
[13] 趙璞,朱志祥,張康益. 高性能分布式搜索引擎Solr的研究與實(shí)現(xiàn)[J]. 電子科技,2015,28(4):73-75.
[14] RAFAL K. Apache Solr 4 cookbook[M]. Birmingham:Packt Publishing,2013.
[15] 李戴維,李寧. 基于Solr的分布式全文檢索系統(tǒng)的研究與實(shí)現(xiàn)[J]. 計(jì)算機(jī)與現(xiàn)代化,2012(11):172-173.
[16] 曹卉.? Hadoop分布式文件系統(tǒng)原理[J]. 軟件導(dǎo)刊,2016,15(3):15-17.
[17] 許吳環(huán),顧瀟華. 大數(shù)據(jù)處理平臺比較研究[J]. 軟件導(dǎo)刊,2017,16(4):212-214.?
[18] 馬寧,杜武倫,王勇. 面向大數(shù)據(jù)的商業(yè)銀行監(jiān)管報(bào)送系統(tǒng)研究[J]. 軟件導(dǎo)刊,2016,15(4):157-160.
[19] 沈鑫剡. 計(jì)算機(jī)網(wǎng)絡(luò)安全[M]. 北京:人民郵電出版社,2011.
[20] 馮登國. 網(wǎng)絡(luò)安全原理與技術(shù)[M]. 北京:科學(xué)出版社,2003.
[21] 王春海. VMware Workstation與ESX Server典型應(yīng)用指南[M]. 北京:中國鐵道出版社,2011.
(責(zé)任編輯:何 麗)