APP下载

Elasticsearch在车牌识别系统中的应用研究

2014-04-29许大宏

计算机时代 2014年12期
关键词:分片车牌文档

许大宏

摘  ;要: 为了提升车牌识别系统中海量识别数据与涉案车辆、交通违法等信息的实时分析、计算与检索性能,在对传统技术分析的基础上,针对现有系统中无法实现大数据分析与检索的问题,提出了利用Elasticsearch大数据实时检索技术构建交通大数据处理平台,在此架构上对交通识别数据进行实际测试。实验结果表明,所用技术能够有效解决目前的交通大数据检索和分析等关键问题,各项指标都满足了用户需求。

关键词: 大数据; Elasticsearch; 车牌识别; 检索

中图分类号:TP3  ;  ;  ;  ;  ;文献标志码: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 引言

大数据开启了一次重大的时代转型[1],面对海量的车牌识别数据,如何高效分析与处理,提取出用户需要的信息是一个巨大的挑战。又如车流量统计分析、车辆轨迹分析、方向分析、智能跟踪、涉案车辆和交通违法车辆的实时计算与报警、案件线索信息检索等常规业务均需要对大数据的海量检索。

HBase[2-4]是一个分布式的、面向列的、可靠的和可伸缩的存储系统,但在数据同步、监控和查询复杂度等方面无法满足以上应用场景;Hive[2,5]是基于Hadoop[2]的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行,但无法满足实时性的要求。传统关系型数据库在写入速度、大数据查询方面无法满足需求,因此,本文采用基于Lucene[6]的Elasticsearch[7-9]搜索引擎作为海量数据的分析工具。

Elasticsearch是一个基于Lucene构建的开源,分布式,RESTful架构的搜索引擎,具有稳定、可靠、快速、安装简单等特点;支持多客户端调用、结构化与非结构化数据源,可实现PB级数据量实时检索,复杂查询模式和多维统计等。

1 Elasticsearch设计架构

Elasticsearch部署结构图如图1所示,底层支持本地文件系统或者Hadoop文件系统等文件系统,通过Elasticsearch提供的API(Application Programming Interface,应用程序编程接口),可以获取集群的状态信息,节点负载信息、建立客户端与集群交互,实现索引的CRUD(Create、Retrieve、Update、Delete)操作。

图1  ;Elasticsearch 部署结构图

分布式索引与快速检索作为Elasticsearch独有优势,在实现算法上具有它的独特之处,在此仅对Elasticsearch的索引算法作出如下分析。

step1:创建索引内容相关的mapping信息(类似于关系型数据库的表结构)。

step2:创建与集群交互的客户端,构建JSON(JavaScript Object Notation)串。

step3:指定索引文档要索引的目标索引库(index),索引类型(type)和文档ID,如果没有指定文档ID,Elasticsearch会通过UUID工具自动生成一个22位字符的UUID作为文档ID。索引库、索引类型和id组合作为一个文档的索引库中的惟一性标识。

step4:通过tcp协议(rest的话就是通过http协议)发送请求到Elasticsearch集群任意节点,接收请求的节点把请求转接到主节点。

step5:主节点接收到请求后,开始进行分片操作,先读取集群状态,把目标索引及其分片信息提取出来,根据索引数据的id、类型以及索引分片信息进行哈希取模,确定把该条数据分配到哪个分片,分片公式如下:

shard=hash(routing)%number_of_primary_shards

shard为索引要存储到的分片,number_of_primary_shards为集群设置的索引分片数,routing为文档id。shard函数最后产生一个0至 number_of_primary_shards-1之间的数。

step6:找到索引分片的主分片,先把索引请求提交到主分片处理,判断索引操作的类型,索引操作有两种。一种是INDEX,当要索引的文档id已经存在时,不会覆盖原来的文档,只是更新原来文档;另一种是CREATE,当索引文档id存在时,会抛出该文档已存在的异常信息。

通过(InternalIndexShard)查找与请求索引数据类型(type)相符的mapping。对要索引的JSON字符串进行解析,根据mapping转换为对应的解析结果。

step7:最后调用RobinEngine中的相关方法(添加或修改)对底层lucene进行索引操作,这里是写入到lucene的内存索引中(RobinEngine.innerIndex)。

step8:主分片索引请求完就把请求发给副本进行索引操作,根据集群设置的action.write_consistency参数值,默认是使用quorum,即quorum值必须大于(副本数/2+1),如副本数为2,2/2+1=2也就是说要要至少插入到两份索引中,索引操作才算操作完成。操作完成后把成功信息返回给客户端。

2 测试实例

车牌识别系统常用功能包括:过车轨迹信息与图片检索、多点碰撞分析、车辆伴随分析、盗抢车辆分析、车辆频繁出现点分析、布控车辆实时跟踪等。下面的测试实例将以过车信息检索对Elasticsearch进行压力、性能、稳定性等常规测试。

2.1 测试环境

作者使用10台HP ProLiant BL460c G7 刀片服务器和最新版本的软件发行版本进行集群测试,测试软硬件配置如表1所示。

表1  ;测试机器软硬件配置信息表

2.2 索引与检索测试

采用2013年至2014年7月的某市车牌识别数据共计47亿条作测试数据,索引字段主要有车牌号、车牌颜色、过车地点ID、车道ID、通过时间、图片ID。在识别数据导入创建索引过程中,对索引速度的记录显示:平均速度能在每秒8千至1万之间(需求最大值为400条/秒);1亿条索引数据大约占用100G的存储空间(所有数据共计4700G);采用Jmeter-2.5做压力测试,测试过程中CPU使用率平均4%;内存占用率在60-80%之间;I/O由于采用光纤存储,基本上没有等待时间。由用户给定测试用例,100为用户最大并发数,对用例分别测试1-100之间几个并发数,测试结果见表2。测试过程中的系统和JVM资源消耗情况如图2和图3所示。测试结果表明,索引和搜索速度均超过用户设定的最大值,在未来几年内基本上不会存在使用性能上的问题。

表2  ;用例测试响应时间表(单位:s)

2.3 稳定性测试

Elasticsearch是去中心化的,集群中的任何节点都有可能成为主节点,节点之间通过zen Discovery来发现其他节点(相当于Hadoop中的zookeeper),当主节点宕机时,其他节点自动选举主节点并加入,这个过程是自动完成且是实时的;当其他节点宕机时,会自动恢复该节点上的分片数据(其他节点备份)进行重新平衡操作。在本文中,分别对主节点和从节点分别逐个关闭,直至只存在一个节点时集群还能正常运行,只是性能会下降。当重启节点,或者集群满足不了需求时,需要添加新的节点,只要启动节点,节点就会立即加入集群中,集群会对所有的分片数据再次平衡(平均分配数据到每个节点上)。经过测试,集群的稳定性和扩展性均能满足用户需求。

3 结束语

本文在对流行的分布式存储与检索框架和传统关系型数据库进行分析测试的基础上,提出了利用基于lucene内核的分布式搜索引擎Elasticsearch作为车牌识别系统的分布式存储与检索服务。通过对该框架的稳定性、扩展性、实用性和统计与检索性能的测试,结果显示,在大数据量的情况下该识别系统能满足用户的实时性要求,表明技术上是可行的。Elasticsearch同时还提供多种方式来对集群进行监控与操作。希望本文可以对类似需求的用户提供有效的借鉴与参考,真正实现对大数量的实时检索与访问。

参考文献:

[1] (英)维克托·迈尔-舍恩伯格,(英)肯尼思·库克耶.大数据时代[M].浙

江人民出版社,2013.

[2] White T.Hadoop权威指南(中文版)[M].清华大学出版社,2010.

[3] 卓海艺.基于HBase的海量数据实时查询系统设计与实现[D].北京

邮电大学,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的海量搜索日志分析系统研究[J].计算机应

用研究,2013.11:3343-3345

[6] (美)高斯帕那,(美)哈特赫.Lucene IN ACTION中文版[M]. 电子工业

出版社,2007.

[7] http://www.Elasticsearch.org/.

[8] Clinton Gormley,Zachary Tong. Elasticsearch:The Definitive Guide[M].

O'Reilly Media,2014.

[9] 白俊,郭贺彬.基于Elasticsearch的大日志实时搜索的软件集成方案

研究[J].吉林师范大学学报(自然科学版),2014.1:85-87

猜你喜欢

分片车牌文档
上下分片與詞的時空佈局
浅谈Matlab与Word文档的应用接口
有人一声不吭向你扔了个文档
分片光滑边值问题的再生核方法
CDN存量MP4视频播放优化方法
数字图像处理技术在车牌识别系统中的应用
基于模糊二分查找的帧分片算法设计与实现
第一张车牌
基于MATLAB 的车牌识别系统研究
基于RI码计算的Word复制文档鉴别