引言
隨著太原經濟快速發(fā)展,機動車保有量增長迅猛,道路交通擁堵、交通肇事現象越來越嚴重。為此,太原交警建設了大量卡口、電子警察、事件監(jiān)測等交通監(jiān)控設備,這些設備24h不間斷捕獲過車數據和圖像數據,產生了海量歷史記錄。在此情況下,如何利用先進的技術手段,對交通監(jiān)控設備采集的海量數據進行深度挖掘分析成為迫切需要解決的問題。
目前國內現有大數據分析系統處于結構化數據處理模式架構體系,無法對城市道路交通整體狀況、出行規(guī)律進行大粒度、長周期的數據分析,同時現有系統在對具有邏輯關聯的海量多源異構數據處理存儲效率方面存在不足,不能滿足持續(xù)增長的交管數據規(guī)模以及對數據深度挖掘、數據碰撞和應用的需求。面對海量信息洪流以及對數據深度挖掘迫切需求,采用大數據技術解決數據管理和應用問題已是迫在眉睫。
1關鍵性技術研究
1.1結構化與非結構化相結合數據的實時存儲、實時分析
卡口數據是典型的結構化和非結構化相結合的數據。其中過車記錄是結構化數據,過車圖片是非結構化數據。兩類數據不僅需要實時存儲,還需要進行實時分析。
根據KUDU+HBASsMoB存儲特性可以很好地解決這個問題。KUDU+HBASsMoB解決方案如圖1所示。
接收程序把數據(例如卡口過車記錄)寫到KUDU,Impala/Spark可以實時對數據進行查詢分析。過車圖片按HBASs的大對象存儲(MoB)格式進行存儲。該格式特別適合存儲單個數十千至數十兆的非結構化文檔,即使對于十億級別的MoB文檔數據表仍能做到毫秒級增刪改查操作,同時支持所有HBASs原生特性,與上層HBASs應用100%兼容。
1.2前后端多環(huán)節(jié)多網絡環(huán)境下如何保障數據不丟不重
以最復雜的核心業(yè)務數據,卡口數據的傳輸為例進行說明,卡口數據從卡口客戶端傳輸到大數據平臺中的KUDU和HBASs存儲需要經過4個環(huán)節(jié):
(1)從卡口客戶端傳輸過車記錄和過車圖片到卡口高效接入與轉發(fā)程序:
(2)卡口高效接入與轉發(fā)程序傳輸過車記錄和過車圖片到消息服務器kafka:
(3)消息服務器kafka傳輸過車記錄到分布式關系型存儲KUDU:
(4)消息服務器kafka傳輸過車圖片到分布式列式存儲HBASs。
由于網絡中斷、程序異常在上述1到4的任何一個環(huán)節(jié)都會存在數據丟失的可能。而卡口數據在業(yè)務上要求不能丟失和重復,因此該問題成為一個關鍵性技術問題。
通過引入多級緩存和各環(huán)節(jié)之間確認機制,保障數據不丟不重的解決方案如圖2所示。
(1)首先對每類數據的每個數據產生唯一的數據指紋作為冪等性確認的唯一標識。該標識符根據毫秒級時間戳加數據特征碼自動生成,在傳輸過程中一直保持不變,作為數據唯一性確認的標識。(2)傳輸中間環(huán)境基于內存處理,同時以文件系統做內容緩存,防止數據丟失。在卡口高效接入與轉發(fā)程序與kafka這兩個中間環(huán)境,數據內存留一份,同時文件系統數據緩存一份。緩存直到數據確認收到后才會刪除。(3)4個環(huán)節(jié)每個環(huán)節(jié)之間進行確認。1)從卡口客戶端到卡口高效接入與轉發(fā)程序之間做雙向確認,只有卡口高效接入與轉發(fā)程序確認收到數據后卡口客戶端才會刪除數據,否則會保留數據,繼續(xù)重發(fā)。2)卡口高效接入與轉發(fā)程序到消息服務器kafka之間做雙向確認,只有kafka確認收到數據后,卡口高效接入與轉發(fā)程序才會刪除數據否則會保留數據,繼續(xù)重發(fā)。3)消息服務器kafka傳輸過車記錄到分布式關系型存儲KUDU,傳輸過車圖片到分布式列式存儲HBASEkafka會與KUDU和HBASE之間做雙向確認,只有KUDU和HBASE確認都收到數據后kafka才會刪除數據否則會保留數據,繼續(xù)重發(fā)。
通過上述機制,可以保證整個數據傳輸過程數據不丟、不重。
2基于Hadoop的大數據中間件平臺架構設計
大數據平臺由分布式資源管理框架實時調度資源、管理計算分析集群,為各個租戶以及各個應用提供資源調度管理以及高效的分析挖掘能力。
2.1數據采集
主要完成數據的統一采集和處理。針對多樣化數據進行采集和清洗兼容各類數據源(結構化/半結構化/非結構化)、接口方式(FTP/數據庫/消息隊列)和采集頻率(批量/流式)的需求可對數據采集頻率、處理流程做配置化管理。
2.2數據存儲
數據存儲應當按照數據的顆粒細度以及數據分析應用的不同需要,將數據分為ODS層、輕度匯總、中度匯總層、高度匯總層。ODS和輕度匯總層放置于HDFS中需要檢索查詢的明細記錄存儲在HBASE中,經過HIVE處理后的匯總數據可通過Sqoop寫入外部數據庫或者通過Impala提供相應的實時查詢。2.3數據處理組件
數據處理提供不同層面的大數據并行處理能力充分利用x86框架廉價的計算和存儲能力實現分布式計算和存儲管控,并向上提供各類分析、查詢、處理能力。
2.4系統管理
實現整體體系的系統安全、系統任務、系統權限等管理功能,同時結合LDAP與Kerberos提供完備的權限管理控制。
3海量大數據分析研判平臺框架設計
海量大數據分析研判平臺框架設計如圖3所示。
3.1數據源
從對接系統中接入如下數據:(1)基礎數據。車輛監(jiān)管清單、卡口點位表、道路信息表、城區(qū)信息表和街道信息表。(2)業(yè)務數據??跀祿?、百度路況數據和l22事故數據。
3.2大數據硬件
支持大數據中間件和應用軟件運行的硬件環(huán)境,包括PC服務器、網絡設備和存儲。
3.3大數據中間件
在大數據硬件環(huán)境上部署Hadoop大數據中間件軟件為應用提供數據存儲和分析支撐。
3.4數據接入層
支持多協議、多路由適配,接入各類數據源,并發(fā)送到統一的消息服務器kafka中,為后續(xù)的數據存儲和分析應用提供數據。接入內容包括車輛監(jiān)管清單、卡口點位表、道路信息表、城區(qū)信息表、街道信息表、卡口數據、百度路況和122事故數據等。
3.5數據存儲層
實現數據的海量和高效存儲提供對外數據服務其中過車記錄存儲至KUDU,過車圖片存儲至HBASE,滿足高效寫入、檢索、讀取需求。
3.6數據分析層
實現數據的深度挖掘和圖像二次識別分析支撐,提供流式分析平臺,實現即時、實時和離線分析,并可以通過數據湖對所有異構數據源的統一訪問和處理。
3.7服務層
提供數據虛擬引擎,支持對異構數據庫(oracle/hbase/kudu/es/mysql/mongodb/hdfs等)的統一管理和數據接口提供。該引擎為服務層的數據服務和大數據交互式查詢提供統一數據查詢統計支持。其中數據服務包括卡口數據服務、過車圖片數據服務、貨車闖禁行數據服務、不系安全帶數據訪問服務、開車打手機數據訪問服務、黃標車違法數據訪問服務和單雙號限行數據訪問服務:大數據交互式查詢包括HDFS訪問、HIVE查詢和其他支持。
3.8應用展示層
實現業(yè)務應用和可視化展示,包括大數據流式計算分析結果展示(車輛、路況、流量、OD和違法)和綜合信息大屏展示。
3.9管理層
實現基礎管理功能支撐,包括系統管理、系統對接、監(jiān)控和配置。
3.10用戶終端
使用PC終端和展示大屏。
4結語
本文在太原市現有數據挖掘的基礎上,提出搭建Hadoop大數據中間件平臺,并在此基礎上對卡口、百度路況等海量數據進行了實時高效接入、分布式存儲、多維度挖掘分析和可視化直觀展示,滿足持續(xù)增長的交管數據規(guī)模以及對數據深度挖掘、數據碰撞和應用的需求最終實現資源集成、數據集成、業(yè)務集成、控制集成和展現集成。