褚少鶴 周潔 王敬平
摘? 要: 在交通數(shù)據(jù)量持續(xù)增長的影響下,傳統(tǒng)的交通數(shù)據(jù)處理方法已經(jīng)無法滿足其需求,在云計算技術(shù)日漸成熟的影響下,基于交通大數(shù)據(jù)基礎(chǔ)上,將其與Hadoop結(jié)合起來,通過對其非關(guān)系型數(shù)據(jù)庫HBase進行合理運用,即可較好的實現(xiàn)對交通數(shù)據(jù)的存儲和查詢處理。
關(guān)鍵詞: 交通大數(shù)據(jù);存儲查詢平臺;HBase
【Abstract】: Under the influence of the continuous growth of traffic data volume, the traditional traffic data processing methods can not meet its needs. Under the influence of cloud computing technology maturing day by day, based on traffic big data, it is combined with Hadoop, and through the rational use of its non-relational database HBase, it can better realize the storage and query processing of traffic data.
【Key words】: Traffic data; Storage and query platform; HBases
0? 引言
由于城市化建設(shè)速度的加快,人們?yōu)榱四軌蚋臃奖闳粘3鲂?,越來越多的家庭紛紛購入了各種代步的機動車,導致城市的機動車數(shù)量呈現(xiàn)為爆發(fā)式增長,給交通系統(tǒng)的管理帶來了較大的阻礙[1]。由于交通工具數(shù)量的增多,交通要道的設(shè)施設(shè)備也相應增加,這導致交通數(shù)據(jù)迅速增長,傳統(tǒng)的方法已經(jīng)很難實現(xiàn)對數(shù)據(jù)的有效處理和存儲,為此,基于“交通大數(shù)據(jù)”的背景下,如何才能夠更好的實現(xiàn)對數(shù)據(jù)的存儲和快速查詢成為了探討的熱點[2]。本文通過運用具有較高擴展性的HBase來進行交通大數(shù)據(jù)存儲查詢平臺的構(gòu)建,旨在更好的幫助交通部門管理水平 和質(zhì)量的提升。
1? 整體架構(gòu)設(shè)計
根據(jù)交通大數(shù)據(jù)所體現(xiàn)出的相關(guān)特點,本研究設(shè)計和實現(xiàn)了一套面向交通數(shù)據(jù)存儲以及查詢的優(yōu)化系統(tǒng),其主要通過存儲層、處理層以及應用層組成,具體的架構(gòu)見圖1。
1.1? 應用層
應用層主要用于對交通擁堵、流量、異常等情況進行分析、處理,并借助微服務等各種方式及時推送給用戶[3]。
1.2? 處理層
該層主要針對數(shù)據(jù)實施深度分析、挖掘以及研究,明確其存在的規(guī)律性,為應用層提供數(shù)據(jù)支持。該層最主要的作用是根據(jù)應用發(fā)出的請求進行分析
與解析,并將其傳輸?shù)较鄳挠嬎銏?zhí)行器上實現(xiàn)各種有效計算,并完成存儲層的訪問[4]。
1.3? 存儲層
在本研究所設(shè)計的數(shù)據(jù)處理系統(tǒng)中,其核心層次在于存儲層,該層主要應用于對相關(guān)數(shù)據(jù)進行分布式存儲,從而促使交通數(shù)據(jù)能夠更好的實現(xiàn)多源異構(gòu)的處理,確保數(shù)據(jù)得到更好的保存。在該層中,主要以Hadoop分布式文件的方式進行持久性的存儲,使得Hadoop批處理計算以及非關(guān)系型數(shù)據(jù)庫(HBase)能夠?qū)崿F(xiàn)數(shù)據(jù)共享[5]。
2? 基于HBase的存儲層設(shè)計與實現(xiàn)
2.1? HBase行鍵(RowKey)設(shè)計
在HBase中,數(shù)據(jù)在實施讀取或者寫入操作期間,主要通過信息標識行鍵(RowKey)篩選來實現(xiàn)對數(shù)據(jù)的快速定位處理,為此,必須盡量將所需要查詢的信息或者維度及時存儲到相應的行鍵中,以此實現(xiàn)對數(shù)據(jù)篩選效率的提升[6]。
本系統(tǒng)行鍵(RowKey)設(shè)計方案為:<隨機數(shù)XX>-<交易日DAY>-<交易時HOUR>-<卡片編碼ID>。根據(jù)HBase中存儲數(shù)據(jù),行鍵(RowKey)的結(jié)果為<08>-<01>-<06>-<881300839>。該行鍵(RowKey)方案即便是遭遇HBase的數(shù)據(jù)規(guī)模相對較大時,索引所占據(jù)的內(nèi)存空間將迅速下降。與此同時,通過該方案能夠確保數(shù)據(jù)分布更為均衡,有效避免了因時間連續(xù)存儲而產(chǎn)生的熱點問題。結(jié)合該方案,分別在數(shù)據(jù)條數(shù)為5 m、34 m、138 m(百萬條)的數(shù)據(jù)規(guī)模下,針對某用戶進行查詢,結(jié)果見表1。
根據(jù)上述結(jié)果來看,本次設(shè)計方案具有更高的訪問效率,并且便隨著數(shù)據(jù)規(guī)模的持續(xù)增加,其優(yōu)勢更為顯著。
2.2? 基于Map Reduce的二級索引設(shè)計
在HBase中,可通過行鍵(RowKey)來實現(xiàn)排列存儲,這就使得行鍵成為了非常重要且唯一的索引方式??紤]到HBase無法實現(xiàn)原生二級索引,為此,本次設(shè)計通過Map Reduce添加二級索引,以便能夠更好的提升非主鍵查詢的效率。在進行非主鍵信息查詢的過程中,首先經(jīng)由行鍵、列族、列? ? 限定符等相關(guān)信息來進行掃描,才能夠獲得相應的信號[7]。
3? 基于HBase的存儲實現(xiàn)
借助Master/Slave模式來完成對HBase與Hadoop集群的構(gòu)建,主要通過1個NameNode(文件命名空間管理)、4個DataNode(數(shù)據(jù)塊檢索與? 存儲)共同組成,并通過千兆交換機來進行統(tǒng)一連接[8]。完成集群的搭建之后,以Map Reduce的方式將交通數(shù)據(jù)加載到相應的HBase表內(nèi),具體的加載步驟如下:
(1)首先將本地所掌握的交通數(shù)據(jù)加載(Put)到HDFS,經(jīng)由Map Reduce對其實施批量處理。
(2)主類(Main)重點是結(jié)合實際情況,進行全局變量配置處理,并基于此配置相應的加載接口。任務的配置參數(shù)主要包括了任務Mapper類、任務名稱、輸出表名、OutputFormat類等。
(3)Mapper類:Setup方法主要用于對全局所配置的環(huán)境變量實施提取;Map方法則主要對噪聲數(shù)據(jù)進行過濾處理,實現(xiàn)對關(guān)鍵字段的提取,并生成相應的Put對象,將其寫入到HBase。
4? 基于Phoenix的處理層設(shè)計與實現(xiàn)
因HBase平臺無法支持SQL語句,為此,在HBase中通常無法像Oracle、My SQ等關(guān)系型數(shù)據(jù)一樣,能夠?qū)QL語句進行直接的運用,以此來達到較好的數(shù)據(jù)查詢的目的[4]。為了能夠更好的達到本研究數(shù)據(jù)查詢的請求,本研究提出了運用Phoenix來解析SQL語句,再借助HBase實現(xiàn)查詢的有效? 簡化[9]。
針對原生HBase通常情況下并不存在SQL操作的不足,而通過Phoenix聯(lián)合HBase的運用即可實現(xiàn)對HBase的有效查詢。具體的查詢流程見圖2。
Phoenix在進行查詢的過程中,主要通過QueryPlan直接運用HBaseAPI,即可完成一系列HBaseScan的查詢?nèi)蝿?,而這種方法還可有效規(guī)避MapReduce框架,提升查詢速度。其具體的查詢操作步驟為:
(1)用戶經(jīng)由Phoenix生成一個SQL的查詢?nèi)蝿铡?/p>
(2)Calcite根據(jù)查詢?nèi)蝿战馕?、驗證客戶端的SQL的查詢請求。首先,Calcite對SQL請求的合法性進行判斷,若存在不合法的情況,及時進行返回處理,若合法即可完成解析。
(3)Calcite在對所接收到的請求做出了相應的解析操作之后,再經(jīng)由Phoenix生產(chǎn)給相應的查詢計劃。
(4)Phoenix查詢生成器主要根據(jù)Calcite邏輯查詢計劃生成相對應的物理查詢計劃,并對每一步的算法以及操作進行傳遞。
(5)Phoenix執(zhí)行器通過查詢操作,結(jié)合查詢計劃分發(fā)到相應的節(jié)點,即可完成查詢操作。
5? 基于JSP的交通應用層設(shè)計與實現(xiàn)
交通交通應用層其主要包括兩個部分,分別為消息隊列傳輸以及查詢網(wǎng)站設(shè)計。其中消息隊列傳輸主要通過Kafka消息隊列來完成,查詢網(wǎng)站則主要對JSP的方式進行運用,將其直接與Tomcat服務器直接搭接[10]。查詢界面主要通過JSP來實現(xiàn),具體的實施步驟如下:
(1)客戶端所采用的一個查詢請求,WEB容器將會對所對應的URL訪問請求進行對應。
(2)結(jié)合JSP文件所生成的Java文件來完成WEB服務器。
(3)Java文件所生成的Class文件,經(jīng)由classloader直接加載到進虛擬機中。
(4)WEB容器加載Class文件生成相對應的Servler實例。
(5)WEB容器對Servlet實例進行執(zhí)行,并及時將執(zhí)行的結(jié)果反饋到相應的客戶端。
6? 結(jié)論
總而言之,隨著交通數(shù)據(jù)的增加,提出一種有效的數(shù)據(jù)存儲處理平臺,對幫助交通實現(xiàn)服務質(zhì)量的提升具有重要意義。本文結(jié)合交通大數(shù)據(jù)的特點,從整體整體設(shè)計到各層的具體實現(xiàn)過程進行了詳細介紹。
參考文獻
寧群儀, 周超. 基于Kudu+Impala的交通大數(shù)據(jù)存儲和分析平臺[J]. 電腦編程技巧與維護, 2018, (11): 91-92, 111.
譚亮, 周靜. 基于SparkStreaming的實時交通數(shù)據(jù)處理平臺[J]. 計算機系統(tǒng)應用, 2018, 27(10): 133-139.
楊臣君, 張欣, 楊卓東. 基于Hadoop的交通數(shù)據(jù)分析系統(tǒng)[J]. 電子科技, 2017, 30(04): 156-158.
余超, 王堅, 凌衛(wèi)青. 基于Hadoop的海量交通數(shù)據(jù)混合存儲查詢系統(tǒng)設(shè)計與實現(xiàn)[J]. 信息技術(shù)與信息化, 2016, (Z1): 82-86.
張騰, 林貴敏, 邱立達, 等. 基于機器學習的交通數(shù)據(jù)分析與應用[J]. 現(xiàn)代信息科技, 2018, 2(12): 16-18.
賈曉菲. 軌道交通云平臺建設(shè)及應用分析[J]. 建材與裝飾, 2018(45): 291-292.
林森. 交通運輸行業(yè)運行指數(shù)在武漢市建設(shè)與應用[A]. 中國智能交通協(xié)會. 第十三屆中國智能交通年會大會論文集[C]. 中國智能交通協(xié)會: 中國智能交通協(xié)會, 2018: 9.
蔡延光, 廖澤宇, 蔡顥, 等. 基于頻率優(yōu)先的智能交通數(shù)據(jù)快速檢索算法[J]. 東莞理工學院學報, 2018, 25(05): 33-37.
劉尚魁. 基于智慧交通大數(shù)據(jù)平臺系統(tǒng)設(shè)計方案[J]. 電子技術(shù)與軟件工程, 2018(19): 198.
孫群. 大數(shù)據(jù)應用智能交通綜合治理[J]. 科技視界, 2018 (28): 171-172+170.