初秀民 林 宏 王志遠(yuǎn)
(1.閩江學(xué)院物理與電子信息工程學(xué)院 福州 350108;2.閩江學(xué)院福建省船舶智能航行安全控制工程研究中心 福州 350108;3.閩江學(xué)院海洋智能船舶裝備福建省高校工程研究中心 福州 350108)
當(dāng)前,在經(jīng)濟(jì)全球化的影響下,低成本和大運(yùn)輸量的優(yōu)勢使水上運(yùn)輸成為世界各國之間貿(mào)易和運(yùn)輸?shù)闹饕绞街?。自動識別系統(tǒng)(automatic identification system, AIS)是用于分析船舶航行狀況的主要工具。隨著水運(yùn)的發(fā)展,AIS數(shù)據(jù)量呈指數(shù)增長,為了對這些數(shù)據(jù)進(jìn)行分析,需要一個大數(shù)據(jù)平臺來有效地處理這些數(shù)據(jù)。Spark因其速度快、通用性強(qiáng)等特點(diǎn),逐步受到智能交通領(lǐng)域的青睞,例如曹磊[1]通過搭建基于Spark的通用型數(shù)據(jù)處理挖掘平臺,以對AIS數(shù)據(jù)進(jìn)行挖掘。
由于AIS沒有完整的信息驗證機(jī)制,在實(shí)際應(yīng)用中AIS數(shù)據(jù)中存在大量的異常數(shù)據(jù),因此需要進(jìn)行有效甄別以保障船舶航行安全。目前國內(nèi)外的研究主要集中在AIS數(shù)據(jù)的應(yīng)用研究,而對AIS數(shù)據(jù)本身的準(zhǔn)確性分析缺少。例如,Zhang等[2]使用AIS數(shù)據(jù)來評估遇船風(fēng)險。Dobrkovic等[3]使用遺傳算法對船舶位置信息進(jìn)行聚類,并研究了船舶航向的特征。Altan等[4]使用AIS數(shù)據(jù)分析了伊斯坦布爾海峽的航運(yùn)特征,為船舶航行風(fēng)險的預(yù)測和分析提供了支持。田璐[5]考慮AIS數(shù)據(jù)的特征,設(shè)計了其處理流程和存儲策略,并利用AIS數(shù)據(jù)實(shí)現(xiàn)船舶航跡重構(gòu)、截面船舶流量統(tǒng)計、船舶出入口區(qū)域識別,以及船舶航行狀態(tài)分析等。Mazzarella等[6]分析AIS數(shù)據(jù),以確定故意關(guān)閉船載AIS設(shè)備的異常行為。LongépéN等[7]分析AIS數(shù)據(jù)以識別非法捕魚。魏照坤[8]利用瓊州海峽的AIS數(shù)據(jù),獲得行駛于該水域的船舶運(yùn)動軌跡分布及各類軌跡中轉(zhuǎn)向區(qū)域的分布。
為此,本文設(shè)計了一個基于Spark的大數(shù)據(jù)處理平臺,使用k-means算法對AIS數(shù)據(jù)進(jìn)行聚類分析,并將Spark建立AIS數(shù)據(jù)的聚類所需的時間與在機(jī)器上對AIS數(shù)據(jù)進(jìn)行聚類所需的時間進(jìn)行比較。
AIS數(shù)據(jù)處理平臺主要包括數(shù)據(jù)存儲層、資源管理層、計算引擎及接口、操作語言的運(yùn)用。總體架構(gòu)生態(tài)圖見圖1。
圖1 總體架構(gòu)生態(tài)圖
AIS數(shù)據(jù)包括船舶的靜態(tài)信息和動態(tài)信息。靜態(tài)信息是船舶在航行過程中保持不變的信息,包括MMSI號、船舶名稱、船舶類型、船舶的長和寬、吃水等信息。動態(tài)信息是船舶在航行過程中隨著時間的推移,不斷變化的信息,包括船速、船舶位置信息、船艏向、船舶狀態(tài)等。
HBase是基于HDFS的NoSQL數(shù)據(jù)庫,它的表是按列存儲的、稀疏的、多維度的、有序的映射表,它的存儲模式是KeyValue鍵值對存儲,與純粹字符串的Key不同的是:HBase的 Key由RowKey、Column Family、Column Qualifier和Timestamp 4個部分共同組成。以上這些特點(diǎn)使得Hbase具有易擴(kuò)展、適合大量的查詢與寫入工作等特點(diǎn)。
針對AIS數(shù)據(jù)量大、數(shù)據(jù)信息復(fù)雜等特征,本文采用基于HBase數(shù)據(jù)庫來存儲AIS數(shù)據(jù)。對AIS數(shù)據(jù)進(jìn)行分析的時候,一般通過時間和MMSI號進(jìn)行數(shù)據(jù)的分類與切片,因此將“DateTime and MMSI”作為行,以其他信息為列,具體設(shè)計見表1。
表1 AIS數(shù)據(jù)結(jié)構(gòu)表
為了對平臺資源進(jìn)行分配與管理,本文搭建了以Mesos、Zookeeper為主體的資源管理層。
Mesos對平臺中CPU、內(nèi)存、存儲和其他計算資源進(jìn)行合理的分配,使得彈性分布式系統(tǒng)使用起來更加方便。但是Mesos在運(yùn)行過程中存在單點(diǎn)故障問題,為此本文采用Zookeeper來解決這個問題。ZooKeeper能夠?qū)崿F(xiàn)Master和Slave的容錯。將那些復(fù)雜且容易出錯的分布式一致性服務(wù)封裝起來,構(gòu)成一個高效可靠的原語集,并以一系列簡單易用的接口提供給用戶使用。資源管理架構(gòu)圖見圖2。
圖2 資源管理架構(gòu)圖
Apache Spark是一種專門處理大數(shù)據(jù)的熱門計算引擎,同時提供了Spark SQL、Spark Streaming、Mllib、GraphX等4個范疇的計算框架,其框架圖見圖3。Spark SQL是實(shí)現(xiàn)結(jié)構(gòu)化數(shù)據(jù)操作的程序包,支持用戶以SQL語句的方式來處理數(shù)據(jù)且支持多種數(shù)據(jù)源。Spark Streaming支持對實(shí)時數(shù)據(jù)進(jìn)行流式計算。Mllib為用戶提供了常用機(jī)器學(xué)習(xí)算法的實(shí)現(xiàn)庫。GraphX實(shí)現(xiàn)了高效的圖計算。Spark以將應(yīng)用放到內(nèi)存中運(yùn)行的方式,提高了程序的運(yùn)行數(shù)據(jù),且具有計算速度快、易用性好、通用性高等優(yōu)點(diǎn)。
圖3 Spark框架圖
k-means算法是一種常見的聚類算法,其基本思想是通過迭代找到k個聚類的劃分方案,以便使用這k個聚類的平均值來表示相應(yīng)類型的樣本。
k-means算法的基礎(chǔ)是最小誤差平方和準(zhǔn)則。成本函數(shù)為
(1)
式中:i為第i個簇;x為樣本,μc(i)為第i個簇的平均值。直觀地講,每個類別中的樣本越相似,樣本與類別平均值之間的誤差平方就越小。希望成本函數(shù)最小,如果將每個聚類劃分為k個類別,則可以驗證針對所有類別獲得的誤差平方和。
上式的成本函數(shù)不能通過分析方法最小化,只能使用迭代方法。k-means算法將樣本聚類為k個聚類,其中k由用戶指定。解決過程直觀且簡單。具體算法描述如下。
1) 隨機(jī)選擇k個聚類質(zhì)心點(diǎn)。
2) 重復(fù)以下過程直到收斂。
①對于每個示例i,計算它應(yīng)該屬于的類別,計算方法如式(2)所示。
(2)
②對于每個k類,重新計算該類的質(zhì)心,計算方法如式(3)所示。
(3)
平臺使用4臺計算機(jī)搭建,計算機(jī)配置為CPU為Intel(R) Xeon(R) CPU E5-2603 v4@ 1.70G Hz,內(nèi)存為5.0 G,硬盤為200 G。用來搭建hadoop、Spark 集群,另外1臺用來訪問集群。架構(gòu)圖見圖4。
圖4 架構(gòu)圖
4臺計算機(jī)搭載的系統(tǒng)均為Centos 7,安裝的JDK版本為openjdk version “1.8.0_252”,Hadoop版本為Hadoop 2.10.0,Spark版本為version 3.0.0,Mesos版本為1.10.0,ZooKeeper版本為3.4.6。集群搭建內(nèi)容見表2。
表2 集群搭建內(nèi)容表
通過k-means算法分類可獲得不同類型的軌跡點(diǎn),其AIS軌跡聚類分析圖見圖5。
圖5 基于k-means算法的AIS軌跡聚類分析圖
圖5中紅色點(diǎn)表示正常點(diǎn),主要落在航道中,其他顏色的點(diǎn)表示異常點(diǎn)。這些異常點(diǎn)中的一些分布在附近的陸地上,而有些則離得很遠(yuǎn),因此無法正確表示船舶的軌跡。
王暢[9]采用Dbscan算法對天津港泊位點(diǎn)進(jìn)行聚類,并與真實(shí)泊位對比,驗證了聚類結(jié)果的準(zhǔn)確性,為此本文采用Dbscan算法對k-means算法的有效性進(jìn)行了驗證。Dbscan算法對同一數(shù)據(jù)樣本的聚類分析結(jié)果圖見圖6。
圖6 基于Dbscan算法的AIS聚類軌跡分析圖
其中,深紫色的點(diǎn)表示表示正常點(diǎn),主要落在航道中。其他顏色的點(diǎn)表示異常點(diǎn)。這些異常點(diǎn)中的一些分布在附近的陸地上,而有些則相距很遠(yuǎn),因此不能正確地表示船舶的軌跡。
圖5中的紅色軌跡線和圖6中的深紫色軌跡線均表示集群的船只軌跡。2條軌跡高度一致,說明本文的k-means算法可以對AIS數(shù)據(jù)進(jìn)行有效的聚類分析。
由Spark集群和沒有Spark集群的計算機(jī)對AIS船舶軌跡進(jìn)行聚類的運(yùn)算時間比較見圖7。
圖7 運(yùn)算時間比較圖
由圖7可見,未安裝Spark集群的計算時間隨著AIS數(shù)據(jù)量增加大幅度上升,而Spark聚類分析時間隨著AIS數(shù)據(jù)量的增加略微增加,且遠(yuǎn)小于未安裝Spark集群的計算時間,并隨著AIS數(shù)據(jù)量的增加差異越大,故Spark聚類分析可大幅度提高運(yùn)算速度。
針對大量的AIS數(shù)據(jù)和信息處理,本文使用基于Spark、Hadoop和Mesos的大數(shù)據(jù)處理平臺來分析AIS數(shù)據(jù)。通過對船舶航跡點(diǎn)的k-means聚類分析,對不同航跡點(diǎn)進(jìn)行分類,并將本文構(gòu)建的大數(shù)據(jù)平臺與無大數(shù)據(jù)平臺計算機(jī)的分析效率進(jìn)行了比較分析。測試結(jié)果表明,該平臺可大幅度提高AIS數(shù)據(jù)分析的效率。在AIS數(shù)據(jù)量不斷增加的環(huán)境中,本文構(gòu)建的平臺可以提高數(shù)據(jù)處理效率,對AIS數(shù)據(jù)進(jìn)行有效的聚類分析,為更深入的AIS數(shù)據(jù)分析奠定基礎(chǔ)。