吴永旺,饶银辉,庄伟涛,子文江,杨捍东,余 蓉,洪晓斌
(1. 华南理工大学机械与汽车工程学院,广东 广州 510640; 2. 广船国际有限公司,广东 广州 511462)
无人船是一个集智能传感、人工智能、大数据、云计算、物联网等新技术为一体的全新产业领域,已引起国内外密切关注[1-2]。相比于有人驾驶船舶,无人船具有无人操控、可适应作业环境复杂多变等特点[3]。因而其自主性、安全性、可靠性等要求更高,对无人船进行全面的测试以验证其能正常行使相关功能,不仅是无人船交付使用的前提,也是无人船服役期间必不可少的环节。依据无人船建造流程,无人船测试分为三个阶段:内场测试、系泊试验、航行试验。其中,内场测试项目主要包括船体新材料检测、电气检查等,系泊试验项目主要包括电磁兼容、自扶正测试、通信距离测试、通信安全检测等,航行试验项目主要包括推进系统传动性能测试、推进系统谐波检测、航行控制及自主航行测试、操纵性测试、避障测试、多船协同性能测试等。目前无人船测试主要以分环节测试为主,测试项目、信号提取及数据记录等过于分散,且操作工序多、耗能大、侧重点不明显,无法做到有效快速综合实时测试[4]。
Hadoop是目前主流的一种分布式计算平台,其能够灵活地给用户提供富有弹性和个性化的资源及计算服务,Hadoop平台可作为船舶大数据处理的基础平台[5]。例如, Lee H W[6]等设计了可用于船舶和离岸工业的Hadoop大数据平台,能够有效管理和处理船厂现有大数据;库波[7]基于Hadoop平台构建了舰船远程实时监控系统,实现了从海量舰船监控数据中高效挖掘出有效信息;王宁等[8]建立了以Hadoop为基础架构的舰船云存储数据中心密文访问控制机制,解决了舰船云存储数据的安全问题。可见将Hadoop平台应用于无人船测试中能够很好解决测试过程中数据量大、数据种类多、数据记录分散的问题。
本文针对无人船测试数据存储及运算数据提取的需求,提出一种基于HDFS的无人船测试多源数据存储优化方法,并通过实验验证系统运行效率。
Hadoop集群具有良好的扩展性,能够较好应对无人船测试数据数据量大、种类多的问题,并能满足对无人船测试数据进行多尺度深度挖掘的需求[9]。无人船测试Hadoop云平台总体框架如图1所示,平台由三层结构组成:现场采集层、现场监测层、远程管理层。现场采集层主要由负责采集无人船运动状态信息、环境信息等无人船综合评价所需信息的传感器群组成,各种信息汇总到数据采集器后,通过无线方式发送到现场监测层。现场监测层主要由现场服务器和无线电台组成,其中无线电台用于现场服务器和数据采集器之间的通信,现场服务器负责将无线电台接收到的测试数据进行预处理后上传至云中心,并可以在现场实时监测无人船相关状态。远程管理层即云中心,主要是基于Hadoop搭建的分布式集群运算平台,负责无人船测试数据的存储、运算,并得出无人船综合评价报告,用户可通过远程访问云中心服务器查看和下载评价报告。其中,无人船测试数据的存储是无人船综合评价的前提,良好的数据存储方案能够有效提高无人船综合评价作业运算效率。
图1 无人船测试Hadoop云平台总体框架
由于无人船测试过程中需要采集大量数据,且这些数据的来源不同,因而在将这些数据存储到HDFS时将不可避免地出现失效和重复。如果将所有数据全部直接存储进HDFS,不仅造成存储空间浪费,还会严重降低存储效率,影响后期数据挖掘分析运算的效率,同时又必须有一定的冗余以保证在部分节点出现故障时系统仍能正常运行。因此,除常规的数据预处理操作外,无人船测试多源数据还需要进行存储容错以降低Hadoop集群中节点的故障失效率,进行重复数据删除以保证HDFS的存储性能[10-11]。
无人船测试多源数据存储容错机制主要采用冗余复制和纠删码两种数据冗余手段实现。
1)无人船测试多源数据复制容错
无人船测试多源数据复制容错主要是复制无人船测试现场各传感器采集的数据,同时存储源数据及其副本,其中,复制副本的份数取决于Hadoop集群的规模。各个副本分别存储于不同的节点,当某一个或多个节点出现故障时,Hadoop将从正常节点存储的副本中提取数据继续运行。
2)无人船测试多源数据纠删码容错
无人船测试多源数据纠删码容错来源于通信技术中的纠删码,其可容许HDFS存储数据中数据帧的丢失,本文采用数据存储系统中常用的Reed-Solomon(RS)码作为无人船测试多源数据纠删码。在无人船测试多源数据存储过程中,利用纠删码实现丢失数据的恢复,可提高无人船测试数据存储的可靠性。无人船测试过程中数据存储纠删码容错实现原理如图2所示,将无人船测试多源数据文件A分成k个数据块,然后将k个数据块映射到n个编码块中(n>k),当存储节点出现故障时,只需要通过n个编码块中的k个便能使数据恢复。对无人船进行测试时,所采集的数据种类多且数据量大,将传感器采集的数据映射到不同的节点,如果有节点失效时即可通过纠删码使丢失的数据得到修复。
图2 无人船测试多源数据纠删码容错实现
无人船测试多源数据HDFS存储的纠删码容错程序执行流程如图3所示。首先Client对无人船测试多源数据文件进行数据块划分,并将数据块发送到HDFS中的各DataNode节点存储,当HDFS中的NameNode节点发送纠删码策略到DataNode节点时,HDFS中的DataNode节点根据NameNode节点发送信息的不同对存储的无人船测试数据块执行编码操作或解码操作。当发生数据块失效时,HDFS中的DataNode节点负责恢复失效数据块并将其送返Client。
图3 无人船测试HDFS纠删码容错执行流程
无人船测试多源数据存储容错解决了节点失效故障的情况,但是在长期多次的测试过程中数据量会增多,而且测试数据以大量的小文件及分块数据形式存在,大量存在的重复数据块和重复文件会影响HDFS存储能力。针对上述问题,可分两个层级对重复数据进行删除优化,并与HDFS的节点功能相结合,从整体上提升HDFS存储性能。首先对重复数据文件进行查询删除,然后对其余不重复的数据文件进行重复数据块查询删除。无人船测试多源数据两级重复数据删除存储架构如图4所示。
图4 无人船测试HDFS两级重复数据删除存储架构
1)无人船测试HDFS文件级重复数据删除
无人船测试多源数据HDFS存储系统中文件级重复数据删除程序执行流程如图5所示。首先Client采用SHA-1算法计算无人船测试数据文件的指纹,并将指纹信息发送至HDFS中的NameNode节点。HDFS中的NameNode节点在收到无人船测试数据文件指纹后,通过搜索文件指纹数据库进行指纹数值匹配,若存在相同的值,则进行文件删除操作,若不存在相同的值,说明文件没有重复,HDFS中的NameNode节点将该文件的指纹送返Client,同时将HDFS中各DataNode节点信息一并返回,以便接下来进行数据块指纹查询时使用,至此无人船测试多源数据HDFS存储系统文件级重复数据删除完成。
图5 无人船测试HDFS文件级重复数据删除流程
2)无人船测试HDFS数据块级重复数据删除
无人船测试多源数据HDFS存储系统中数据块级重复数据删除程序执行流程如图6所示。首先Client对经过文件级重复数据删除的非重复数据文件使用避免偏移问题的动态块长度方法进行数据块划分,其中动态块长度通过程序自动设置指定。特别地,由于HDFS中的DataNode节点默认数据块大小为64M,因此内存过小的无人船测试多源数据文件同样当做数据块来进行处理。数据块划分好后,Client计算数据块指纹,并根据端口处各DataNode节点信息,将数据块指纹发送至对应的HDFS中的DataNode节点进行重复指纹匹配。HDFS中的DataNode节点采用全局重复数据删除策略搜索所有数据块指纹数据库中的指纹进行比较,若存在相同值,则进行数据块删除操作,若不存在相同值,HDFS中的DataNode节点将该数据块的指纹送返Client。至此,无人船测试多源数据HDFS存储系统数据块级重复数据删除完成。
图6 无人船测试HDFS数据块级重复数据删除流程
根据无人船测试需求和项目在建无人船测试场现有条件,选取无人船测试过程中所用的北斗、DGPS、激光雷达、声纳、视觉传感器、罗经传感器、姿态传感器、波浪传感器、气象传感器等多传感器数据作为数据源,以无人船测试场云中心现有的5节点完全分布式Hadoop集群作为运算平台进行无人船测试多源数据HDFS存储实验。实验平台的整体数据流如图7所示。
图7 无人船测试实验平台整体数据流图
实验过程中主要程序执行流程如下:
1)将无人船测试现场采集的数据存储于现场监测层的服务器本地目录。
2)将无人船测试数据文件按字节数从小到大排列。
3)使用Hadoop系统默认程序依次将无人船测试数据文件写入HDFS,然后提交无人船测试评价作业并记录作业运算时间。
4)清空HDFS存储,使用前文所述的无人船测试多源数据HDFS存储优化方法依次将无人船测试数据写入HDFS,然后提交无人船测试评价作业并记录作业运算时间。
5)比较优化前后数据块规模这个变量对无人船测试评价作业运算速率的影响。
优化前后基于无人船测试多源数据HDFS存储的无人船测试评价作业运算时间随测试数据块规模变化的趋势如图8所示。由图8可知,随着数据块规模的增大,运算时间也随之呈线性增长趋势;相比之下,基于优化HDFS存储的无人船测试评价作业运算效率比起采用Hadoop系统默认程序时有明显提升。为进一步比较优化前后基于HDFS存储的无人船测试评价作业运算效率提升程度,分别计算优化前后每一个数据块的平均运算时间如图9所示。可见,虽然采用存储优化方法后基于HDFS存储的无人船测试评价作业运算效率有一定提升,但其数据块平均处理时间基本保持不变,这表明Hadoop集群单个数据块处理时间对数据块量级的变化并不敏感。通过简单的计算可以得到,采用前文所述存储优化方法后基于HDFS存储的无人船测试评价作业运算效率比起采用Hadoop系统默认程序存储时提升约20%。
图8 数据块规模对无人船测试评价作业运行时间影响图
图9 无人船测试评价作业中平均每个数据块的处理时间
针对无人船测试需求和数据量大且融合运算复杂特点,结合Hadoop平台技术优势提出解决方案,重点探讨无人船测试多源数据HDFS存储方法的研究,并进行实验验证。结果表明,采用本文所述存储优化方法后基于HDFS存储的无人船测试评价作业运算效率比起采用Hadoop系统默认程序时提升约20%,可满足无人船测试过程中的数据存储需求,为基于大数据的无人船质量综合评价工作奠定基础。后续将运用大数据技术对基于HDFS存储的无人船测试数据进行深入挖掘分析,进一步开展无人船质量综合评价研究工作。