賈旖旎 周新民 曹芳
摘? 要: 海量時空數(shù)據(jù)的高效存儲、讀寫、處理與分析是當(dāng)前地理信息科學(xué)領(lǐng)域的研究熱點。本文對目前主流大數(shù)據(jù)技術(shù)產(chǎn)品進行了選取和融合,開展了基于HDFS+Spark的時空大數(shù)據(jù)存儲、處理分析等方面的研究和探討,以智慧無錫時空信息云平臺為應(yīng)用對象,搭建了一套時空大數(shù)據(jù)存儲處理的集群平臺,并通過具體應(yīng)用實驗,得到了時空數(shù)據(jù)存儲、處理、挖掘的響應(yīng)時間及可視化展示結(jié)果,證實了HDFS+Spark集群計算平臺在解決時空大數(shù)據(jù)存儲、處理、挖掘方面的有效性。
關(guān)鍵詞: 時空大數(shù)據(jù);集群計算;存儲處理;數(shù)據(jù)挖掘
【Abstract】: Efficient storage, reading, writing, processing and analysis of massive spatio-temporal data is a hot research topic in geographic information science. This paper chooses and integrates the mainstream big data technology production, investigates and studies the spatio-temporal big data storage and processing analysis based on HDFS+Spark ,and builds the Cluster platform. And also its applied in the experiment and the results of response time and visual display of storage, processing and mining of the spatio-temporal data are obtained, which proves the effectiveness of HDFS+Spark cluster computing platform in solving spatio-temporal big data storage, processing and mining.
【Key words】: Spatio-temporal big data; Cluster computing; Storage processing; Data mining
0? 引言
隨著測繪地理信息技術(shù)的發(fā)展和智慧城市建設(shè)的不斷推進,時空大數(shù)據(jù)的種類愈多、覆蓋愈廣、更新頻率愈快,數(shù)據(jù)量急劇增加,從MB、GB級逐步達到TB、PB級,使得海量時空數(shù)據(jù)在存儲管理、數(shù)據(jù)檢索、處理分析等方面的難度不斷提升。同時,大量以分布式存儲和并行計算為核心的大數(shù)據(jù)技術(shù)平臺及產(chǎn)品隨之涌現(xiàn),如Hadoop、MongoDB、Spark,
這些平臺及產(chǎn)品有望解決當(dāng)前大數(shù)據(jù)在存儲和處理中存在的問題。本文圍繞如何應(yīng)用主流大數(shù)據(jù)技術(shù)及產(chǎn)品更好地為時空大數(shù)據(jù)服務(wù),結(jié)合智慧無錫時空大數(shù)據(jù)的應(yīng)用需求,搭建了一套時空大數(shù)據(jù)存儲處理的集群平臺,并以實驗驗證了該平臺在時空大數(shù)據(jù)的存儲、處理與挖掘中的性能與效率。
1? 時空大數(shù)據(jù)集群計算平臺選型
HDFS分布式文件系統(tǒng)是Hadoop核心技術(shù)之一,提供了開源的存儲框架,是一個實現(xiàn)數(shù)據(jù)分布式存儲的文件系統(tǒng)[1]。該系統(tǒng)通過高效的分布式算法集成多集群節(jié)點,對大數(shù)據(jù)量的數(shù)據(jù)進行分布式存儲和有效備份,當(dāng)其中一個節(jié)點宕機時,系統(tǒng)可以讀取其他有效節(jié)點的數(shù)據(jù),并且系統(tǒng)對每個節(jié)點的物理性能要求并不高。因此,HDFS具備了容錯性高、成本低、通用性好等特點。HDFS采用主/從架構(gòu),包括客戶端、主控節(jié)點(NameNode)[2]和數(shù)據(jù)節(jié)點(DataNode)[3]。其中,NameNode主要負責(zé)管理文件系統(tǒng)的命名空間、元數(shù)據(jù)信息及客戶端對文件的訪問;DataNode主要負責(zé)接收并處理客戶端的讀寫請求和NameNode的調(diào)度,存儲并檢索HDFS的數(shù)據(jù)塊,是文件存儲的實際位置,并通過周期性的心跳報文將所有數(shù)據(jù)塊信息發(fā)送給NameNode。HDFS的這種主/從設(shè)計結(jié)構(gòu)使得用戶數(shù)據(jù)不會流經(jīng)主控節(jié)點,從而提高了系統(tǒng)性能和效率[4]。
Hadoop的MapReduce和Spark是當(dāng)前最流行的大數(shù)據(jù)處理平臺。Hadoop MapReduce在處理分析數(shù)據(jù)時,首先從集群磁盤中讀取數(shù)據(jù)到內(nèi)存并執(zhí)行計算,再將計算結(jié)果從內(nèi)存寫到集群磁盤,作為下次計算的輸入數(shù)據(jù)。每次都要從磁盤讀取數(shù)據(jù)到內(nèi)存的計算過程,使其面臨I/O消耗過大的問題,因而無法滿足用戶對海量空間數(shù)據(jù)開展實時分析的效率要求。而Spark作為新興的集群計算框架,不僅提供了豐富的Scala、Java、和Python調(diào)用API接口,方便用戶操作,且其基于內(nèi)存迭代計算的處理方式,使其可從內(nèi)存中直接讀取計算數(shù)據(jù),從而避免了磁盤I/O的高消耗。通過擴展Spark對空間數(shù)據(jù)的分布式查詢處理操作,形成了GeoSpark、SpatialSpark等先進系統(tǒng),可實現(xiàn)對海量空間數(shù)據(jù)的快速處理和分析。
由于HDFS 的高容錯性、高可擴展性、高吞吐量等特點,為海量時空數(shù)據(jù)提供了可靠、安全的存儲,而Spark的內(nèi)存迭代計算比MapReduce更為高效[5],更適合進行交互式處理和運行復(fù)雜算法,且可以與HDFS組件進行完美融合,因此本文選擇使用HDFS+Spark的存儲計算框架來進行時空大數(shù)據(jù)的存儲與計算處理應(yīng)用。
2? 基于HDFS的時空大數(shù)據(jù)存儲模式
時空數(shù)據(jù)一般來說包括時間、空間和專題屬性三個維度的信息,有著多源、海量、更新快速的特點[6]。從數(shù)據(jù)格式上來說,時空數(shù)據(jù)通常以矢量數(shù)據(jù)或柵格數(shù)據(jù)的形式進行存儲管理。
通過實驗,得出單機環(huán)境與3個節(jié)點、6個節(jié)點的集群環(huán)境下不同數(shù)據(jù)量的時空數(shù)據(jù)存入時間對比表如下所示。
從實驗結(jié)果可以看出,當(dāng)時空數(shù)據(jù)集大小為500 M時,單機環(huán)境下數(shù)據(jù)存儲時間為8秒,耗時最少,相比之下存儲性能效率最高。這是因為數(shù)據(jù)量較少時,Hadoop集群中涉及到多個節(jié)點之間的數(shù)據(jù)交換,并且會自動進行數(shù)據(jù)備份,存在較為固定的數(shù)據(jù)傳輸時間和數(shù)據(jù)備份時間消耗。隨著數(shù)據(jù)量增加到1.8 G、10 G,集群環(huán)境下的存儲效率優(yōu)勢得到了明顯的體現(xiàn)。尤其當(dāng)時空數(shù)據(jù)增加到10 G時,單機環(huán)境下的耗時明顯增加,為500 M數(shù)據(jù)耗時的103倍。這是由于單機環(huán)境的硬件配置受限所導(dǎo)致的,而在集群環(huán)境下,隨著存儲量增大,而其固定的時間消耗占比逐漸減小至可忽略不計,這時才能體現(xiàn)出集群環(huán)境下時空大數(shù)據(jù)存儲的優(yōu)勢。
4.3.2? 數(shù)據(jù)處理性能實驗
本文將以無錫市區(qū)的地理范圍劃分為6497個500米×500米的格網(wǎng),對每個格網(wǎng)內(nèi)1天的出租車點位數(shù)量(約800萬條數(shù)據(jù))進行空間包含運算,以驗證單機環(huán)境下與不同節(jié)點集群環(huán)境下的空間處理效率。
通過實驗得出單機環(huán)境與3個節(jié)點、6個節(jié)點的集群環(huán)境下時空數(shù)據(jù)處理的時間對比表如下所示。
將無錫市6497個格網(wǎng)的1天的出租車點位數(shù)量空間統(tǒng)計的結(jié)果,在前端通過可視化界面進行展示,如圖3所示。
從實驗結(jié)果可以看出,由于單機環(huán)境中計算機處理器及內(nèi)存的限制,1000個格網(wǎng)和10000個點進行空間包含運算,時間穩(wěn)定在6分鐘左右,效率非常低下。當(dāng)數(shù)據(jù)量增加到一定程度后,單機處理能力超出界限,導(dǎo)致處理失敗,而集群模式處理的運算效率遠高于單機模式。因此處理海量數(shù)據(jù),必須依靠Spark這種集群模式的并行處理框架,并且隨著集群節(jié)點個數(shù)的增加,處理效率也會隨之提高,集群環(huán)境可解決單機環(huán)境無法處理的問題。
4.3.3? 數(shù)據(jù)挖掘性能實驗
基于K-means空間聚類算法分別對無錫市1天的出租車實時位置數(shù)據(jù)進行挖掘分析,形成出租車熱點分布圖,以驗證單機環(huán)境下與不同節(jié)點集群環(huán)境下的時空數(shù)據(jù)挖掘效率。
通過實驗得出單機環(huán)境與3個節(jié)點、6個節(jié)點的集群環(huán)境下時空數(shù)據(jù)挖掘的時間對比表如下所示。
基于無錫市某天的出租車實時位置數(shù)據(jù)進行K-means空間聚類,得到無錫市的出租車熱力分布圖5所示。
從實驗結(jié)果可以看出,隨著數(shù)據(jù)量的增大,基于集群的Spark mllib分布式機器學(xué)習(xí)框架的并行計算效率明顯占優(yōu)勢。當(dāng)數(shù)據(jù)量增加到一定程度時,單機將無法勝任此工作。
5? 結(jié)論
本文通過對主流的大數(shù)據(jù)技術(shù)平臺進行調(diào)研和分析研究后,搭建了一套基于HDFS+Spark的時空大數(shù)據(jù)存儲計算的集群平臺,并用于進行了時空大數(shù)據(jù)存儲、處理與挖掘的性能實驗,得出如下結(jié)論:
(1)時空數(shù)據(jù)量較少時,數(shù)據(jù)存儲性能在單機環(huán)境下效率較高,而隨著數(shù)據(jù)量的不斷增大,集群環(huán)境的存儲效率明顯提升,是海量時空數(shù)據(jù)存儲的理想選擇。
(2)由于單機環(huán)境下硬件配置的限制和集群環(huán)境下并行計算處理的優(yōu)勢,時空大數(shù)據(jù)處理、挖掘的效率明顯優(yōu)于單機環(huán)境,并且集群節(jié)點數(shù)量越多,數(shù)據(jù)處理、挖掘的效率越高,即使當(dāng)數(shù)據(jù)量超過了單機環(huán)境可處理閥值,集群環(huán)境也可以輕松處理。
參考文獻
[1]Aisha SIDDIQA, Ahmad KARIM, Abdullah GANI. Big data storage technologies: a survey[C]. Siddiqa et al. / Front Inform Technol Electron Eng, 2017 18(8):1040-1070.
[2]Name Node. [EB/OL] http://hadoop.apache.org/docs/stable/ hdfs_design.html#Name Node+and+Data Nodes.
[3]Data Node.[EB/OL] http://hadoop.apache.org/docs/stable/ hdfs_design. html#Name Node+and+Data Nodes.
[4]王磊, 一種高性能HDFS存儲平臺的研究與實現(xiàn)[D]. 西安電子科技大學(xué), 2013.
[5]Suthipong D, PeeraponV. Applying One-Versus-One SVMs to Classify MultiLabel Data with Large Labels Using Spark[C]. Knowledge and Smart Technology. IEEE, 2017: 1-4.
[6]施志林, 時空數(shù)據(jù)分布式存儲研究[D]. 江西理工大學(xué), 2015.
[7]何濤, 面向海量空間數(shù)據(jù)并行高效處理的存儲模式設(shè)計與研究[D]. 電子科技大學(xué), 2014.
[8]Zaharia M, Chowdhury M, Das T, Dave A, Ma J, McCauley M, Franklin MJ, Shenker S, Stoica I. Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing. In: Proc. of the 9th USENIX Conf. on Networked Systems Design and Implementation. San Jose: USENIX Association Berkeley, 2012. 1-14.
[9]高彥杰. Spark大數(shù)據(jù)處理[M]. 北京: 機械工業(yè)出版社, 2014.