基于SpatialHadoop的空间大数据拓展研究

时间:2024-12-27 17:48:04 来源:作文网 作者:管理员

摘 要:文章针对空间大数据的处理框架SpatialHadoop作了系统性的研究。鉴于其在空间大数据实际应用中所存在的无法实现图属关联以及大多数空间分析空间分析不支持的问题对其做了一定程度上的扩展,首先为SpatialHadoop的默认数据类型添加了唯一的标识,并以此为基础关联了空间对象的属性信息。其次还增加了SpatialHadoop对其他类型数据的解析功能,最后扩展了空间操作对属性信息的支持。扩展后的SpatialHadoop将基本支持现有空间数据所常用的功能。

关键词:SpatialHadoop;数据类型;空间索引;空间操作;空间数据

Hadoop孕育自对海量数据的分布式存储和并行处理的应用,但因为针对的领域不同,其在对空间数据的支持设计上存在着明显的不足之处,它的核心框架不能对空间数据的空间特性做良好的支持。现有基于Hadoop的空间数据应用主要集中在特定的数据类型(如轨道的范围查询)和数据操作(如点集的最邻近查询)方面[1],SpatialHadoop应运而生。

SpatialHadoop是第一个基于MapReduce计算框架的空间大数据处理框架,它对空间数据具有原生支持的特性[1]。

对于空间数据而言,位置和属性都不可或缺。然而,SpatialHadoop的核心框架并没有考虑空间对象的属性信息,纯粹的位置信息也不利于对空间数据进行复杂的空间分析。为了契合实际应用,必须对现有SpatialHadoop框架作必要的扩展。

1 空间大数据框架

1.1 SpatialHadoop简介

SpatialHadoop对Hadoop做了全面的扩展[2],使其核心功能可以支持空间数据[1]。SpatialHadoop扩展了高级语言Pig Latin并取名为Pigon,不仅保留了Pig Latin的原本特性,同时还增加了支持空间数据的特性。不仅如此,SpatialHadoop还在框架中增加了两级空间索引结构[1-4],较大程度地提高了处理空间数据的效率。另外,SpatialHadoop基于MapReduce框架还开发集成了两种基本空间组件和一系列的空间操作[2-4],大大简化了空间大数据应用的开发工作[5]。

1.2 SpatialHadoop的基本功能

SpatialHadoop集群扩展自Hadoop集群,它和Hadoop集群一样都是拥有一个主节点和多个从节点的结构,主节点用来接收用户的查询请求,并将请求的任务(Mapป/Reduce任务)分割为较小的任务,这些小的任务将分配给不同的从节点来执行[1-2,4]。

SaptialHadoop在分布式文件系统(Hadoop Distributed File System,HDFS)堆文件的基础上增加了空间索引,通过增加索引克服了Hadoop仅支持无索引的堆文件的限制[1]。并将其组织成两级空间索引结构,即全局索引和本地索引[1-4]。

全局索引保存在主节点的内存中,而每一个本地索引都存储在从节点的文件块中[1-4]。将索引组织成全局和本地两个层次是因为这样的分离模式符合MapReduce的编码范式[4]。全局索引用于准备MapReduce工作,而本地索引用于处理Map任务[2]。

空间索引都在Hadoop的HDFS中得以实❅现,这样可以高效的访问存储在HDFS中的空间数据,而不仅仅是让数据成为堆在Hadoop中的文件[2-3]。对于空间信息而言,增加时间维度的信息具有重要的意义,在SpatialHadoop中可以通过在存储层增加时空索引信息来实现,分片时将考虑空间和时间两种要素[2,4]。

SpatialHadoop为空间数据集建立了一套空间索引机制,那么在空间数据的处理和操作时怎样获取这些索引。为此SpatialHadoop在MapReduce层新增了两个新的组件,SpatialFileSplitter和SpatialRecordReader[1-4],可以通过这两个组件获取空间数据建立的索引。

空间索引的建立以及MapReduce层新增的组件保证了SpatialHadoop可以实现高效的空间操作功能。SpatialHadoop实现了3种基本的空间操作,分别是范围查询、最邻近点查询和空间连接操作[3]。SpatialHadoop还调用CG_Hadoop计算几何库函数实现了计算几何操作[4,7]。

SpatialHadoop并没像HiveQL和Pig Latin等语言一样从底层开发一种新的空间开发语言[2,5]。它在Pig Latin的基础上进行了空间方面的扩展,增加了对空间数据类型、空间基础功能以及空间操作的支持,并且遵循OGC的标准[5]。这样不仅使其保留了Pig Latin语言的原☼始功能,同时也加入了空间结构。由于Pig Latin不允许定义新的数据类型,所以Pigon重写了ByteArray数据类型,以此来定义新的空间数据类型。Pigon还支持OGC标准的空间谓词[3,5]。

1.3 SpatialHadoop的优势

SpatialHadoop修改了Hadoop的核心处理框架,使其更加适合处理空间数据,Hadoop和SpatialHadoop的理逻辑对比如图1所示。

可以看到Hadoop和SpatialHadoop的处理方式是有区别的。

(1)Hadoop MapReduce层设计的目的是为了处理不带索引的堆文件。而SpatialHadoop中的空间操作是以带空间索引的文件为输入的。

(2)在任务分割过程中,SpatialHadoop增加了一个过滤函数可以过滤不需要处理的数据,从而减少map操作的任务量,以增加处理速率。

(3)Hadoop的map处理的是键值对的数据,而SpatialHadoop直接处理的则是小任务的本地索引文件。此外,SpatialHadoop的一些空间操作,如空间连接等,是对二元操作,需要两个输入文件作为输入条件,而Hadoop并不具备这样的能力。 目前,SpatialHadoop提供的空间索引包括网格,R树,R+数,四叉树,STR,STR+,K-D树,Z曲线和希尔伯特曲线索引[6]。

4.3 建立空间索引

通过MapReduce工作建立索引将经历了3个阶段,即分区、本地索引和全局索引[1-2]。

(1)在分区阶段,一个文件将被按照空间分布情况进行分区。邻近的对象将尽量被存储在一起,也就是说一个分区中的对象不存在空间隔断的现象。

确定分片数n:

确定n的大小依赖于以下公式[6]:

其中,S为空间数据集的大小,B为HDFS设置的存储文件块的大小,α是开销比(默认值为0.2),即重复记录和本地索引所占用的开销。

确定分区的边界,每个单独的分区都将有一个矩形作为它的边界。由于普遍存在数据集空间分布不均匀的情况,计算出来的边界的大小大多数是不一样的。输出的结果将以n个矩形代替n个分区。

(2)分区,利用第二步确定的n个矩形初始化MapReduce的工作任务来对输入的数据集进行实际分区,map程序结束后每条记录(记作r)都会被划分到一个确定的分片(记作p)中,这将生成一系列的键值对[6],相同键p的键值对将被组织成一个分片p被传入Reduce程序进行下一步的操作。

为了防止分区太大而不能用一个块完全存储,可以将分区分割成每个达到64 M大小的小块。同时,对于不能达到64 M大小的块将通过添加冗余数据而保证每个块都具有相同的大小[1-4]。

本地索引是通过Reduce函数来实现的,它将每个分片都用每行一条记录的形式存储起来作为分区中对象的索引。本地索引文件被组织为块(64 M)的大小,以便进行空间操作时能够将每一个本地索引文件用一个map工作任务来处理[2-3,6]。

添加全局索引的目的是为了对所有分区进行索引,一旦分区任务结束,SpatialHadoop将初始HDFS的concat命令,将所有的本地索引关联成一个文件[6]。

主节点将在内存中开辟一块空间存储这个文件,这就是SpatialHadoop的全局索引文件[3-4]。

4.4 获取空间索引

全局索引的所有信息都存储在主节点的内存中。可以调用Spatialhadoop的API检索全局索引[1-2]。

5 空间操作的扩展

空间操作可以通过常规的MapReduce程序来实现,相比本地的空间操作,SpatialHadoop的空间操作的输入是空间数据的空间索引而不是空间数据本身,当然,SpatialHadoop中的空间索引也和传统的空间索引有所区别,SpatialHadoop的本地局部空间索引中包含了空间数据的实体信息。另外,相较于常规的MapReduce函数,SpatialHadoop允许在map和reduce过程中实现过滤函数[1-4],过滤函数可以对计算的内容进行筛选,这样可以尽可能地减少job的map任务数量。

空间数据的价值往往隐藏在数据之中,所以有空间数据就少不了空间数据的分析,为此SpatialHadoop提供了3种基本空间操作[1-4],同时还集成了计算几何操作算法库CG_Hadoop[4,7]。在提供了这些基本的空间操作之后,实现空间分析就简单得多了。为了方便展示空间大数据,SpatialHadoop还提供了可视化的操作。当然,因为SpatialHadoop的出发点是不带属性的纯坐标形式的空间数据,所以这些空间操作功能还需要一些必要的扩展和改进。

SpatialHadoop在众多空间操作中选择实现了3种基本空间操作,分别是范围查询、最邻近查询和连接操作[1-4]。CG_Hadoop是一套基于MapReduce的计算几何操作算法库,目前,它包含了5种基本的计算几何操作,分别是合并多边形、凸包、轮廓线、最远点对和最近点对[7]。但是,实际上的空间操作是离不开属性信息的,而这3种操作都是基于纯坐标文本数据的,这并不能满足我们的需求,为此,必须在原有的基础上做属性支持上的扩展。

在前面的章中,我们已经对数据类型做了扩展并关联上了属性信息,那么,这样就比较简单了,对于涉及属性上的操作,只需要在属性表中进行相关操作,之后再通过ID映射到实体信息上即可。

空间数据的可视化对其应用具有重要的意义,纯粹的数字对大多数人来说是没有意义的,只有将分析的结果以图形的形式展示出来,才能极大地发挥空间数据的作用和价值。传统的可视化技术依赖单一的机器来加载和处理数据的可视化,这种模式将无法处理大数据中的空间数据。

因此,SpatialHadoop提供了一套高效的可视化工具,尤其在空间数据量达到一定程度而我们又想通过图像的形式展示出来时候,这些工具将会格外有用。

SpatialHadoop支持两种类型的图像,即单级和多级图像。所谓单级图像就是一张具有确定分辨率的图像或者说一张图片。在单级图像可视化中,输入数据集被可视化为一个用户指定像素大小的单一的图像。一个单级图像的质量具有有限的分辨率,这意味着用户不能放大看到更多的细节。因此,SpatialHadoop还支持多级图像,由不同缩放级别的瓦片组成。一个多级图像是由在不同缩放级别的许多瓦片小图像组成,而每个小图像将展示不同的区域。这允许用户缩放或平移图像从而看到具体区域的更多细节。

自然而然地,这一套可视化工具也没有考虑到属性信息的可视化问题,由于实体信息和属性是通过ID直接关联的,因此,在制图时直接将属性信息一并显示在地图上就可以了。

6 结语

SpatialHadoop从存储、MapReduce框架、操作以及开发语言4个方面对Hadoop做了一个全方位的扩展,从而使得SpatialHadoop对于空间数据具有较强的亲和力,显著地增强了处理空间数据的能力。 但是在实际应用中其存在的问题也尤为明显,它不支持属性数据,同时也没有线性数据类型。为此,需要对其进行二次扩展,关联属性信息,采用了HBase存储关联的属性表,并且为空间对象添加了唯一的耸丁U獠唤鼋饩隽耸粜怨亓的问题,同时也解决了在建立空间索引时空间对象位序错乱的问题。另外由于HBase存在时间戳的关系也在一定程度上建立了时间维度的信息。为了解决复杂的空间操作的问题,我们也需要对现有的空间操作做一些必要的扩展,目的是为了支持需要处理空间属性的空间操作。

[参考文献]

[1]ELDAWY A,MOKBEL M F.A demonstration of SpatialHadoop:an efficient mapreduce framework for spatial data[J].Proceedings of the Vldb Endowment,2013(12):1230-1233.

[2]ELDAWY A,MOKBEL M F.The ecosystem of SpatialHadoop[J].Sigspatial Special,2015(3):3-10.

[3]ELDAWY A,MOKBEL M F.SpatialHadoop:a MapReduce framework for spatial data[C].Seoul:IEEE International Conference on Data Engineering,2015:1352-1363.

[4]ELDAWY A.SpatialHadoop:towards flexible and scalable spatial processing using mapreduce[C].Zeyna:ACM SIGMOD Phd Symposium,2014:46-50.

[5]ELDAWY A,MOKBEL M F.Pigeon:A spatial MapReduce language[C].Chicago:IEEE International Conference on Data Engineering,2014:1242-1245.

[6]ELDAWY A,ALARABI L,MOKBEL M F.Spatial partitioning techniques in SpatialHadoop[J].Proceedings of the Vldb Endowment,2015(12):1602-1605.

[7]ELDAWYA,LI Y,MOKBEL M F,et al.CG_Hadoop:computa✫tional geometry in MapReduce[C].Orlando:ACM Sigspatial International Conference on Advances in Geographic Information Systems,2013:294-303.

[8]SpatialHadoop.Analyze your spatial data efficiently[EB/OL].(2017-12-13)[2018-01-16].http://spatialhadoop.cs.umn.edu/.

[9]百度文库.shp文件详细格式[EB/OL].(2014-06-23✈)[2018-01-16].https://wenku.baidu.com/view/e0bb64702f60ddccdb38a038.html.


热门排行: 教你如何写建议书