毛新健 吕旭炜
(交通运输部东海航海保障中心上海航标处,上海 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 大数据进行高性能计算处理,计算效率提升一个数量级,从而更为有效实现船舶轨迹跟踪、船舶货物交通流量分析、统计航路通航率统计等应用需求,对海事监管、船舶安全、航运经济、航道设计都具有极其重要的指导意义。