張學偉
摘要:隨著互聯(lián)網(wǎng)及大數(shù)據(jù)時代的到來,新數(shù)據(jù)的產(chǎn)生以指數(shù)級的速度增長,而這大量的數(shù)據(jù)中,又以格式不確定的非結(jié)構(gòu)化數(shù)據(jù)為主。主流的關(guān)系型數(shù)據(jù)庫技術(shù)很難駕馭非結(jié)構(gòu)化數(shù)據(jù),本文提出基于Hadoop分布式框架的非結(jié)構(gòu)化數(shù)據(jù)管理體系。采用HBase數(shù)據(jù)庫技術(shù)處理多格式的大量小文件,利用Lucene檢索引擎設計全文檢索策略,并在此基礎(chǔ)上搭建分層體系架構(gòu)。
關(guān)鍵詞:Hadoop;非結(jié)構(gòu)化數(shù)據(jù);Lucene
中圖分類號:TP311 文獻標識碼:A 文章編號:1007-9416(2017)05-0054-01
1 引言
在油田開發(fā)過程中,積累了大量的信息數(shù)據(jù),包括辦公文檔、地震數(shù)據(jù)、方案文檔及各種圖件等非結(jié)構(gòu)化的數(shù)據(jù)。將這些數(shù)據(jù)進行妥善的存儲和管理,進一步挖掘數(shù)據(jù)價值對油田的可持續(xù)發(fā)展有著重要意義。
2 Hadoop環(huán)境下的文檔存儲技術(shù)
2.1 數(shù)據(jù)庫技術(shù)對比分析
以Oracle為代表的傳統(tǒng)關(guān)系型數(shù)據(jù)庫能夠?qū)Y(jié)構(gòu)化數(shù)據(jù)進行很好的管理,也可以通過二進制大對象(BLOB)作為容器來存儲非結(jié)構(gòu)化數(shù)據(jù)。Oracle在管理與檢索非結(jié)構(gòu)化數(shù)據(jù)時,需要額外的處理能力和內(nèi)存才能獲得與文件系統(tǒng)存儲非結(jié)構(gòu)化數(shù)據(jù)同樣的性能。
由于對硬件性能的高要求,就使得許多針對非結(jié)構(gòu)化數(shù)據(jù)的存儲方案誕生,其中以開源的Hadoop分布式計算框架為代表。
Hadoop采用流式數(shù)據(jù)訪問模式,并使用主/從架構(gòu)模式,通過多數(shù)據(jù)副本保存和分布式處理,保證了Hadoop能夠以可靠、高效、可伸縮的方式存儲處理數(shù)據(jù)。
Hadoop是為存儲大文件設計的,在處理大量小文件時,每個小文件都以對象的形式存儲在元數(shù)據(jù)節(jié)點內(nèi)存中,大量小文件會占用大量內(nèi)存,這樣元數(shù)據(jù)節(jié)點的內(nèi)存容量會嚴重制約集群的擴展;Hadoop以流式訪問大量小文件時,需要頻繁請求數(shù)據(jù)節(jié)點以獲取文件,嚴重影響元數(shù)據(jù)節(jié)點和數(shù)據(jù)節(jié)點的IO性能。
HBase是Hadoop中帶有的分布式的、面向列的開源數(shù)據(jù)庫。使用HBase存儲非結(jié)構(gòu)化數(shù)據(jù),具有系統(tǒng)層小文件打包、全局命名空間等多種優(yōu)勢。
2.2 Oracle和HBase效率比較
仿照Oracle文檔存儲結(jié)構(gòu),設計HBase表行鍵結(jié)構(gòu),其中以文檔代碼為行鍵,錄入時間為時間戳,列簇包括項目名稱、文檔名稱、最后更改時間、文檔內(nèi)容、用戶名稱等,列簇字段可后期根據(jù)需要添加,保證了表格的擴展性。
使用Java語言接口分別連接Hbase數(shù)據(jù)庫及Oracle數(shù)據(jù)庫,在相同實驗環(huán)境下,對文檔上傳下載效率進行測試。上傳20個共130M的文檔文件, Oracle耗時330秒,HBase耗時19秒;下載同樣大小文檔,Oracle耗時42秒,HBase耗時14秒。通過對比得知,使用HBase存儲非結(jié)構(gòu)化數(shù)據(jù),文件吞吐效率明顯高于傳統(tǒng)數(shù)據(jù)庫。
3 全文檢索引擎Lucene
Lucene是一套開源的全文搜索框架。非結(jié)構(gòu)化數(shù)據(jù)入庫前需要先對文檔進行分詞處理,之后Lucene通過全文掃描,將解析出來的信息寫入索引庫,主要包括:文件名稱、全文本內(nèi)容、文檔時間、文檔大小、文檔頁數(shù)等。當用戶查詢時,Lucene根據(jù)建立的索引內(nèi)容進行查找,并將索引庫的匹配內(nèi)容返回,類似于字典查字的使用過程。
4 體系架構(gòu)搭建
以HBase存儲為基礎(chǔ),結(jié)合Lucene全文檢索引擎設計基于Hadoop的非結(jié)構(gòu)化數(shù)據(jù)管理系統(tǒng)。同時為保證與企業(yè)現(xiàn)有的管理系統(tǒng)集成,采用三層架構(gòu),通過訪問接口和功能模塊均能訪問底層數(shù)據(jù)。架構(gòu)圖如下圖1所示。
存儲層使用Oracle存儲結(jié)構(gòu)化數(shù)據(jù),Hbase存儲非結(jié)構(gòu)化數(shù)據(jù),Lucene存儲非結(jié)構(gòu)化數(shù)據(jù)索引。HBase的行操作遵從事務處理模式,確保庫中數(shù)據(jù)的完整性。同時提供雙機熱備解決方案,當服務器宕機時,其服務和數(shù)據(jù)可以迅速、完整、無縫的使用備份服務器運行。
接口層定義了標準數(shù)據(jù)處理接口,方便各模塊調(diào)用,并能為不同系統(tǒng)提供文件數(shù)據(jù)處理、目錄管理、組合查詢、訪問控制、站內(nèi)消息等可復用功能。
按照統(tǒng)一開發(fā)標準,設計可擴展、可復用的模塊資源中心,提供包括文件上傳、下載、預覽、刪除等14個功能模塊,并且各模塊間松耦合,方便不用系統(tǒng)服務間調(diào)用。
5 結(jié)語
隨著油田信息化工作的不斷深入,企業(yè)對不同專業(yè)的綜合應用要求也在不斷提高。本文在對比分析傳統(tǒng)數(shù)據(jù)庫與Hadoop分布式存儲系統(tǒng)的優(yōu)劣后,提出基于HBase和Lucene的完整數(shù)據(jù)管理體系,實現(xiàn)文件儲存管理、全庫智能檢索等核心功能。endprint