毛新健 呂旭煒
(交通運輸部東海航海保障中心上海航標處,上海 201208)
AIS,即船舶自動識別系統(Automatic Identification System),是由岸基設施和船載設備共同組成的數字導助航系統,根據國際海事組織(IMO)相關規定,船舶AIS 應向適當安裝的岸基臺站、其他船舶和航空器自動提供包括本船身份、船型、船位、航向、航速、航行狀態及其他與安全有關的信息,并自動收取此等信息。根據SOLAS公約的規定,從2002 年7 月1 日起相關船舶分階段安裝AIS 設備。目前,所有300 總噸以上國際航行的船舶和500 總噸以上非國際航行的船舶以及客船都已經安裝AIS 設備。近年來,越來越多的內貿船舶和漁船也安裝了AIS 設備。AIS 已成為目前航行船舶應用最為普及的導助航系統,針對AIS 大數據進行分析,無疑成為目前AIS 應用的重要研究方向。
GPU,即為圖形處理器,Graphic Processing Unit 的英文縮寫,與CPU 中央處理器一樣,是計算機設備核心部件。最早的GPU 是計算機用于獨立進行圖形圖像計算處理的部件,但隨著GPU 圖形處理技術的不斷完善發展,人們逐漸發現相比起CPU,GPU 擁有高性能的多處理器陣列與高帶寬、隱藏延遲顯存系統,這使得在大數據計算應用上,GPU具有比CPU 更具優勢,因此GPU 在大數據計算領域得到越來越廣泛的應用。
CPU 中央處理器和GPU 圖形處理器,兩者都是為了完成計算任務而設計的芯片。但由于其設計目標的不同,因此CPU 和GPU 分別適用于兩種不同的應用計算場景。CPU 作為計算機最重要的核心,需要很強的通用性來處理各種不同的數據類型和進行不同判斷,計算能力只是CPU 的一部分功能。而GPU 面對的則是類型高度統一的、相互無依賴的大規模數據和不需要被打斷的純凈的計算環境,100%用于計算。
CPU 和GPU 的主要區別在于,芯片內的緩存體系和數字邏輯計算單元的結構差異。CPU 雖然也有多核,但最多也就局限于兩位數,每個核都有足夠大的緩存和足夠多的數字和邏輯計算單元,性能強勁,并輔助有很多加速分支判斷,甚至更復雜的邏輯判斷的硬件;GPU 的核數遠超CPU,多達成百上千核。盡管每個核擁有的緩存相對小,數字邏輯計算單元也少且簡單。但在浮點計算方面,GPU 卻可以提供數十倍乃至于上百倍于CPU 的性能。
CPU 和CPU 之間浮點計算功能之所以存在如此之大的差異,原因就在于GPU 專為計算密集型、高度并行化的計算而設計,能使更多晶體管完全用于數據處理,而不用考慮數據緩存和流控制。GPU 非常適用于解決可表示為數據并行計算的問題,在許多數據元素上并行執行程序.具有極高的計算密度。因為所有數據元素都執行相同的程序,所以對精密流控制的要求不高。由于在許多數據元素上運行,且具有較高的計算密度,因而可通過計算隱藏存儲器訪問延遲,而不必使用較大的數據緩存。因此,對于一個計算任務,任務中的子任務的數量越多,單個子任務計算工作量較小且大小等同,子任務之間數據交互越少,就越能充分發揮GPU并行計算優勢。而CPU 剛好相反,適用于單個復雜的計算任務。簡單地說,需要對大量類似數據單獨進行同樣計算時,GPU 更合適,需要對同一數據進行不同類型的復雜計算,CPU 更好。
應用GPU 替代傳統CPU 對AIS 大數據進行計算,正是由于AIS 報文數據的特性非常匹配GPU 并行計算的需求。
AIS 工作于AIS1(頻道87B-161.975MHz)和AIS2(頻道88B-162.025MHz)兩個頻道,帶寬25kHz。采用時分多址(TDMA)通信協議,將每個指配頻率上的1分鐘的時段(幀)分割成2 250 個時隙,2 個頻率共有4 500 個時隙。2 250 個時隙為一幀,每分鐘不斷重復。其時隙與世界協調時(UTC)嚴格同步,由全球導航衛星系統(GNSS)提供。
AIS 按規定根據其船舶航行狀況,占用時隙進行數據發送。AIS 數據以報文的形式展現,根據船舶航行速度的不同發送頻率不一,例如:船舶移動速度在0~ 14 kn 為10mile發送一條AIS 報文,移動速度在14~ 23 kn 船舶,即6 s 發送一條AIS 報文,移動速度超過23 kn,則2 s 發送一條。報文內容包括本船的靜態數據(船名、呼號、九位碼、船舶長度寬度、船型和GPS 天線位置等)、動態數據(船舶實時經緯度位置、對地航向航速、船艏向、航行狀態等),以及航次數據(船舶吃水、危險貨物種類、目的港和預計抵達時間等)信息。根據國際電信聯盟(ITU)發布的ITU-R M.1371 建議書的標準進行封裝和解析。當一條條AIS 報文匯集起來,便形成了AIS 大數據。
針對AIS 大數據進行分析,首要就是將AIS 大數據進行再次分解,一組AIS 大數據所包含的AIS 船舶數量成千上萬,AIS 報文更是一個天文數字。但對于單艘船舶而言,其發送AIS 報文遵照規定標準格式進行播發,自由度不大,格式基本統一,且不同船舶之間AIS 設備自行播發,互無關聯,沒有影響。單條AIS 報文受限于AIS 帶寬,報文數據量相對較小,相應計算量也較少。這正是最能充分發揮GPU 并行計算能力的優勢領域。對于幾百上千核心的GPU而言,由每個GPU 核心負責一條AIS 報文數據的分析,這樣即使是較大水域范圍和較長時間段的AIS 數據計算需求,GPU 也只需要按任務進行浮點分配并行計算即可批量快速完成分析工作。
為實現基于GPU 高性能計算在AIS 大數據分析上的應用,部署了4 臺GPU 服務器,每臺GPU 服務器配置8 塊GeForce RTX 2080 Ti,性能核心參數如下:
CUDA cores: 4,352;
Clock speed: 1350MHz base,1545MHz boost;
Memory capacity: 11GB GDDR6;
Memory path: 352 bits;
Memory bandwidth: 616GBps 。
4 臺GPU 服務器以Hadoop 為基礎,以HBase 為核心、以Zookeeper 為管理,構建分布式集群,應用HDFS 分布式文件系統和HBase 列式存儲分布式數據庫進行AIS 數據流存儲,從而進一步加快AIS 大數據處理效率。
HDFS 分布式文件系統作為Hadoop 核心部件,負責分布式存儲數據,規定集群中服務器即節點的用途,其中包括:
1)命名節點 (NameNode):用于指揮其他節點存儲的節點,用于儲存映射信息并提供映射服務的計算機,在HDFS系統中扮演唯一管理角色。
2)數據節點 (DataNode):使用來儲存數據塊的節點,具有儲存數據、讀寫數據的功能。
3)副命名節點 (Secondary NameNode):負責備份命名節點狀態數據。
集群依照HDFS 要求,進行服務器節點部署,如圖1所示。

圖1 HDFS 集群
GPU1 服務器部署了命名節點和數據節點;GPU2 服務器部署了副命名節點和數據節點;GPU3 和GPU4 各自部署了數據節點。
同時,4臺服務器組成一個HBase集群。部署如圖2所示。

圖2 Hbase 集群
GPU1-4 都部署Zookeeper;GPU1 部署為HBase Master節點;GPU2-4 部署為HBase RegionServer 節點。
1)Region Server:負責數據的讀寫服務,通過與Region server 交互來實現對數據的訪問。
2)HBase Master:負責Region 的分配及數據庫的創建和刪除等操作。
3)Zookeeper:負責維護集群的狀態。
經測試,基于GPU 構建的Hadoop+HBase+Zookeeper 服務器集群對AIS 大數據進行計算,單用戶下,數據總量少于千萬條AIS 報文的請求,平均響應時間不超過1 s;數據總量在千萬到一億條的請求,平均響應時間不超過5 s;數據總量在一億到十億條以內的平均響應時間不超過20 s,相比起傳統的CPU 分鐘級的計算速度,計算效能提升了一個數量級。
同時,對經過GPU 分布式集群高性能計算處理后的AIS 大數據軌跡流量結果通過AIS 大數據分析應用軟件系統進行可視化顯示,實現AIS 水域內任意時間、空間、類別的船舶AIS 密度、熱力、航線等多層次的流量統計分析應用。
1)船舶流量分析:分析規定水域和時間內AIS 船舶軌跡情況,利用顏色和航跡,標識不同類型船舶的航行線路、水域分布等,如圖3 所示。

圖3 船舶流量分析
2)船舶信息統計:利用軌跡矢量化技術展現不同水域、港口及航道的交通流量;利用顏色、圖形圖示統計船舶類型、航速、噸位等相關信息,如圖4 所示。

圖4 船舶信息統計
3)最佳航路推薦:基于歷年AIS 大數據分析,根據船舶航跡相似性特征,為船舶規劃任意兩點間最優航路推薦,并預測船舶航行距離、所需時間、關鍵轉向點等信息,如圖5 所示。

圖5 最優航路推薦
4)信號覆蓋檢測:對指定水域規歷年AIS 大數據進行統計分析,直觀查看AIS 信號覆蓋狀況,通過航道斷裂跡象,檢測AIS 信號覆蓋質量,如圖6 所示。

圖6 信號覆蓋檢測
近年來,大數據作為新興的信息技術在多個領域得到廣泛的應用,創造了巨大的價值。航運業作為龐大的基礎性產業,AIS 數據作為航運大數據的重要組成,每時每刻都在產生海量的數據。但傳統的CPU 計算模式在面對大數據處理時所消耗的資源和時長難以接受。因此,基于GPU 替代CPU 對AIS 大數據進行高性能計算處理,計算效率提升一個數量級,從而更為有效實現船舶軌跡跟蹤、船舶貨物交通流量分析、統計航路通航率統計等應用需求,對海事監管、船舶安全、航運經濟、航道設計都具有極其重要的指導意義。