艾麗蓉,劉云峰
(西北工業大學 計算機學院,陜西 西安 710129)
智慧城市(smart city)是把新一代信息技術充分運用到城市運行和管理的各行業,用以分析、整合城市運行核心系統的各項關鍵信息,從而對各行業的多種需求做出智能響應[1-3]。其實質是運用先進的信息技術,實現信息化、工業化與城鎮化的深度融合,對于提高城市生活質量有顯著作用[2]。
智慧城市在運行過程中產生的大量數據是智慧城市寶貴的資源,通過對這些數據的收集、匯總、分析,能夠體現出城市各部門、系統的運行情況,幫助管理者做出最符合城市發展的決策。大數據與智慧城市的關系可表述為:物聯網技術的運用推動大數據的發展,大數據的發展又成為智慧城市的發展的基石,智慧城市的衡量指標由大數據來體現。
為了應對智慧園區項目運行過程中所產生的海量數據的存儲要求,以及對數據分析效率的要求,充分利用智慧園區中多核主機、大容量存儲等硬件資源,特別引入Hadoop平臺中HDFS(分布式文件系統)、MapReduce(并行計算框架)和Hive(數據倉庫工具)。三個組件作為Hadoop的核心能夠使用戶輕松地架構和使用分布式計算平臺,并在該平臺的基礎上對大規模數據進行處理與分析。圖1顯示了Hadoop生態圈中的各主要技術。

圖1 Hadoop生態圈
1.1.1 HDFS分布式存儲
HDFS(Hadoop distributed file system)是Hadoop項目的核心子項目,是Hadoop生態系統中所有組件的基礎,具有容錯性高、可靠性高、可擴展性高、吞吐率高等特性[4]。HDFS在系統架構上采用master-slave結構,可以用廉價的硬件實現大規模數據的可靠性并可實現對數據的高吞吐量的訪問,非常適合于需要對大量數據進行存儲與處理的應用場景。
1.1.2 數據倉庫Hive
Hive是一個以Hadoop為基礎的,建立在Hadoop生態系統之上的數據倉庫,能夠對大量的結構化數據進行存儲與處理[5]。它將大量的數據存儲在HDFS中,采用類SQL語言HQL對數據進行操作與管理。Hive中的解釋器負責對HQL進行解析和轉換,將其解釋為map/reduce任務,并通過執行map/reduce任務返回對Hive中數據的查詢或處理的結果。
1.1.3 MapReduce分布式計算
作為Hadoop的核心組件之一,MapReduce是一種分布式計算框架[6]。該框架由編程模型和運行時環境兩部分組成,其中編程模型由谷歌于2004年發表的分布式計算框架MapReduce的論文提出,為用戶提供了非常易用的編程接口,用戶只需像編寫串行程序一樣實現幾個簡單的函數就可以實現分布式程序。通過運行時環境來完成如節點間通訊,數據切分和節點失效等復雜工作,用戶無需關注框架的運行細節,可以輕易地完成大規模數據的處理任務。
ETL過程的主要作用為從各個數據源(如業務系統數據庫、文本文件等)將數據抽取到中間層,之后根據制定的數據清洗規則對抽取到的數據進行清洗、轉換,最后加載到數據倉庫中,為進行數據分析打下基礎。
ETL過程是構建數據倉庫過程中非常關鍵的一部分,起到了承前啟后的作用[7-9]。智慧園區各個業務系統的數據均存放在自己的業務數據庫中,其中存放的數據是面向業務的,數據粒度較細,存儲的信息較為詳細,不適于直接對其中的數據進行分析并且各個業務數據庫是相對獨立的,直接進行分析需要面對多表聯結、數據格式不一致等相關問題,給分析工作增加難度。
為了解決上述問題,引入ETL與數據倉庫。通過ETL過程提取不同數據庫中的數據,按照數據分析需求制定數據清洗策略,完成對數據的清洗、轉換之后將數據加載到數據倉庫。ETL過程的工作直接關系數據倉庫中數據的質量,同時也關系到數據分析的質量與結果。
Google首席經濟學家Hal Varian教授指出:“數據正在變得無處不在、觸手可及;而數據創造的真正價值,在于我們能否提供進一步的稀缺的附加服務;這種增值服務就是數據分析[10]。”數據是信息化系統最寶貴的財富,在數據中蘊含著大量可為企業進行決策提供支持的關鍵信息。而蘊藏在數據中的信息只有采用相關的數據分析技術進行深入挖掘才能得到,僅僅憑借經驗與直覺并不能充分利用數據中的信息。Thomas和Cook在文獻[11]中對可視化的定義是:可視分析是一種通過交互式可視化界面,來輔助用戶對大規模復雜數據集進行分析推理的科學與技術。可視分析的運行過程可看作“數據→知識→數據”的循環過程,中間經過兩條主線:可視化技術和自動化分析模型。從數據中洞悉知識的過程主要依賴上述兩條主線的互動與協作[12-13]。
隨著信息化系統產生的數據量的增大,傳統的數據分析技術已經不能滿足對大規模數據集進行有效分析的需求。而如何對數據量大但價值密度較低的大數據進行有效分析是每一個現代化信息系統必須面對的問題。人類獲得的絕大部分信息來源于視覺,將現有的大數據平臺與數據可視化分析技術結合起來,借助于大數據平臺具有的數據處理能力,將數據以更直觀的形式(圖片等)展示出來,能夠幫助決策人員更好地理解數據中所蘊含的信息。
因此,大數據可視化是對大數據進行分析的最有效、最重要的環節,數據可視化技術在大數據分析中扮演著非常重要的角色。
如圖2所示,底層采用虛擬化技術,虛擬化實現了IT資源的邏輯抽象和統一表示,在大規模數據中心管理和解決方案交付方面發揮著巨大作用,是支撐云計算最重要的技術基石。ETL過程則采用ETL工具從智慧園區各個業務系統的業務數據庫抽取數據,經過清洗、轉換之后加載到大數據系統的Hive數據倉庫中,之后利用可視化數據分析工具對加載到Hive中的數據進行分析。

圖2 智慧園區數據分析系統架構
在硬件方面,針對數據分析系統對高可用性、可伸縮性、高吞吐量、高效性以及部分應用的低時延的需求,在網絡交換傳輸使用層使用Infiniband交換機;在數據傳輸協議層,將原有的Hadoop中的socket傳輸機制替換成RDMA(遠程直接內存存取),從而極大地縮短了傳輸時延,并充分發揮Infiniband交換機的數據傳輸能力,同時減少了CPU在節點間數據交換所耗費的資源。
根據智慧園區數據分析業務的功能需求,在原有大數據平臺的基礎上,充分滿足業務可伸縮性的要求,建設數據分析系統。系統主要分為三個功能模塊:數據采集模塊、數據存儲模塊、數據可視化分析模塊。數據清洗模塊的主要功能為數據抽取、數據轉換、數據加載。數據存儲模塊的主要功能為將數據采集模塊處理過的數據存儲到Hive數據倉庫中。數據可視化分析模塊的主要功能為數據源鏈接、數據整合、數據可視化展示。具體的模塊功能劃分和模塊關系如圖3所示。
為了實現和現有數據庫的無縫連接,建立不重不漏、互通互聯的數據分析系統,開發數據采集子系統,主要用于連接各種已有業務數據庫(如:Oracle、SQL Server和MySQL),并且可以對變化更新的數據進行捕捉然后提取數據。具體功能主要包括:
(1)數據導入:首次運行時,與現有的數據庫進行系統對接,將各數據庫中的數據提取后并進行清理與治理,最后存入大數據庫中;
(2)自動抓取:系統正常運行后,在不影響現有系統正常運行的基礎上,對各庫進行實時監控,并對新數據進行增量抓取,最后存入大數據庫中;
(3)數據錄入:對于部分動態數據庫中的數據庫,開放接口,方便用戶通過其他終端錄入數據;
(4)數據清洗:對獲得的數據,根據業務以及用戶的規定進行清洗、去重與治理。

圖3 數據分析系統功能模塊
數據采集系統的數據主要來自于正在運行的業務系統數據庫(如:惠民系統數據庫、城管系統數據庫、環衛系統數據庫等),數據采集系統與這些業務數據庫建立連接,從中抽取需要的數據,經過轉換、數據清洗等操作,最后加載到Hadoop大數據平臺的Hive數據倉庫中。數據的抽取、轉換、加載的過程稱之為ETL過程。
數據采集首先經過數據抽取,數據抽取的數據來源為業務系統數據庫、文件系統。抽取的數據按照制定的清洗規則進行清洗后到達數據轉換模塊。數據轉換模塊按照轉換規則對數據進行轉換后,加載到數據倉庫或者輸出到文件。
3.2.1 數據抽取
數據抽取是進行數據清洗、數據轉換的前提。數據抽取是一項艱難的工作,因為數據是多樣和復雜的。這一部分需要在調研階段做大量的工作,首先要搞清楚數據是從幾個業務系統中來,各個業務系統的數據庫服務器運行的是何種DBMS,是否存在手工數據,手工數據存量有多大,是否存在非結構化的數據等等。等收集完這些信息之后再進行數據抽取設計。抽取的方式分為全量抽取和增量抽取。
該系統是智慧城市的一個模塊,智慧城市還包括各個業務系統(城管系統、執法系統、環衛系統、惠民系統等)。在數據采集系統第一次運行時,需要將各個業務數據庫中的數據全部抽取出來,經過后續的數據清洗、數據轉換后加載到數據倉庫中。由于系統是持續性運行的,會不斷有新的數據進入到業務系統數據庫,此時再對數據進行全量抽取是不現實的,不僅會加重整個系統的負擔,更可能造成網絡的擁塞,使整個系統的延遲增大[10]。此時便需要采用另外一種數據抽取方式—增量抽取。該系統中采取的增量抽取方式為基于時間戳的抽取方式。
數據抽取流程如圖4所示。首先加載數據庫驅動程序,連接到要抽取的數據源。判斷是否連接成功,如果連接失敗,寫日志,記錄失敗的原因。如果連接成功,查詢表中記錄,進行數據的抽取工作,將抽取的數據放入數據緩存區,留待進行數據清洗轉換。此外,由于后續要進行基于時間戳的CDC(數據增量抽取工作),系統需要維護CDC表來保存此次數據抽取的時間,獲取當前系統時間,更新CDC表中load字段(上次抽取時間)。在進行增量抽取時,需要先讀取CDC表中的load字段,之后只抽取業務庫中更新時間大于load字段值的記錄。

圖4 全量抽取、增量抽取流程
3.2.2 數據清洗轉換
如圖5所示,數據清洗轉換是數據采集系統的核心。由于數據來源的多樣性,業務系統不能完全保證存儲在業務數據庫中數據的真實有效性與準確性。而數據倉庫是用來進行輔助決策的,要求存儲在數據倉庫中的數據都是正確且真實有效的,避免臟數據出現在數據倉庫中。
數據清洗轉換主要包括數據去重、不一致數據轉換、數據粒度轉換等過程。數據清洗轉換是一個長期、反復的過程,不是短時間內能夠完成的,是一項持續性的工作[11]。
3.2.3 數據加載(加載事實表)
事實表是用于分析的詳細業務數據的集合。它的數據量大,會消耗大量的存儲。圖6展示了數據加載流程。由于數據抽取分為全量抽取和增量抽取,在加載事實表時也分為增量加載與全量加載。但其中對于數據的處理方式是相同的。此外,在進行數據加載時,必須先查詢維度表中是否存在相對應的代理鍵,如果不存在,先進行維度表的更新,之后進行事實表的加載。

圖5 數據清洗轉換流程

圖6 數據加載流程
數據分析系統的功能流程如圖7所示。

圖7 數據可視化系統業務流程
數據可視化分析系統具有以下功能:
(1)數據源連接:數據是進行數據分析的基礎。第三節介紹了數據采集系統,其將數據從業務數據庫中經過數據清洗轉換之后加載到大數據系統中的Hive數據倉庫中,為數據分析提供了數據源。因此,數據可視化分析系統應當具有連接到Hive并從中提取數據的功能。
(2)數據整合、維護:用來進行分析的數據可能來自于同一張表,也可能來自于多張表或者不同的服務器。因此數據可視化分析系統應當具有數據整合功能,用以實現同一數據源的多表聯結、多個數據源的數據融合。同時由于分析時對數據有不同的需求、數據源中數據會發生變化,因此應當對數據進行篩選,限定數據的分析范圍并且可以刷新數據源,保持數據更新。
(3)數據可視化分析:是數據可視化分析系統的核心功能。可以將分析結果以條形圖、直方圖、餅圖、折線圖等形式展示。并且具有統計分析、基于時間序列預測等功能。
(4)分析結果導出、發布:數據可視化分析系統可以將分析結果導出到文件,如Excel、PDF或圖片。并將成果發布到服務器上,通過瀏覽器或者移動終端進行交互式訪問。
現階段城市的發展遇到了各種各樣的挑戰,如健康與環境、交通、水資源、能源利用、城市管理等問題,已經不能通過傳統意義上的城市規劃設計予以解決。通過運用新一代信息技術來管理城市的運行,將城市中不同的部門結合起來,共享不同部門間的信息。但是新一代信息技術的引入勢必帶來數據量的劇增,為信息系統的數據服務器帶來巨大的壓力,與此同時如何對海量數據進行有效的分析,為智慧城市決策人員的決策提供依據也是智慧城市在發展過程中需要解決的問題。為了解決海量數據的分析問題,對數據進行有效的分析,并保證數據分析的效率,文中在智慧園區信息系統的開發過程中引入Hadoop大數據平臺、Hive數據倉庫等大數據技術,為海量數據的存儲、分析提供支持。通過充分了解智慧園區數據分析系統的功能需求,并考慮到系統的穩定、易用等因素,決定采用Kettle+Hive+Tableau的方式來實現對智慧園區數據的分析。經過充分的技術驗證與測試,證明了該方案能夠解決智慧園區對數據分析的業務要求。
[1] 甄 峰,秦 蕭.大數據在智慧城市研究與規劃中的應用[J].國際城市規劃,2014(6):44-50.
[2] 陳紅松,韓 至,鄧淑寧.智慧城市中大數據安全分析與研究[J].信息網絡安全,2015(7):1-6.
[3] 李光亞,張敬誼,童 慶.大數據在智慧城市中的應用[J].微型電腦應用,2014,30(12):1-4.
[4] SHVACHKO K,KUANG H,RADIA S,et al.The Hadoop distributed file system[C]//26th symposium on mass storage systems and technologies.[s.l.]:IEEE,2010.
[5] THUSOO A,SARMA J S,JAIN N,et al.Hive:a warehousing solution over a map-reduce framework[J].Proceedings of the VLDB Endowment,2009,2(2):1626-1629.
[6] DEAN J,GHEMAWAT S.MapReduce[J].Communications of the ACM,2008,51(1):107.
[7] 宋旭東,劉曉冰.數據倉庫ETL任務調度模型研究[J].控制與決策,2011,26(2):271-275.
[8] 張 寧,賈自艷,史忠植.數據倉庫中ETL技術的研究[J].計算機工程與應用,2002,38(24):213-216.
[9] 徐俊剛,裴 瑩.數據ETL研究綜述[J].計算機科學,2011,38(4):15-20.
[10] 任 磊,杜 一,馬 帥,等.大數據可視分析綜述[J].軟件學報,2014,25(9):1909-1936.
[11] THOMAS J J,COOK K A.Illuminating the path:the research and development agenda for visual analytics[M].[s.l.]:National Visualization and Analytics Ctr,2005.
[12] 陳 聰,張國惠,馬曉磊,等.利用大數據挖掘和知識發現技術輔助智慧城市發展[J].大數據,2016(3):39-48.
[13] 官思發,孟 璽,李宗潔,等.大數據分析研究現狀、問題與對策[J].情報雜志,2015,34(5):98-104.