论文部分内容阅读
随着大数据的兴起,人们对于大数据处理技术的研究不断深入。为了满足不断增长的数据存储和处理的需求,越来越多的应用向分布式的方向发展。Google提出的MapReduce及其开源实现Hadoop,能够实现分布式环境下大规模数据的批量处理,并且具有优异的可扩展性和高容错性。Spark通过简单地扩展MapReduce,增加高效的数据共享,也就是弹性分布式数据集(RDD),从而能够有效地满足大部分作业的性能需求。在一些应用领域中,Spark在接近或者超过专有系统性能的同时,也提供更强大的容错能力,并允许这些作业之间相互结合。随着Argo全球观测网的建设,到目前为止,全球己经积累了大量的海洋Argo环境观测数据。海洋Argo数据具有数据量大、离散分布的特点,使用传统技术进行数据查询处理的效率太低,而且大多数的实际应用要求数据均匀、连续分布,从而便于数据的可视化和进一步分析,这就要求使用合适的空间插值算法对海洋Argo数据进行插值。由于海洋Argo数据积累的数据量比较大,且插值计算比较复杂,因而需要MapReduce和Spark这样的分布式编程框架来对插值计算进行分布式处理,提高插值效率。本文依托国家海洋公益项目“海洋环境信息云计算与云服务体系框架应用研究”,对云环境下海洋Argo数据的查询处理与插值问题进行了深入的研究,主要做了如下工作:(1)针对海洋Argo数据的数据量比较大,传统的数据查询方式效率低的问题,提出一种云环境下适合海洋Argo数据查询处理的并行索引结构。首先,将原始Argo数据进行预处理之后存储到HDFS上,然后根据海洋Argo数据的特点和实际需求,建立基于哈希划分和空间网格划分的双层网格索引结构。该索引结构具有扁平化、适合分布式处理的特点,能够有效地提高数据查询效率。(2)针对云环境下海洋Argo数据的查询需求,基于所建立的双层网格索引,提出多种Spark下的并行查询算法,包括ID查询算法、空间范围查询算法和时空范围查询算法,充分利用双层网格索引的过滤功能和Spark的分布式并行处理能力,具有较高的查询效率。(3)针对插值算法计算复杂、数据量比较大时插值速度过慢的问题,将现有的插值算法移植到Spark上,并加以改进,提出PIRPS算法和混合参考点选取策略,利用Spark框架来实现插值计算的分布式处理,提高插值效率。同时基于Spark实现了两种常见的空间插值算法,并比较了两种算法的适用性。(4)本文最后通过大量的实验,对基于Spark的海洋Argo数据查询处理和插值算法的效率进行验证。实验结果表明,本文所提出的索引结构和相关算法能够有效地提高Argo数据查询和插值处理的速度,改进后的插值算法的性能优于原算法。