許大宏
摘 ?;要: 為了提升車牌識別系統(tǒng)中海量識別數(shù)據(jù)與涉案車輛、交通違法等信息的實時分析、計算與檢索性能,在對傳統(tǒng)技術(shù)分析的基礎(chǔ)上,針對現(xiàn)有系統(tǒng)中無法實現(xiàn)大數(shù)據(jù)分析與檢索的問題,提出了利用Elasticsearch大數(shù)據(jù)實時檢索技術(shù)構(gòu)建交通大數(shù)據(jù)處理平臺,在此架構(gòu)上對交通識別數(shù)據(jù)進行實際測試。實驗結(jié)果表明,所用技術(shù)能夠有效解決目前的交通大數(shù)據(jù)檢索和分析等關(guān)鍵問題,各項指標(biāo)都滿足了用戶需求。
關(guān)鍵詞: 大數(shù)據(jù); Elasticsearch; 車牌識別; 檢索
中圖分類號:TP3 ?; ?; ?; ?; ?;文獻標(biāo)志碼:A ?; ?; 文章編號:1006-8228(2014)12-12-03
Application research on Elasticsearch in license plate recognition system
Xu Dahong
(Zhenjiang Branch, Jiangsu Union Technical Institute, Zhenjiang, Jiangsu 212016, China)
Abstract: In order to enhance the functions including massive data identification, the real time analysis on the information of the involved vehicle, traffic violations, computing and retrieval performance of license plate recognition system, based on the traditional technical analysis, since the existing systems can't analyze and retrieve for big data, a large real-time data retrieval using Elasticsearch technology is proposed. The traffic identification data is tested on this platform. The experimental results show that the technology can effectively address key issues such as the current traffic large data retrieval and analysis. The indicators all meet the need of users.
Key words: big data; Elasticsearch; license plate recognition; retrieval
0 引言
大數(shù)據(jù)開啟了一次重大的時代轉(zhuǎn)型[1],面對海量的車牌識別數(shù)據(jù),如何高效分析與處理,提取出用戶需要的信息是一個巨大的挑戰(zhàn)。又如車流量統(tǒng)計分析、車輛軌跡分析、方向分析、智能跟蹤、涉案車輛和交通違法車輛的實時計算與報警、案件線索信息檢索等常規(guī)業(yè)務(wù)均需要對大數(shù)據(jù)的海量檢索。
HBase[2-4]是一個分布式的、面向列的、可靠的和可伸縮的存儲系統(tǒng),但在數(shù)據(jù)同步、監(jiān)控和查詢復(fù)雜度等方面無法滿足以上應(yīng)用場景;Hive[2,5]是基于Hadoop[2]的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供完整的SQL查詢功能,可以將SQL語句轉(zhuǎn)換為MapReduce任務(wù)進行運行,但無法滿足實時性的要求。傳統(tǒng)關(guān)系型數(shù)據(jù)庫在寫入速度、大數(shù)據(jù)查詢方面無法滿足需求,因此,本文采用基于Lucene[6]的Elasticsearch[7-9]搜索引擎作為海量數(shù)據(jù)的分析工具。
Elasticsearch是一個基于Lucene構(gòu)建的開源,分布式,RESTful架構(gòu)的搜索引擎,具有穩(wěn)定、可靠、快速、安裝簡單等特點;支持多客戶端調(diào)用、結(jié)構(gòu)化與非結(jié)構(gòu)化數(shù)據(jù)源,可實現(xiàn)PB級數(shù)據(jù)量實時檢索,復(fù)雜查詢模式和多維統(tǒng)計等。
1 Elasticsearch設(shè)計架構(gòu)
Elasticsearch部署結(jié)構(gòu)圖如圖1所示,底層支持本地文件系統(tǒng)或者Hadoop文件系統(tǒng)等文件系統(tǒng),通過Elasticsearch提供的API(Application Programming Interface,應(yīng)用程序編程接口),可以獲取集群的狀態(tài)信息,節(jié)點負載信息、建立客戶端與集群交互,實現(xiàn)索引的CRUD(Create、Retrieve、Update、Delete)操作。
圖1 ?;Elasticsearch 部署結(jié)構(gòu)圖
分布式索引與快速檢索作為Elasticsearch獨有優(yōu)勢,在實現(xiàn)算法上具有它的獨特之處,在此僅對Elasticsearch的索引算法作出如下分析。
step1:創(chuàng)建索引內(nèi)容相關(guān)的mapping信息(類似于關(guān)系型數(shù)據(jù)庫的表結(jié)構(gòu))。
step2:創(chuàng)建與集群交互的客戶端,構(gòu)建JSON(JavaScript Object Notation)串。
step3:指定索引文檔要索引的目標(biāo)索引庫(index),索引類型(type)和文檔ID,如果沒有指定文檔ID,Elasticsearch會通過UUID工具自動生成一個22位字符的UUID作為文檔ID。索引庫、索引類型和id組合作為一個文檔的索引庫中的惟一性標(biāo)識。
step4:通過tcp協(xié)議(rest的話就是通過http協(xié)議)發(fā)送請求到Elasticsearch集群任意節(jié)點,接收請求的節(jié)點把請求轉(zhuǎn)接到主節(jié)點。
step5:主節(jié)點接收到請求后,開始進行分片操作,先讀取集群狀態(tài),把目標(biāo)索引及其分片信息提取出來,根據(jù)索引數(shù)據(jù)的id、類型以及索引分片信息進行哈希取模,確定把該條數(shù)據(jù)分配到哪個分片,分片公式如下:
shard=hash(routing)%number_of_primary_shards
shard為索引要存儲到的分片,number_of_primary_shards為集群設(shè)置的索引分片數(shù),routing為文檔id。shard函數(shù)最后產(chǎn)生一個0至 number_of_primary_shards-1之間的數(shù)。
step6:找到索引分片的主分片,先把索引請求提交到主分片處理,判斷索引操作的類型,索引操作有兩種。一種是INDEX,當(dāng)要索引的文檔id已經(jīng)存在時,不會覆蓋原來的文檔,只是更新原來文檔;另一種是CREATE,當(dāng)索引文檔id存在時,會拋出該文檔已存在的異常信息。
通過(InternalIndexShard)查找與請求索引數(shù)據(jù)類型(type)相符的mapping。對要索引的JSON字符串進行解析,根據(jù)mapping轉(zhuǎn)換為對應(yīng)的解析結(jié)果。
step7:最后調(diào)用RobinEngine中的相關(guān)方法(添加或修改)對底層lucene進行索引操作,這里是寫入到lucene的內(nèi)存索引中(RobinEngine.innerIndex)。
step8:主分片索引請求完就把請求發(fā)給副本進行索引操作,根據(jù)集群設(shè)置的action.write_consistency參數(shù)值,默認(rèn)是使用quorum,即quorum值必須大于(副本數(shù)/2+1),如副本數(shù)為2,2/2+1=2也就是說要要至少插入到兩份索引中,索引操作才算操作完成。操作完成后把成功信息返回給客戶端。
2 測試實例
車牌識別系統(tǒng)常用功能包括:過車軌跡信息與圖片檢索、多點碰撞分析、車輛伴隨分析、盜搶車輛分析、車輛頻繁出現(xiàn)點分析、布控車輛實時跟蹤等。下面的測試實例將以過車信息檢索對Elasticsearch進行壓力、性能、穩(wěn)定性等常規(guī)測試。
2.1 測試環(huán)境
作者使用10臺HP ProLiant BL460c G7 刀片服務(wù)器和最新版本的軟件發(fā)行版本進行集群測試,測試軟硬件配置如表1所示。
表1 ?;測試機器軟硬件配置信息表
2.2 索引與檢索測試
采用2013年至2014年7月的某市車牌識別數(shù)據(jù)共計47億條作測試數(shù)據(jù),索引字段主要有車牌號、車牌顏色、過車地點ID、車道ID、通過時間、圖片ID。在識別數(shù)據(jù)導(dǎo)入創(chuàng)建索引過程中,對索引速度的記錄顯示:平均速度能在每秒8千至1萬之間(需求最大值為400條/秒);1億條索引數(shù)據(jù)大約占用100G的存儲空間(所有數(shù)據(jù)共計4700G);采用Jmeter-2.5做壓力測試,測試過程中CPU使用率平均4%;內(nèi)存占用率在60-80%之間;I/O由于采用光纖存儲,基本上沒有等待時間。由用戶給定測試用例,100為用戶最大并發(fā)數(shù),對用例分別測試1-100之間幾個并發(fā)數(shù),測試結(jié)果見表2。測試過程中的系統(tǒng)和JVM資源消耗情況如圖2和圖3所示。測試結(jié)果表明,索引和搜索速度均超過用戶設(shè)定的最大值,在未來幾年內(nèi)基本上不會存在使用性能上的問題。
表2 ?;用例測試響應(yīng)時間表(單位:s)
2.3 穩(wěn)定性測試
Elasticsearch是去中心化的,集群中的任何節(jié)點都有可能成為主節(jié)點,節(jié)點之間通過zen Discovery來發(fā)現(xiàn)其他節(jié)點(相當(dāng)于Hadoop中的zookeeper),當(dāng)主節(jié)點宕機時,其他節(jié)點自動選舉主節(jié)點并加入,這個過程是自動完成且是實時的;當(dāng)其他節(jié)點宕機時,會自動恢復(fù)該節(jié)點上的分片數(shù)據(jù)(其他節(jié)點備份)進行重新平衡操作。在本文中,分別對主節(jié)點和從節(jié)點分別逐個關(guān)閉,直至只存在一個節(jié)點時集群還能正常運行,只是性能會下降。當(dāng)重啟節(jié)點,或者集群滿足不了需求時,需要添加新的節(jié)點,只要啟動節(jié)點,節(jié)點就會立即加入集群中,集群會對所有的分片數(shù)據(jù)再次平衡(平均分配數(shù)據(jù)到每個節(jié)點上)。經(jīng)過測試,集群的穩(wěn)定性和擴展性均能滿足用戶需求。
3 結(jié)束語
本文在對流行的分布式存儲與檢索框架和傳統(tǒng)關(guān)系型數(shù)據(jù)庫進行分析測試的基礎(chǔ)上,提出了利用基于lucene內(nèi)核的分布式搜索引擎Elasticsearch作為車牌識別系統(tǒng)的分布式存儲與檢索服務(wù)。通過對該框架的穩(wěn)定性、擴展性、實用性和統(tǒng)計與檢索性能的測試,結(jié)果顯示,在大數(shù)據(jù)量的情況下該識別系統(tǒng)能滿足用戶的實時性要求,表明技術(shù)上是可行的。Elasticsearch同時還提供多種方式來對集群進行監(jiān)控與操作。希望本文可以對類似需求的用戶提供有效的借鑒與參考,真正實現(xiàn)對大數(shù)量的實時檢索與訪問。
參考文獻:
[1] (英)維克托·邁爾-舍恩伯格,(英)肯尼思·庫克耶.大數(shù)據(jù)時代[M].浙
江人民出版社,2013.
[2] White T.Hadoop權(quán)威指南(中文版)[M].清華大學(xué)出版社,2010.
[3] 卓海藝.基于HBase的海量數(shù)據(jù)實時查詢系統(tǒng)設(shè)計與實現(xiàn)[D].北京
郵電大學(xué),2013.
[4] Himanshu Vashishtha, Eleni Stroulia. Enhancing Query Support in
HBase via an Extended Coprocessors Framework[J]. Service Wave''11 Proceedings of the European conference on Towards a service-based internet,2011.
[5] 趙龍,江榮安.基于Hive的海量搜索日志分析系統(tǒng)研究[J].計算機應(yīng)
用研究,2013.11:3343-3345
[6] (美)高斯帕那,(美)哈特赫.Lucene IN ACTION中文版[M]. 電子工業(yè)
出版社,2007.
[7] http://www.Elasticsearch.org/.
[8] Clinton Gormley,Zachary Tong. Elasticsearch:The Definitive Guide[M].
O'Reilly Media,2014.
[9] 白俊,郭賀彬.基于Elasticsearch的大日志實時搜索的軟件集成方案
研究[J].吉林師范大學(xué)學(xué)報(自然科學(xué)版),2014.1:85-87