随着海事信息化的推进,海事系统已发展形成多个业务子系统,并积累了大量时空数据信息[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.1环境设置通过在实验室环境中搭载Hadoop平台,并在相同硬件上虚拟出多个Slave节点对本文提出的算法进行模拟实验。表1 Hadoop平台的软硬件选取情况Tab.1Hardware and Software Selection of Hadoop Platform
软硬件类型
选取情况
控制节点NameNode
浪潮NF5270M4服务器
计算节点DataNode
Dell灵越3670×4、浪潮NF5270M4服务器
集群带宽
100 MB
Hadoop版本
Version 2.7.7
OS
Ubuntu 15.04
3.2相关环境参数修改为使模拟实验更加接近海事数据中心实际情况,需要在有限的硬件资源中模拟尽可能多的节点和数据。因此,对Hadoop中数据文件体量的默认参数进行了修改,即fs.checkpoint.size修改为65 536 B,从而将Hadoop上数据文件(block)大小由默认的64 MB修改为64 kB;在每个计算节点上模拟出10个DataNode,并对每台硬件的计算和带宽资源进行等分。此外,对包括AppSmgr函数,getNodeInfos函数,chooseNode函数等进行了相应修改。3.3实验数据选取与加载1)实验数据选取。本文根据数据质量选取2016-05-01 T 00:00:00—2016-05-06 T 00:00:00中国北方海区的AIS数据。将AIS原始报文解析成可读性数据后,对所得AIS数据预处理,以MMSI为索引匹配动态数据表和静态数据表,选取属性列MMSI、LONGITUDE(纬度)、LATITUDE(经度)、SPEEDOVERGROUND(对地速度)、PUBLISHTIME(时间)以及COURSEOVERGROUND(对地航向)生成文本文件。剔除错误值和无效值。然后利用本文提出的负载均衡算法在Hadoop环境下处理AIS数据。2)实验数据加载。实验数据的价值和与之对应的负载量是事先未知的,因此,配合使用随机数生成函数srank和rank,生成[1,50]之间的随机数,并按照随机数顺序,将所有文件以此进行加载。即对于实验节点集合,实验数据文件集合,利用随机数生成函数生成的有序数组,确定每个文件的存储位置,即对于文件,其存储节点位置为。3.4带有频繁模式的负载仿真在进行负载仿真时,将负载分为两部分:随机负载部分和频繁模式负载部分。具体方法如下:1) 随机生成频繁模式。利用随机数生成函数srank和rank,生成随机长度(实验中单元个数为200)的列表,这里,是数据文件的总数量。每个数组对应一个随机长度的有序数据文件队列,即,对于每个,生成一个对应的任务与之对应,即任务需要顺序对中的数据文件进行访问处理。全局频繁模式使用列表进行存储。2) 随机生成任务序列。在每个时隙开始时,进行任务序列的生成。首先生成任务序列的随机部分,其本质是生成每次仅需要访问和计算单个文件的任务,通过使用在1)随机生成频繁模式中的方法,并将列表的长度置为1来实现。完成随机部分的任务序列生成后,开始进行频繁模式任务序列的生成。随机生成一个布尔数B,其值的真或假分别代表在该时隙内是否生成频繁模式。若B为真,则开始生成频繁模式。利用随机数生成函数srank和rank,生成一个1到的随机数,然后生成长度为的数组,其中对应的任务在该时隙内被激活。在实验中,通过修改的数值,可以实现任务序列中频繁模式所占比重的调节;通过修改时隙的长度,则可以对实验环境中整体的负载强度做出调整。
4 效果评估与分析
基于上述实验环境,进行多个模拟实验来验证STFPM算法的负载均衡性能。4.1负载均衡效果对比分析首先对算法运行一段时间后的负载分布情况进行测试。在Hadoop上加载AIS数据集,当设置,时,记录STFPM算法、Capacity Scheduler、基于动态带宽分配的Hadoop负载均衡方法和BitDew的负载均衡效果,最终结果为多个数据集记录结果的平均值。实验结果如图3所示,其中横轴代表不同节点,纵轴代表当前节点的负载情况与平均负载情况的比值,单位为%。图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
频繁模式比例
STFPM
Capacity Scheduler
基于动态带宽分配的Hadoop负载均衡方法
BitDew
7
63
84
100
16
37
100
41
42
56
100
68
可以看出,在上述参数设置下,STFPM的效率始终高于其余3种方法,且随着负载强度的增大和频繁模式比重的增加,其性能优势逐步变大,这是因为STFPM的负载迁移操作效率更高,避免了大量无用的数据迁移,因而在负载倾斜更加严重时,具有更好的性能表现。4.2数据迁移频率对比分析较为复杂的负载均衡算法通常能够带来相对精确的负载均衡效率,但在面对海量异构数据时,过于频繁的数据迁移将会带来系统性能在某些场景下(如系统负载随时间变化波动较大时)的大幅下降。因此,本文设计了实验来对STFPM算法负载迁移模块的激活频率,即数据迁移或修改索引默认路径的频率进行模拟。在时间参数的选取上,以30 min为时间单位,统计单一时间单位内系统上执行数据迁移操作和索引项默认路径修改操作的总和。由于其他算法均未主动利用海事数据中心上普遍存在的备份机制,因此STFPM算法的性能仍优于该实验的结果。实验结果如图4所示,其中横轴的数字代表对应的时隙(长度为30 min),纵轴代表在当前时隙内的文件迁移总数,单位为次。图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算法的优势将会进一步扩大。