张安民,等.面向e-航海时空数据处理的负载均衡算法

Posted 测绘学术资讯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了张安民,等.面向e-航海时空数据处理的负载均衡算法相关的知识,希望对你有一定的参考价值。

面向e-航海时空数据处理的负载均衡算法
张安民1,3,侯泽北1,李兆兴2,张殿君1,3
(1.天津大学海洋科学与技术学院,天津 300072
2.北京遥感信息研究所,北京100085
3.天津市港口环境监测工程技术中心,天津 300072

:针对现有海事时空数据处理模式中负载均衡算法的不足,该文提出一种基于时空频繁模式挖掘的负载均衡算法(STFPM)。该算法能够充分发挥各节点性能,避免在数据处理过程中由于负载重复迁移对资源的消耗,可提高负载迁移效率,改善数据处理性能。实验结果表明:该算法能够获得较其它3种主流方法更好的负载均衡效果,可进一步提升船舶自动识别系统(AIS)等数据的处理效率,为e-航海时空大数据的处理提供支撑。
关键词:e-航海;海事数据中心;时空数据;负载均衡;AIS

0 引言

随着海事信息化的推进,海事系统已发展形成多个业务子系统,并积累了大量时空数据信息[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 identifyMMSI)、船名呼号等;航次相关信息随船舶航次相应地改变,主要包括船舶吃水、目的港和预计到港时间(estimated time of arrivalETA)等。
1.2报文解析
AIS数据包含信息十分丰富,受海上复杂通信环境因素的制约,AIS数据在传输过程中需对报文信息进行合适的编码处理。为此在应用AIS数据进行研究分析时,需按照AIS报文对应的编码机制,将AIS报文解析成可读性明文,相应的解析过程如图1所示。

1 AIS数据解析流程图
Fig.1 Parsing Process of AIS Data
特别地,本文中选取的AIS数据是经过解析处理后的,存储在数据中心数据库中,本文选取了某一节点连续数据,并进行了处理分析。

2 基于时空频繁模式挖掘的负载均衡算法STFPM

STFPM算法通过持续监视海事数据中心各节点性能和负载情况,实现对各节点服务能力的量化和排序;通过频繁模式挖掘,实现对平台上整体和各节点负载状况的预测;在负载监测和预测的基础上动态调整负载转移和数据迁移策略,从而达到最优的负载均衡效果。图2展示了STFPM的算法原理。

张安民,等.面向e-航海时空数据处理的负载均衡算法

2  STFPM算法原理图
Fig.2 Principle of STFPM Algorithm
STFPM算法分为3个阶段:
1阶段是负载监测阶段,其作用是对系统资源和负载情况进行监测,记录系统性能和节点负载信息,进而通过这些信息对系统负载进行评估,作为后续负载迁移激活的判断依据。
2阶段是负载预测阶段,是算法的核心部分,它实现了基于时空频繁模式挖掘的节点负载预测。通过对空间维上海事数据中心的负载情况进行统计分析,发掘其中的空间频繁模式,即当前时间海事数据中心上负载严重倾斜的部分数据和节点。通过将负载情况与时间维进行序列分析,发掘数据中心的时间频繁模式及演变趋势,对后续时间的负载情况进行预测。
3阶段是负载迁移阶段,在前两步的基础上,将适量数据文件从负载严重倾斜的部分节点上迁移到后续时间负载较轻的目标节点上,从而实现有效的负载迁移,均衡数据中心负载。分别得出负载较轻节点并进行求交运算得出目标节点集合,若集合非空,则在该目标节点集合中找出最优节点,并针对待迁移数据迁移至该节点;若集合为空集,则在扩大当前负载较轻节点集合范围,再次进行求交运算,直至集合非空,循环中止。
2.1系统负载监测算法
负载均衡算法的工作效率与其对系统内各节点性能的掌握程度呈正相关,由于部分设备更新带来的节点间异构情况普遍存在,节点间常呈现一定的性能差异,因此在部署STFPM时,通过在各节点独立运行模拟程序,获取各节点的性能量化结果,作为节点性能评价指标。
在完成本地节点性能测试后,将测试结果在某一个或数个节点上进行汇总和分析,节点间的传输可以根据海事数据中心的架构选择相应的协议进行。本文选用ApacheHadoop作为实验平台,其采用Master-Slave架构,由控制节点NameNode负责元数据管理,TaskTracker负责任务在集群上的分发,并在Slave节点与Master间定期(默认为30 s)进行心跳通信,以确认各节点的工作状态。因此在实验中,STFPM的节点性能指标测试任务由TaskTracker在海事数据中心上进行分发,并最终通过在Heartbeat通信数据包中添加“Performance Testing Result”字段,以字符串形式存储节点性能量化结果,并发回控制节点进行汇总和分析。
负载均衡算法较为复杂,长时间运行会在一定程度上影响系统整体性能。针对此问题的常见做法是预设一个系统负载阈值[19],当负载不均衡情况超过该阈值时激活负载均衡算法,因此要对系统负载情况进行精确量化。方差是反映数据离散程度的有效表达,但仅仅考虑方差无法对系统整体负载情况进行评估,另一方面,极大-极小值可以直观度量个体负载的最大差异,进而弥补方差的这一不足。在STFPM算法中,系统负载监测算法将各节点任务序列长度最大差异和方差作为考量指标,当2个指标均达到一定程度后激活相应第2阶段算法。
2.2基于时空频繁模式挖掘的节点负载预测算法
该阶段算法主要通过挖掘任务和文件间的时空频繁模式,并对频繁模式发生的趋势进行分析,实现对节点后续可能负载情况的预测,从而避免仅对当前负载情况进行分析制定迁移策略可能带来的二次迁移,达到更好的负载均衡效果。

张安民,等.面向e-航海时空数据处理的负载均衡算法


张安民,等.面向e-航海时空数据处理的负载均衡算法

2.3基于负载预测的数据迁移算法
基于时空频繁模式挖掘的节点负载预测算法完成了对Hadoop集群上所有的DataNode和数据文件的负载预测和排序,基于负载预测的数据迁移模块则是在此基础上对数据迁移作出决策,其实质是从一种张安民,等.面向e-航海时空数据处理的负载均衡算法的映射关系,即将数据文件在数据节点上的分布作出变更。
在进行实验时,考虑到Hadoop系统上每个数据文件均有2份备份,分别存于索引默认存储位置相同机架的不同节点上和其他机架的某一节点上[20]。若通过将某备份位置更改为为默认索引位置,则也可以实现负载迁移,此时仅需对Hadoop数据索引进行相应修改。相比对数据存储位置进行迁移,可大幅降低Hadoop集群节点间的网络带宽开销,为此,STFPM算法的数据迁移阶段优先考虑备份位置节点的负载情况,若该数据文件的预测后续任务与备份位置节点的关联度较高,则通过比较其他DataNode的负载预测值选取合适的DataNode进行数据迁移。

3  实验设置

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;在每个计算节点上模拟出10DataNode,并对每台硬件的计算和带宽资源进行等分。此外,对包括AppSmgr函数,getNodeInfos函数,chooseNode函数等进行了相应修改。
3.3实验数据选取与加载
1)实验数据选取。本文根据数据质量选取2016-05-01 T 00:00:00—2016-05-06 T  00:00:00中国北方海区的AIS数据。将AIS原始报文解析成可读性数据后,对所得AIS数据预处理,以MMSI为索引匹配动态数据表和静态数据表,选取属性列MMSILONGITUDE(纬度)、LATITUDE(经度)、SPEEDOVERGROUND(对地速度)、PUBLISHTIME(时间)以及COURSEOVERGROUND(对地航向)生成文本文件。剔除错误值和无效值。然后利用本文提出的负载均衡算法在Hadoop环境下处理AIS数据。
2)实验数据加载。实验数据的价值和与之对应的负载量是事先未知的,因此,配合使用随机数生成函数srankrank,生成[1,50]之间的随机数,并按照随机数顺序,将所有文件以此进行加载。即对于实验节点集合张安民,等.面向e-航海时空数据处理的负载均衡算法,实验数据文件集合张安民,等.面向e-航海时空数据处理的负载均衡算法,利用随机数生成函数生成的有序数组张安民,等.面向e-航海时空数据处理的负载均衡算法,确定每个文件的存储位置,即对于文件张安民,等.面向e-航海时空数据处理的负载均衡算法,其存储节点位置为张安民,等.面向e-航海时空数据处理的负载均衡算法
3.4带有频繁模式的负载仿真
       在进行负载仿真时,将负载分为两部分:随机负载部分和频繁模式负载部分。具体方法如下:
1) 随机生成频繁模式。利用随机数生成函数srankrank,生成随机长度(实验中单元个数为200)的列表张安民,等.面向e-航海时空数据处理的负载均衡算法,这里,张安民,等.面向e-航海时空数据处理的负载均衡算法是数据文件的总数量。每个数组张安民,等.面向e-航海时空数据处理的负载均衡算法对应一个随机长度的有序数据文件队列张安民,等.面向e-航海时空数据处理的负载均衡算法,即张安民,等.面向e-航海时空数据处理的负载均衡算法,对于每个张安民,等.面向e-航海时空数据处理的负载均衡算法,生成一个对应的任务张安民,等.面向e-航海时空数据处理的负载均衡算法与之对应,即任务张安民,等.面向e-航海时空数据处理的负载均衡算法需要顺序对张安民,等.面向e-航海时空数据处理的负载均衡算法中的数据文件进行访问处理。全局频繁模式使用列表张安民,等.面向e-航海时空数据处理的负载均衡算法进行存储。
2) 随机生成任务序列。在每个时隙张安民,等.面向e-航海时空数据处理的负载均衡算法开始时,进行任务序列的生成。
首先生成任务序列的随机部分,其本质是生成每次仅需要访问和计算单个文件的任务,通过使用在1)随机生成频繁模式中的方法,并将列表张安民,等.面向e-航海时空数据处理的负载均衡算法的长度置为1来实现。
完成随机部分的任务序列生成后,开始进行频繁模式任务序列的生成。随机生成一个布尔数B,其值的真或假分别代表在该时隙内是否生成频繁模式。
B为真,则开始生成频繁模式。利用随机数生成函数srankrank,生成一个1张安民,等.面向e-航海时空数据处理的负载均衡算法的随机数张安民,等.面向e-航海时空数据处理的负载均衡算法,然后生成长度为张安民,等.面向e-航海时空数据处理的负载均衡算法的数组张安民,等.面向e-航海时空数据处理的负载均衡算法,其中张安民,等.面向e-航海时空数据处理的负载均衡算法对应的任务张安民,等.面向e-航海时空数据处理的负载均衡算法在该时隙内被激活。
在实验中,通过修改张安民,等.面向e-航海时空数据处理的负载均衡算法的数值,可以实现任务序列中频繁模式所占比重的调节;通过修改时隙张安民,等.面向e-航海时空数据处理的负载均衡算法的长度,则可以对实验环境中整体的负载强度做出调整。

4 效果评估与分析

基于上述实验环境,进行多个模拟实验来验证STFPM算法的负载均衡性能。
4.1负载均衡效果对比分析
首先对算法运行一段时间后的负载分布情况进行测试。在Hadoop上加载AIS数据集,当设置张安民,等.面向e-航海时空数据处理的负载均衡算法张安民,等.面向e-航海时空数据处理的负载均衡算法时,记录STFPM算法、Capacity Scheduler、基于动态带宽分配的Hadoop负载均衡方法和BitDew的负载均衡效果,最终结果为多个数据集记录结果的平均值。实验结果如图3所示,其中横轴代表不同节点,纵轴代表当前节点的负载情况与平均负载情况的比值,单位为%

张安民,等.面向e-航海时空数据处理的负载均衡算法

3  4种算法的负载均衡效果
Fig.3 Load Balancing Effect of Different Algorithms
       可以看出,STFPM算法能够将DataNode的负载维持在一个更为稳定和均匀的范围内,其负载均衡效果优于其余3种方法。这是因为STFPM算法综合考虑了影响负载均衡效果的多个因素,通过赋予权值的形式融入具体的量化过程中,因此STFPM算法对于DataNode节点的性能、可用带宽等指标有着更为精确的处理和把握;此外,由于考虑到了数据文件间的潜在联系,其数据迁移策略效率更高,这也使得系统的负载能够更好的维持在稳定状态。
由于在海事数据中心环境下,负载状况和频繁模式出现的概率均会随时间呈现明显变化,因此设计实验对不同负载强度下和频繁模式所占比重不同的情况下的STFPM算法性能进行测试,结果如表2所示。

2 不同负载强度下节点间负载量方差的标准化结果(张安民,等.面向e-航海时空数据处理的负载均衡算法
Tab.2 Standardized Results of Variance of Load between Nodes under Different Load Intensities
负载强度/min
STFPM
Capacity Scheduler
基于动态带宽分配的Hadoop负载均衡方法
BitDew
张安民,等.面向e-航海时空数据处理的负载均衡算法
17
63
100
67
张安民,等.面向e-航海时空数据处理的负载均衡算法
21
49
100
58
张安民,等.面向e-航海时空数据处理的负载均衡算法
16
37
100
41
3 不同频繁模式比例下节点间负载量方差的标准化结果( 张安民,等.面向e-航海时空数据处理的负载均衡算法
Tab.3 Standardized Results of Variance of Load between Nodes under Different Frequent Mode Ratios
频繁模式比例
STFPM
Capacity Scheduler
基于动态带宽分配的Hadoop负载均衡方法
BitDew
张安民,等.面向e-航海时空数据处理的负载均衡算法
7
63
84
100
张安民,等.面向e-航海时空数据处理的负载均衡算法
16
37
100
41
张安民,等.面向e-航海时空数据处理的负载均衡算法
42
56
100
68
       可以看出,在上述参数设置下,STFPM的效率始终高于其余3种方法,且随着负载强度的增大和频繁模式比重的增加,其性能优势逐步变大,这是因为STFPM的负载迁移操作效率更高,避免了大量无用的数据迁移,因而在负载倾斜更加严重时,具有更好的性能表现。
4.2数据迁移频率对比分析
较为复杂的负载均衡算法通常能够带来相对精确的负载均衡效率,但在面对海量异构数据时,过于频繁的数据迁移将会带来系统性能在某些场景下(如系统负载随时间变化波动较大时)的大幅下降。因此,本文设计了实验来对STFPM算法负载迁移模块的激活频率,即数据迁移或修改索引默认路径的频率进行模拟。在时间参数的选取上,以30 min为时间单位,统计单一时间单位内系统上执行数据迁移操作和索引项默认路径修改操作的总和。由于其他算法均未主动利用海事数据中心上普遍存在的备份机制,因此STFPM算法的性能仍优于该实验的结果。实验结果如图4所示,其中横轴的数字代表对应的时隙(长度为30 min),纵轴代表在当前时隙内的文件迁移总数,单位为次。

张安民,等.面向e-航海时空数据处理的负载均衡算法

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算法的优势将会进一步扩大。

5 结束语

本文针对当前e-航海时空大数据在密集型计算环境下Hadoop平台上负载均衡算法未能考虑数据间和任务间关联的不足,综合考虑了海事数据中心集群上影响性能的多个因素及数据文件单元间、任务单元间的关联,针对海事时空数据的特点,提出了STFPM算法,并通过对部署STFPM算法的效果进行分析,与其它3种主流方法作出对比,得到若干有指导意义的结论:本文提出的STFPM算法在负载均衡效果、数据迁移频率和Hadoop实际性能上均优于其他三种算法。它的应用将极大程度上提高海事信息的处理效率,为面向e-航海时空大数据密集型的Hadoop负载均衡问题的研究提供了新的思路。相比较成熟算法,STFPM算法仅在实验室环境下进行模拟实验,节点数较少,处理数据总量较小,实验环境较为单一,下一步工作将实现该算法在海事数据中心的复杂环境下进行自动部署,同时也将对海事大数据关联分析和挖掘的相关机制做进一步研究。
作者简介:张安民(1966—),男,安徽亳州人,研究员,博士,主要研究方向为e-航海和海洋测绘。E-mailanmin_zhang@126.com
基金项目:国家重点研发计划项目(2018YFC1407400)

联系微信:chxszx2018

以上是关于张安民,等.面向e-航海时空数据处理的负载均衡算法的主要内容,如果未能解决你的问题,请参考以下文章

常见的负载均衡技术

手写分布式负载均衡算法

16.负载均衡的配置场景和调度算法

16.负载均衡的配置场景和调度算法

负载均衡各个算法JAVA诠释版

分布式系统常见负载均衡算法