随着海事信息化的推进,海事系统已发展形成多个业务子系统,并积累了大量时空数据信息[1]。国际海事组织(International Maritime Organization,IMO)于2006年提出了e-航海概念,其技术架构包括岸端、船端和船岸之间的通信[2]。e-航海体系的建设,对海事信息化提出了更高的要求,对e-航海系统而言,其需要在数据域执行用户各种业务数据请求,从不同技术服务子系统中获取相关数据,并以标准的数据格式、适当的展现形式提供给用户,从而满足用户需求[3]。近五年国内首批e-航海示范性工程相继投入使用[4-6],以船舶自动识别系统(automatic identification system,AIS)数据为代表的海事数据积累地越来越多,给数据的存储和管理都带来了巨大挑战,严重制约数据处理和分析效率,随着信息技术的发展,逐步涌现了以分布式处理技术为代表的解决办法[7],现有技术虽在一定程度上提高了数据处理能力,但在使用过程中,往往存在负载不均衡现象,导致集群的计算能力不能完美地发挥,制约了集群系统整体性能的提升[8]。针对这个问题,国内外开展了负载均衡算法研究,研究热点主要集中在预先优化资源配置,即新增数据的均匀加载和负载倾斜情况下的资源调度[9],其中具有代表性的研究包括:Yahoo提出的Capacity Scheduler[10]作业调度算法,该算法支持多队列处理,各队列按相应比例分配资源,且特定队列中的资源被该队列中的所有任务所共享。当新任务在集群中出现时,将会被分配到未满队列。该算法单一队列调度策略采取先入先出队列(first input first output,FIFO)机制,但并未提供作业处理时的优先级,须进行完成方可释放资源;华南理工计科学院团队提出的基于动态带宽分配的Hadoop负载均衡方法[11],通过控制变量来动态分配各节点网络带宽,并在此基础上建立了负载均衡的数学模型,以期望在保证Hadoop分布式文件系统(Hadoop distributed file system,HDFS)数据访问性能的基础上,提高集群节点变化,尤其是新节点加入时的负载均衡效率;文献[12]提出的面向大规模数据管理和分布的可编程环境BitDew,该算法基于特定的元数据集对关键数据进行高度抽象的管理操作,包括数据分布、生命周期、复制和容错等。但BitDew将数据依赖性定义为一个由用户预定义的属性,其指标很大程度上左右了BitDew实际性能表现。总体来说,负载均衡算法的相关研究取得了一些的成果,大大提高了数据的表现力,但仍处于探索阶段,整体上都还有具有一定的局限性:①剥离了分布在多个节点上各任务间的联系[12];②忽略了数据单元个体间的价值差异[13];③对均衡效果的评价标准仍不全面[14]。而在e-航海时空数据处理方面还没有实践研究。本文基于AIS时空数据的相关特征,对AIS数据特性和组织方式进行了分析,针对现有负载均衡算法的不足,从数据间和任务间关联不足的问题出发,结合e-航海技术,提基于时空频繁模式挖掘的负载均衡算法(spatio-temporal frequent pattern mining based load balancing algorithm, STFPM),并设置了相关实验进行了4种算法的对比验证分析,结果表明,STFPM算法在负载均衡、数据迁移频率和性能损耗方面均具有良好的性能。
1 AIS数据特性分析
1.1 AIS数据内容AIS由岸基设备和船载设备两部分组成。岸基设备通过接收沿岸船舶的航行信息,形成全球船舶运动轨迹数据库,这些AIS数据包含船舶的航行特点,并且包括特定区域的航行方法和航线设计者经验,是海上交通调查的重要数据来源,也是探索船舶运动规律的重要依据,在船舶导航避碰,海上搜救,调度引航等方面发挥着极为重要的作用[15-17]。AIS数据以报文形式展现,其报文类型共27种,大多与船舶航行安全相关。按报文属性可将27种报文分成动态信息、静态信息和航次相关信息3类[18]。动态信息为船舶实时动态信息,主要包括船舶经纬度、对地航向等;静态信息为船舶属性信息,主要包括水上移动通信业务标识码(maritime mobile service identify,MMSI)、船名呼号等;航次相关信息随船舶航次相应地改变,主要包括船舶吃水、目的港和预计到港时间(estimated time of arrival,ETA)等。1.2报文解析AIS数据包含信息十分丰富,受海上复杂通信环境因素的制约,AIS数据在传输过程中需对报文信息进行合适的编码处理。为此在应用AIS数据进行研究分析时,需按照AIS报文对应的编码机制,将AIS报文解析成可读性明文,相应的解析过程如图1所示。图1 AIS数据解析流程图Fig.1 Parsing Process of AIS Data特别地,本文中选取的AIS数据是经过解析处理后的,存储在数据中心数据库中,本文选取了某一节点连续数据,并进行了处理分析。
图3 4种算法的负载均衡效果Fig.3 Load Balancing Effect of Different Algorithms可以看出,STFPM算法能够将DataNode的负载维持在一个更为稳定和均匀的范围内,其负载均衡效果优于其余3种方法。这是因为STFPM算法综合考虑了影响负载均衡效果的多个因素,通过赋予权值的形式融入具体的量化过程中,因此STFPM算法对于DataNode节点的性能、可用带宽等指标有着更为精确的处理和把握;此外,由于考虑到了数据文件间的潜在联系,其数据迁移策略效率更高,这也使得系统的负载能够更好的维持在稳定状态。由于在海事数据中心环境下,负载状况和频繁模式出现的概率均会随时间呈现明显变化,因此设计实验对不同负载强度下和频繁模式所占比重不同的情况下的STFPM算法性能进行测试,结果如表2所示。 表2 不同负载强度下节点间负载量方差的标准化结果()Tab.2 Standardized Results of Variance of Load between Nodes under Different Load Intensities
负载强度/min
STFPM
Capacity Scheduler
基于动态带宽分配的Hadoop负载均衡方法
BitDew
17
63
100
67
21
49
100
58
16
37
100
41
表3 不同频繁模式比例下节点间负载量方差的标准化结果()Tab.3 Standardized Results of Variance of Load between Nodes under Different Frequent Mode Ratios
图4 4种算法的数据迁移频率Fig.4 Data Migration Frequency of Different Algorithms可以看出,STFPM算法的数据迁移频率总体上明显小于其余3种方法。这是因为STFPM算法在进行数据迁移时,考虑到了潜在迁移目标上数据文件与待迁移数据文件的内在关联,排除了大量迁移后可能带来的新DataNode上的过载问题,从而有效降低了二次迁移的可能,带来了更少的数据迁移频率。4.3性能损耗对比分析为了更直观地度量STFPM算法对于整个Hadoop平台所带来的性能压力,设计该实验以对部署STFPM算法后Hadoop上各DataNode节点的性能情况进行监测。设计该实验参数时,考虑到实际性能根本上是任务总量与任务消耗时间的比值,因此,本文将任务总量设为常量,向Hadoop平台上先后加载6个不同的数据集,并分别部署STFPM算法、Capacity Scheduler、基于动态带宽分配的Hadoop负载均衡方法和BitDew方法,对同一数据集进行相同操作,并观察6次消耗时间的差异,实验结果如图5所示,其中横轴表示相应的试验次数,纵轴为消耗时间,单位为min。图5 四种算法的性能损耗/运行时系统的实际性能 Fig.5 Performance loss of different algorithms / actual performance of the runtime system实验结果表明,在对相同AIS数据集的相同操作所耗费的时间上,STFPM算法的表现明显好于其余3种方法。事实上,根据前面两个实验的结果我们可以预见到STFPM算法为系统带来的性能损耗是低于其余3种算法的,虽然在计算时,STFPM算法的过程较为繁琐,但在数据密集型计算中,计算机的计算能力常处于半负荷状态,因此较为繁琐的运算并不会为系统带来明显的额外负担,而STFPM算法更好的负载均衡效果、更低的数据迁移频率则对系统的实际表现有着相对明显的影响。综上所述, STFPM算法在负载均衡效果、数据迁移频率和系统实际性能表现3个方面均优于其它3种方法。并且可以预见,在海事数据中心集群规模进一步扩大时, STFPM算法的优势将会进一步扩大。