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