国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

一種基于HBase的交通旅行時間計算方法

2015-09-18 12:37喬彥克陸婷
軟件導刊 2015年8期
關鍵詞:智能交通

喬彥克++陸婷

摘要:旅行時間計算是智能交通系統(tǒng)研究的重要內(nèi)容,準確的旅行時間計算結(jié)果可以為交通管控部門提供決策支持,緩解交通擁堵情況。近年來,隨著監(jiān)測水平的提高,交通監(jiān)測數(shù)據(jù)呈現(xiàn)海量增長趨勢。傳統(tǒng)的關系型數(shù)據(jù)庫應對海量數(shù)據(jù)時存在高并發(fā)讀寫和擴展性不足等瓶頸。為解決智能交通因數(shù)據(jù)規(guī)模過大帶來的存儲和查詢問題,提出了一種基于HBase的交通旅行時間計算方法,設計了面向查詢優(yōu)化的行鍵策略,并在此基礎上提出了單時段及多時段旅行時間計算方法。實驗表明,該計算方法與傳統(tǒng)的基于Oracle的算法相比,時間效率提高2~3倍,并且有較高的讀寫性能及良好的可擴展性。

關鍵詞:旅行時間;海量數(shù)據(jù);HBase;智能交通

DOIDOI:10.11907/rjdk.151383

中圖分類號:TP301

文獻標識碼:A 文章編號文章編號:16727800(2015)008002204

基金項目基金項目:北京市自然科學基金重點項目(4131001);北京市屬高等學校創(chuàng)新團隊建設與教師職業(yè)發(fā)展規(guī)劃項目(IDHT20130502);北京市教育委員會科技計劃重點項目(KZ201310009009);北方工業(yè)大學科研啟動基金項目(2014)

作者簡介作者簡介:喬彥克(1989-),男,河南漯河人,北方工業(yè)大學大規(guī)模流數(shù)據(jù)集成與分析技術(shù)北京市重點實驗室碩士研究生,研究方向為分布式數(shù)據(jù)庫;陸婷(1990-),女,山東菏澤人,北方工業(yè)大學大規(guī)模流數(shù)據(jù)集成與分析技術(shù)北京市重點實驗室碩士研究生,研究方向為流數(shù)據(jù)的存儲優(yōu)化。

0 引言

交通旅行時間計算是智能交通領域的一個重要研究內(nèi)容,精準的旅行時間計算、評估可以為城市路網(wǎng)規(guī)劃、城市道路交通管理與控制提供重要依據(jù),為道路交通的研究、交通規(guī)劃設計、交通管理部門提供決策輔助支持,對城市交通擁堵問題起到一定的緩解作用。

隨著智能交通的迅速發(fā)展,大量監(jiān)測設備用于交通數(shù)據(jù)的采集。以某大型城市的車輛識別數(shù)據(jù)為例,道路上部署的車輛識別傳感器數(shù)量為5 000個,每個傳感器的高峰采樣頻率為1條/秒,則每秒將產(chǎn)生5 000條車輛識別數(shù)據(jù),每天的高峰折算率為0.33,一年車輛識別數(shù)據(jù)記錄數(shù)將超過500億條,數(shù)據(jù)存儲量為10TB級(來自實際項目)。面對如此規(guī)模的數(shù)據(jù),傳統(tǒng)的關系型數(shù)據(jù)庫無法直接有效地滿足海量時序數(shù)據(jù)的存儲和處理請求,存在擴展能力差、寫入延遲高等問題,并且傳統(tǒng)的旅行時間計算大多是基于車輛采樣數(shù)據(jù)或者浮動車數(shù)據(jù)等非全樣數(shù)據(jù),在反映路段旅行時間的分布上存在一些問題。作為新型的數(shù)據(jù)處理技術(shù),HBase[1]已經(jīng)在監(jiān)測數(shù)據(jù)的大規(guī)模存儲方面得到應用,文獻[2]就把HBase作為大規(guī)模無線傳感網(wǎng)的存儲媒介。

為解決上述問題,本文提出了一種基于HBase的交通旅行時間計算方法,針對海量交通監(jiān)測數(shù)據(jù)需求,以HBase這種NoSQL類型的數(shù)據(jù)庫作為監(jiān)測數(shù)據(jù)的基礎存儲系統(tǒng),并在此基礎上進行旅行時間的全樣數(shù)據(jù)計算;實驗表明,該計算方法更準確,且滿足可擴展性與高并發(fā)性。

1 相關工作

旅行時間是交通出行服務水平的重要衡量指標,近年來對旅行時間的研究日益增多。從檢測技術(shù)角度來看,通常有基于線圈的估計,基于浮動車的估計和基于車牌識別的估計等[3]。從數(shù)據(jù)來源看,目前的旅行時間估計所用數(shù)據(jù)主要有兩類:一是仿真數(shù)據(jù),二是檢測數(shù)據(jù)。在檢測數(shù)據(jù)中,部分使用直接測量樣本車輛的旅行時間來進行路段旅行時間的估計,如基于浮動車和車牌識別等,但因是非全樣數(shù)據(jù),因此在反映路段旅行時間的分布上存在一定問題。本文采用全樣的實測車牌識別數(shù)據(jù)對旅行時間進行計算。

目前數(shù)據(jù)的存取技術(shù)主要有以下幾種:(1)傳統(tǒng)的關系型數(shù)據(jù)庫。在數(shù)據(jù)存儲方面,只能采用結(jié)構(gòu)化的數(shù)據(jù)模式,不支持海量數(shù)據(jù)的存儲,嚴格遵循ACID原則使其不適合大量數(shù)據(jù)的定期更新,基于“極少發(fā)生節(jié)點失效”的假設而構(gòu)建的傳統(tǒng)關系型數(shù)據(jù)庫不適用于節(jié)點失效經(jīng)常發(fā)生的大規(guī)模集群應用場景;在數(shù)據(jù)查詢方面效率極其低下。

(2)HDFS/MapReduce。目前主流的大規(guī)模數(shù)據(jù)處理技術(shù)Hadoop/MapReduce是專為離線處理和大規(guī)模數(shù)據(jù)分析而設計的[4],缺乏實時隨機存取數(shù)據(jù)的能力。車牌識別數(shù)據(jù)是連續(xù)的時間流數(shù)據(jù),不適合Hadoop的存儲模式——存儲少量非常大的文件。文獻[5]雖然提出了一種MapReduce下計算旅行時間的方法,但其可用性受到制約,這些數(shù)據(jù)無法實時查詢,執(zhí)行一個任務計算的都是全部數(shù)據(jù),如果只需要計算某個時段的旅行時間,該方法往往無能為力。

(3)HBase[6]。它是構(gòu)建在Hadoop之上的一種NoSQL數(shù)據(jù)庫,具有高可靠、高可擴展的特點,支持隨機讀寫并且有出色的寫入性能和不錯的查詢性能。

綜上所述,HBase最符合存儲海量監(jiān)測數(shù)據(jù)的需求,故本文以HBase作為海量車牌識別數(shù)據(jù)的存儲引擎。

2 基于HBase的旅行時間計算

2.1 存儲系統(tǒng)架構(gòu)

圖1所示為識別數(shù)據(jù)存儲架構(gòu),數(shù)據(jù)寫入部分采用Loadrunner模擬實時數(shù)據(jù)的生成并寫入HBase數(shù)據(jù)庫,其中模擬數(shù)據(jù)來自實際監(jiān)測的數(shù)據(jù),旅行時間的計算則是通過計算HBase的結(jié)果得到。

圖1 車牌識別數(shù)據(jù)存儲架構(gòu)

對于不同日期采集的監(jiān)測數(shù)據(jù),有些系統(tǒng)會采用按天建表的策略,此策略的好處在于錄入速度快,當用戶請求一天范圍內(nèi)的數(shù)據(jù)時,只需要訪問當日的數(shù)據(jù)表。但是隨著時間的推移,越來越多的表難于管理,且當用戶請求多日的數(shù)據(jù)時會訪問多張數(shù)據(jù)表,影響訪問性能。本文采用將車牌識別數(shù)據(jù)遷移到HBase集群中,采用一張大表存儲的方法,車牌數(shù)據(jù)記錄條目達上億級別。

HBase是為面向億行級別的表設計的,可以很好地滿足海量數(shù)據(jù)擴展要求。但是HBase只能使用按字典序排列的行鍵來檢索記錄,因此行鍵的設計尤為重要。在介紹優(yōu)化查詢的行鍵設計策略之前,先介紹相關概念定義。

2.2 相關概念

概念1 車輛旅行時間(Travel time):車輛從進入到離開某一路段所花費的時間;

概念2 路段旅行時間:單位時間內(nèi)該路段經(jīng)過車輛的旅行時間平均值;

概念3 車牌識別數(shù)據(jù):監(jiān)測點識別到的車輛數(shù)據(jù),包括車牌號、車身顏色、記錄時間、監(jiān)測點ID等信息;

概念4 行鍵(Row key):用于唯一標識HBase表的每一行,沒有數(shù)據(jù)類型,視為字節(jié)數(shù)組[1]。

綜合考慮,本文的旅行時間指路段旅行時間,選取15分鐘和5分鐘兩個長度的時間段進行計算研究。

定義1:此公式用于計算一輛車在某路段的旅行時間,由離開該路段監(jiān)測點時間與進入該路段監(jiān)測點時間差值得出。

定義2:此公式用于計算某路段的旅行時間,為n輛車旅行時間的均值。

結(jié)合具體應用場景,本文旅行時間計算首先對原始車牌識別數(shù)據(jù)進行存儲,然后通過HBase讀取數(shù)據(jù)并進行計算。

2.3 查詢優(yōu)化的行鍵設計策略

HBase數(shù)據(jù)庫系統(tǒng)不同于傳統(tǒng)的關系數(shù)據(jù)庫,它沒有特定模式,建模工作需要數(shù)據(jù)庫設計人員來完成。為了提高數(shù)據(jù)的查詢性能,必須結(jié)合應用場景設計出能高效查詢的行鍵,Opentsdb[7]就采用了高效的復合行鍵設計模式,通過把不同監(jiān)測指標放入合適位置,組合成能夠高效檢索的行鍵。車牌識別數(shù)據(jù)由監(jiān)測時間、車牌號、監(jiān)測點ID、車輛顏色、車輛大小等不同的監(jiān)測信息組成,且主要的查詢條件為時間、監(jiān)測點和車牌號。

由于HBase不支持二級索引,故本文采用復合行鍵。

行鍵可選方案(部分)如下:

方案1:--

該方案中行鍵由時間監(jiān)測點ID和車牌號復合而成,車牌識別數(shù)據(jù)按時間順序存儲。其中------是3個不同行鍵,表示在時間t2、監(jiān)測點jcd2下car1、car2、car3三輛車的監(jiān)測記錄。

方案2:--

該方案中識別數(shù)據(jù)按監(jiān)測點排序,同一監(jiān)測點下的數(shù)據(jù)順序存儲。其中 ------是監(jiān)測點jcd2、時間t2條件下3個不同的行鍵,表示了在監(jiān)測點jcd2、時間t2有car1、car2、car3三輛車的監(jiān)測信息。

方案3:--

該方案中識別數(shù)據(jù)按車牌號順序存儲,行鍵以車牌號起始。其中 --、----是該方案下不同的行鍵組成,表示車car2經(jīng)過不同監(jiān)測點的不同時間。

以上是幾種復合行鍵方案,方案一以時間為主要索引字段,也就是在時間這個維度上對整個表進行排序,相同監(jiān)測點ID下包含不同的車牌號;方案二以監(jiān)測點為主要索引字段,相同監(jiān)測點的數(shù)據(jù)在HBase中按時間順序連續(xù)存放;方案三以車牌號為主要索引字段,相同車牌號的數(shù)據(jù)按監(jiān)測點順序連續(xù)存放。

對車牌識別數(shù)據(jù)這類交通監(jiān)測數(shù)據(jù)的查詢主要是基于時間斷面的查詢。時間是定位結(jié)果的最關鍵因素。因此,本文以方案一作為HBase識別數(shù)據(jù)表的行鍵設計方案。

實際應用中行鍵結(jié)構(gòu)如表1所示。

采用方案一的時間在前復合行鍵,使得基于時間條件的查詢效率非常高(避免了全表掃描),除了應用于旅行時間的計算外,還適合很多智能交通的應用場景,如交通流的計算等。

目前HBase跨列族的數(shù)據(jù)訪問效率較低[5],故本文的識別數(shù)據(jù)表采用一個列族來存放識別數(shù)據(jù)。

2.4 旅行時間并行計算

在描述具體算法前先介紹以下定義:

(1) HashMap() trackMap,存放每輛車的軌跡數(shù)據(jù),key為車牌號,value為該車經(jīng)過不同監(jiān)測點的時間和監(jiān)測點ID拼接成的字符串構(gòu)成的列表。

(2) HashMap() sectionMap,存放該時段內(nèi)不同車輛在該路段的旅行時間,key為路段,value為不同車輛經(jīng)過該路段的旅行時間構(gòu)成的列表。

(3) startTime,旅行時間計算的起始時間。

(4) stopTime,旅行時間計算的停止時間。

(5) result,給定時間范圍內(nèi)的HBase數(shù)據(jù)集。

(6) List travelTime,各路段在給定時段的旅行時間。

單個時段旅行時間計算算法(STP)描述如下:

INPUT:startTime,stopTime

OUTPUT:OUTPUT :travelTime

Begin

根據(jù)startTime,和stopTime,設定HBase掃描起止行鍵;

根據(jù)起止行鍵掃描HBase,得到查詢結(jié)果集result;

遍歷result,得到不同車輛的軌跡數(shù)據(jù)trackMap;

遍歷trackMap,比對路段信息,得到不同車輛經(jīng)過不同路段的旅行時間travelTimeMap;

遍歷travelTimeMap;

If 路段的旅行時間list非空,取總旅行時間的均值,并將結(jié)果存放在travelTime中

End

連續(xù)時段旅行時間計算算法(MTP):

對于多個連續(xù)時間段的旅行時間計算,本文采用多線程的方法,并行對各個時間段的旅行時間進行處理。

圖2是旅行時間計算過程中數(shù)據(jù)流動示意圖,由最初存儲在HBase中的車牌識別數(shù)據(jù),經(jīng)過多層處理,得到不同路段的旅行時間。

圖2 旅行時間計算數(shù)據(jù)流動

3 實驗分析

實驗平臺物理架構(gòu)見圖3。

各模塊設備配置:三臺雙核3.0 GHz CPU和4G內(nèi)存的Loadrunner服務器,使用Loadrunner模擬識別數(shù)據(jù)的實時寫入過程。4個節(jié)點的HBase集群,1個主節(jié)點,3個從節(jié)點。集群配置為四核2.4GHz CPU,8GB內(nèi)存,CentOS 6.4 64位操作系統(tǒng),Hadoop版本為1.2.1,HBase版本為0.94.14。

實驗方法:首先對單個時段旅行時間計算進行對比分析,選取5分鐘和15分鐘作為基本計算時段;然后對多時段的旅行時間采用MTP方法計算,以15分鐘作為基本的旅行時間計算單位。

綜合分析以上結(jié)果,可以發(fā)現(xiàn),HBase和Oracle的計算時間變化基本吻合,且計算時間優(yōu)于Oracle,而且二者進行并行計算的總時間也與數(shù)據(jù)量呈正相關關系。

通過以上實驗可以看出,通過HBase存儲車牌識別數(shù)據(jù)并在此基礎上計算旅行時間,其性能優(yōu)于傳統(tǒng)的Oracle數(shù)據(jù)庫,對于全樣數(shù)據(jù)下的旅行時間計算,計算時間和數(shù)據(jù)量呈正相關。相對Oracle,HBase具有很強的擴展性。

4 結(jié)語

本文試驗性地將交通監(jiān)測數(shù)據(jù)由傳統(tǒng)關系數(shù)據(jù)庫遷移到新型NoSQL數(shù)據(jù)庫HBase上,并在此基礎上進行了道路旅行時間的計算,對于處理這一類時序數(shù)據(jù)具有借鑒意義。由實驗可以看出,相對關系數(shù)據(jù)庫,HBase在計算旅行時間時性能提升2~3倍,而且HBase集群容易大規(guī)模擴展,可以作為構(gòu)建大規(guī)模數(shù)據(jù)存儲系統(tǒng)的基礎存儲架構(gòu)。

參考文獻:

[1] LARS GEORGE.HBase 權(quán)威指南[M].代志遠,劉佳,蔣杰,譯.北京:人民郵電出版社,2013.

[2] 陳慶奎,周利珍.基于HBASE的大規(guī)模無線傳感網(wǎng)絡數(shù)據(jù)存儲系統(tǒng)[J].計算機應用,2012,32(7):19201923,1977.

[3] 柴華駿,李瑞敏,郭敏.基于車牌識別數(shù)據(jù)的城市道路旅行時間分布規(guī)律及估計方法研究[J].交通運輸系統(tǒng)工程與信息,2012,12(6):4147.

猜你喜歡
智能交通
基于自適應虛擬線圈的多車道車流量檢測算法
大數(shù)據(jù)時代城市智能交通的數(shù)據(jù)技術(shù)
智能交通中的車輛檢測專利技術(shù)綜述
梅州市| 井陉县| 法库县| 沛县| 故城县| 灵山县| 北京市| 永泰县| 怀集县| 鲜城| 滨海县| 灌南县| 寿光市| 盐亭县| 姚安县| 平南县| 阜阳市| 怀安县| 千阳县| 措勤县| 达日县| 临夏县| 石门县| 东乌珠穆沁旗| 双鸭山市| 迁安市| 宁南县| 横峰县| 尚义县| 长垣县| 吉隆县| 锡林郭勒盟| 北碚区| 汾阳市| 建始县| 聂荣县| 达尔| 砀山县| 遂昌县| 凤山市| 凤山县|