基于Spark的遥感数据索引系统的设计

2022-10-23 12:22马海昕
信息记录材料 2022年8期
关键词:存储系统副本服务器

马海昕

(山西财贸职业技术学院 山西 太原 030031)

0 引言

遥感数据作为一种特殊的监测数据,记录了位置、时间以及分布对象等基本特征,基于遥感数据的挖掘可以为环境监控、绿化以及灾害预警提供帮助。为了充分挖掘遥感大数据的存在价值,对遥感大数据进行存储和计算决定着整个系统的预警能力的好坏。随着云计算的发展,在驾驭大数据方面的能力越来越大,云计算作为一种服务,可以让越来越多的大数据应用都集中在云计算平台中。由于不同的应用程序均具有自身独特的功能,因此出现了基于云计算平台的大数据处理框架,根据不同处理框架的功能,实现对底层存储系统的需求。Spark作为一个开源框架,采用先进的有向无环图执行机制,实现数据流的循环操作,一次导入完成多次迭代,非常适用于多次迭代的大数据分析。同时,遥感系统在处理数据时存在索引策略不完整问题,影响计算的效率。因此,提出了基于Spark的数据计算引擎,提高对遥感数据的处理效率,利用多索引技术增加索引部分,以实现Spark的高效运行。

1 大数据计算——Spark

Spark作为一种大数据计算引擎,API功能可以让开发者将精力专注在程序开发上;交互式的方式实现数据的分布计算;多种不同的计算完成多种复杂的运算。Spark在计算时会将数据作为一种数据结构存储在内存中,设计架构如图1所示[1]。

2 遥感信息系统

遥感信息系统分为数据存储系统与数据处理系统两大部分。

数据存储系统中,元数据分为遥感数据的图片信息与数据矩阵,遥感数据在进行显示时需要对图片进行查询,如果元数据数据库不存在,会增加遥感数据查询的工作量。遥感数据在存储时以文件夹的形式进行储存,HDFS以文件树的方式建立索引进行查询,在遥感数据的查询中,可以通过多种不同的索引方式进行遥感数据的查询,这些数据查询算法需要建立在遥感数据的底层文件系统中,并且可以独立存储在数据库中,以保存自己的索引信息。

数据处理系统以Spark作为引擎,通过Geotrellis库增加对遥感数据的支持,Spark以Scala语音为基础,Geotrellis是Scala的一个分支[2],可以进行遥感数据的读取,并对遥感数据进行分隔,生成不同的文件便于使用。遥感数据在进行数据计算时,可以调用多种计算机资源,大数据系统包含多台终端,对计算资源进行合理分配,需要通过资源管理系统进行实现。在进行索引系统设计时,以HDFS为底层存储系统,在进行数据存储时,只消耗物理磁盘存储的空间,多余的空间需要通过Spark进行计算。

3 索引系统设计

3.1 MIGIS索引算法

3.1.1 四叉树优化算法

四叉树数据结构包含数据、地理范围以及下一层数据索引三大内容,四叉树在进行数据插入时可以保持结构的平衡。通过在四叉树结构中引入数据区域,为每一个四叉树数据分配一个地理范围,然后根据四等分生成矩形。根据四叉树的结构,结合R树查询方式进行算法优化[3]。

3.1.2 GeoHash编码算法

GeoHash在遥感数据中是一种常见的索引方式,GeoHash编码作为一条固定长度的字符串,一个字符串代表一个矩形区域,在该矩形区域中,所有的坐标点共享一个共同的编码。GeoHash将地理坐标化为一个方形,以二分法的方式分化坐标位,将0/1的编码以5位为一个字符,按照特定的方式转化为GeoHash字符串序列。

3.1.3 十字链优化算法

十字链的数据结构包含左右链表中的所有数据[4],相邻的数据以链表的方式进行连接,在进行数据查询时以坐标轴的方式进行数据查询。在索引生成中,根据遥感数据所在区域,为数据在索引表中的位置进行标记,生成整个索引表。为了实现随机访问数据,可以在索引表中增加一份数据位置矩阵,让整个遥感数据作为索引矩阵的坐标,让整个矩阵形成一个指针链表为遥感数据服务。

3.2 MIGIS系统集成

3.2.1 存储系统

MIGIS存储系统的结构如图2所示,该结构起到连接的作用,内存索引系统存储一些热数据,以保存时间较久的数据。该系统的设计可以解决重复查询的问题,节约一定的查询资源。查询到的遥感数据会形成文件通过接口进行传递,让计算程序对接收到的文件信息直接进行遥感数据的提取并进行计算。在进行数据录入时,数据会通过接口组件将数据存储在HDFS中,HDFS会对数据进行切割,设置成相应的块大小进行存储,如果图片大小超过块存储设定会自动进行切割,这样会造成元数据文件过多产生内存消耗。MIGIS系统将数据元属性进行抽象化设计,将地址及相关信息以Value进行存储,在数据上建立三种不同的索引方式,并针对不同的数据完成不同方式的索引,以便进行区分[5]。

3.2.2 处理系统

MIGIS系统的遥感数据处理采用Spark计算引擎,通过启动Spark计算程序,向程序提交任务完成计算,Spark计算系统从HDFS中进行遥感数据的提取,并通过Geotrellis进行处理,转化为可以计算的文本后,再进行分布式计算,在Spark的计算中,需要有大数据组件的支撑,以便保证计算可以高效运行。遥感数据处理系统在运行的过程中会通过访问方式提交任务,为了提高服务器的运行效率,可以通过构建消息队列的方式进行任务的存储,以便有序地执行各项任务。在大数据组件中,Kafka组件作为消息生产者和消息消费者,消息列队以跳表的方式进行构建,以便更快地查询队列中存在的数据[6]。

MIGIS通过多索引系统实现与遥感存储系统的连接,在进行系统计算时,通过Kafka进行计算任务的传输,Spark接收到任务后,解析后通过多索引查询系统进行数据位置的获取,通过查询到的数据位置,直接访问HDFS中的文件并完成计算,并将计算的结果存储在HDFS中。

4 系统实现

MIGIS系统实现如图3所示,整个系统采用多种大数据存储和处理组件作为处理平台,以此实现数据管理、数据处理以及网页展示三大内容。在数据管理系统中,通过HDFS作为数据存储软件,选择三个服务器作为元数据的存储平台,Redis作为多索引数据库,在数据库中有多个不同的数据表,与HDFS完成对应后进行数据的完整性对比,通过PostgreSQL作为元数据组件为数据提供服务。MIGIS系统以Spark集群为主[7],结合多个服务器资源,将所有的资源统一由Yarn进行管理,Spark计算程序通过Geotrellis库对遥感数据进行读取,不需要进行文件类型的转换。当对数据进行处理时通过Kafka发起任务后,会将任务统一存储在消息列表中,利用系统空闲时间进行消息处理。

系统依靠多索引技术进行索引系统的设计,通过与HDFS的结合增加系统的容错性[8],让查询速度更快。在系统实现时,利用多索引系统中的索引算法完成优化,在处理中完成对多个数据库的查询,以提高系统的处理效率。在四叉树的索引算法中,将遥感数据整合为一个矩形范围,让数据更加符合真实的矩形位置,再根据R树思想将矩形进行包围。完成数据结构的优化后,适当减少查询次数,将编码的字符控制在6位就可以查询到更多的遥感数据。保持查询区域与遥感数据的一致性,将其作为数据范围内的遥感数据。十字链算法通过优化索引的结构,不仅要进行十字链索引的数据存储,还要让十字链表在短时间内获取查询锚点,方便后续的查询。

最后进行处理流程的设计,通过网页APP选择计算的区域,让服务器的前端接收到相关的数据,并对数据包进行封装后发送到服务器后台;当服务器的后台接收到数据处理的结果后,提取数据,并对数据进行封装发送到Kfaka模块中;Spark数据处理模块在接收到Kfaka发出的命令后会对数据进行查询,生成查询命令后,利用Redis进行查询区域的选择,选择最合适的查询算法,将查询的结果统一反馈到Spark程序中;Spark会从HDFS进行数据的提取,根据数据位置选择最优计算,实现资源的节约,并根据提交的查询任务进行计算程序的设计,对计算的结果进行渲染;当Spark将计算结果存储到HDFS中后,会将计算的结果进行反馈并建立热数据信息,以URL的方式返回到服务器的后端,利用PostgreSQL中的遥感数据,反馈结果供服务器后台下载,当服务器接收到数据信息后,展示给使用者进行浏览。

5 结果分析

对多索引系统的性能进行分析,在实验中,采用同等的数据集,利用5种不同的索引方式进行查询速度的对比,实验结果如图4所示。红线表示MIGIS系统。MIGID系统在查询中效率极高,相比于四叉树的查询,快了整整一倍。MIGIS系统的时间复杂度保持在O,查询图片仅需3 μs,相比于四叉树的查询速度而言,具有极大的优势。四叉树在查询时,会向下进行查询,而MIGIS系统会根据所查询到范围进行行列的提取,以实现对数据的查询。大多数情况下,MIGIS的查询量远远高于四叉树,并且在查询的过程中,部分查询度为O(1),查询速度更快,加快了Spark的计算。

由于大多数的系统不会采用副本机制提高系统的性能,在不同的计算任务下,多副本与单副本在性能对比方面有较大不同。多副本多索引相比于单副本多索引而言,节约了更多的任务时间,因为在计算时,采取的是本地计算,只对本地的资源进行计算,多副本可以完成对不同的机器进行计算,不会产生数据转移,但是单副本会产生时间消耗,增加任务时间。在与四叉树进行对比时,对100个遥感数据进行查询,提交任务后逐步上升任务量,完成任务的时间也在增加,实验过程中MIGIS的系统消耗时间远远低于四叉树,主要是因为MIGIS在进行数据查询时所消耗的资源少,可以更快速地对线程进行处理,因此在查询速度方面更加优于四叉树。当MIGIS系统与四叉树进行并行度实验时,对系统中的查询任务进行数据对比,当多索引达到峰值时,由于MIGIS系统所消耗的资源更少,因此在进行任务初始化时占据了更大的优势,会有更多的任务进行处理。由于消耗的时间少,因此可以单独进行任务查询,以提升系统的整体性能。

6 结语

MIGIS系统解决了不同组件之间的通信困难问题,采用消息队列的方式满足系统之间的信息传递;利用接口简化操作,通过一个指令就可以完成对不同数据库的调度;利用多索引系统作为存储系统与计算系统的桥梁,对遥感数据进行处理。系统利用多索引对各个算法进行优化,并根据不同的计算场景选择合适的算法;最后对程序进行封装,以保证系统的稳定。

猜你喜欢
存储系统副本服务器
分层式大数据存储系统缓存调度策略与性能优化
一种基于3 阶段实现的高性能云存储计算*
主动容错云存储系统的信息自适应管理调度模型
面向流媒体基于蚁群的副本选择算法①
天河超算存储系统在美创佳绩
面向4K/8K的到来 存储该怎么办?
2018年全球服务器市场将保持温和增长
《口袋西游—蓝龙》新副本“幽冥界”五大萌点
用独立服务器的站长注意了
定位中高端 惠普8路服务器重装上阵