姜青涛 梅丹
北京道达天际科技有限公司 北京 100089
近些年来随着各类卫星持续发射并投入使用,卫星数据信源、卫星载荷类型、卫星数据产品种类不断增加,由此产生了巨量的卫星遥感数据。以高分卫星数据为例目前高分一号、高分三号、高分四号、高分六号已形成了可见光、微波遥感、立体测绘、高光谱等载荷;分辨率范围也覆盖了几十米、几米到亚米级;数据存储量每日接收量的单位从GB上升到TB,各级数据产品年产生量已达PB级,由此给数据管理带来的挑战日趋严重。如何建立一套兼顾高可靠性存储和便捷地检索,如何建立数据的全生命周期管理模式,如何方便扩展后续卫星信源扩展以满足后续卫星数据的不断接入,在大数据技术背景下建立一套开放式的卫星数据全生命周期管理体系已迫在眉睫。
传统卫星数据管理模式,主要依托目录固定分类对各类卫星数据进行组织,这样的方式问题在于:第一,固化的数据目录划分和分类对数据多条件检索和查询要求不易实现;第二,受物理存储单元的限制,小碎文件的存储依然占用同等存储空间导致存储空间利用率低;第三,存放在文件服务器或者NAS[1]存储的数据能够通过外部访问致使数据安全性不高。利用Elasticsearch、FastDFS等大数据技术可解决传统存储和管理方式的不足。
Elasticsearch是一种分布式海量数据检索与分析技术[2],其底层基于Lucene实现,支持的数据高达PB级别,其倒排索引的算法效率更优于传统数据库(如:Mysql)的B+Tree算法,能极大提高查询检索的效率,对于大数据量的卫星数据的查询能实现近实时性响应速度。
在Mysql数据库和Elasticsearch中存储一千万条记录,做增加、删除、修改、查询的性能测试,其中传统数据库是针对主键做的增删改查操作,测试结果如下表所示:
表1 Elasticsearch与传统数据库对比
由上表可以看出,Elasticsearch在大数据量下的增加、删除、修改虽然不如传统数据库,但查询性能远远优于传统数据库,为此使用Elasticsearch作为搜索引擎会极大的提升系统的效率,并且减少对传统数据库的压力。
FastDFS[3]是以C语言开发的一项开源轻量级分布式文件系统,它主要功能包括:文件存储、文件同步和文件访问以及高容量和负载均衡。主要解决大数据量的存储问题,能够方便地提供在线访问数据的功能。随着卫星数据的增多,对文件服务器的存储空间提出很大需求,FastDFS能够方便地进行空间的扩容,通过增加Storage的数量或增加Group的方式,并修改Traker的配置可达到文件服务器的扩容的目的。
为了保障系统的安全性存储,FastDFS可以设计成为安全可靠的系统,首先FastDFS本身通过加密将存储在其中的文件名进行加密,为了实现FastDFS中的文件无法通过Url的方式不安全进行访问,可以通过网关对其进行统一管理,保证数据安全性。
使用FastDFS与Elasticsearch的结合思路解决了大数据下的存储与检索问题,使用Elasticsearch来存储管理在FastDFS数据的索引,管理卫星的元数据以及数据源信息,并对数据进行分级存储,即使在PB级数据的存储下,系统也能达到毫秒级别的响应速度。
实现数据的全生命周期的管理,需要在数据进行入库前选择数据的在线时长,一旦数据的生命周期达到设置值,系统将通过定时机制对该数据删除,减少磁盘空间的占用。Elasticsearch在此期间对数据进行全生命周期的管理,对数据进行关键词检索、区间检索、空间地理位置检索以及基础元数据信息检索。而FastDFS提供存储数据实体的功能,如需对检索结果数据下载或在线浏览可以通过Elasticsearch中索引到数据存储在磁盘中的位置。
(1)数据组织模型
将各类卫星数据以驱动化校验的方式来达到数据的标准化,校验完成后形成待归档数据。卫星数据一般分为原始数据及产品数据,需要根据不同的驱动来进行校验、管理。
(2)数据存储模型
数据存储模型基于Elasticsearch和FastDFS,使用FastDFS实现数据本身的存储,Elasticsearch存储对应数据的相关元数据信息以及数据存储在FastDFS中的索引信息,实现存储与索引分离的方式,分类存储分类检索,极大地结合卫星数据的特点:数据量大、元数据信息量大,不仅能存储数据,更能精确快速地检索数据。
(3)数据管理模型
卫星数据量大,类型多,这也对分类存储和数据的生命周期提出要求,分类存储可以通过数据驱动的方式来提取数据的元数据信息,形成数据集的概念,生成一类数据的特有字段信息,这样方便、清晰、明了,数据整洁是实现管理的重要目的;其次管理数据的生命周期也是必要的,随着卫星数据的日益的存储,会产生很多历史无用的冗余数据,对于无效数据的定期删除会极大地减少磁盘空间的占用,节省宝贵的空间资源。在对数据进行归档时就应该适当设置好数据的存活周期,到期后系统能自动对此类数据进行删除,减少人工处理,况且在如此庞大的数据两下,依靠人工判别数据进行删除本身就是一项不易的工作。设置数据生命周期基本流程如下:
图1 设置数据生命周期流程图
使用Elasticsearch与FastDFS结合的方式能够实现存储与索引分离,将数据存储在FastDFS中,将索引以及卫星数据的元数据信息存储在Elasticsearch中,用户根据数据类型选择数据驱动,后续即便是有新的卫星数据接入,只需要根据数据类型新增驱动即可,能够方便实现数据的开放式拓展,实现系统与数据之间的快速适配。
用户在选择文件路径进行上传时,必须要选择文件在系统中的存活周期,随着系统的使用会产生很多历史的垃圾冗余数据,对此类数据会占用大量的磁盘空间,同时对Elasticsearch的检索性能造成一定的影响,对于此类数据需要设置定期删除策略,第一、系统定时随机对数据进行检索,判断如果数据的存活周期小于30天则将此类数据存储在Redis中,定期对其进行删除;第二、系统在做检索操作时对数据进行生命周期判断,如果在生命周期内,直接将数据以及索引删除,不返回任何结果,否则返回查询的数据。
系统实现时序图如下:
图2 系统时序图
数据驱动是为不同数据提供校验规范化处理的需要,卫星数据种类繁多,格式也不尽相同甚至有些数据差别很大,为了方便各类数据的接入,提高系统的适配性,需要将卫星数据以驱动的方式进行校验以及提取元数据信息,一类数据对应一个数据驱动,数据驱动只需要定制对一类数据进行校验提取即可,所以后续卫星的接入只需要新增数据驱动即可。
根据数据驱动可以校验数据并提取数据的元数据信息,并将提取出的元数据信息存入到Elasticsearch中,待文件上传成功存储到FastDFS中后将文件存储位置一并存储在Elasticsearch,不管是检索数据信息还是对数据进行下载查看都可以对数据进行还原。
选择数据的生命周期后上传,上传成功后返回Id信息,系统会根据策略进行生命周期的管理。
查询检索,根据数据关键词在Elasticsearch中进行数据的查询检索,在大数据量下系统的查询检索能够达到毫秒级别。
对比将数据存储到磁盘进行分目录式的管理,采用FastDFS与Elasticsearch结合的方式,大大提升了系统的效率以及安全性。FastDFS的文件可以通过网关进行统一配置,实现文件访问的安全性。如下图所示,对于传统文件目录的访问方式的耗时相当于系统设计优化后的上千倍。
图3 系统优化前后对比图
管理大数据量的卫星数据需要提供安全可靠的系统来对数据进行维护,在提升系统速度的同时更应该考虑数据的安全性,使用Elasticsearch与FastDFS的结合能够满足要求。首先相比于文件目录式的管理方式,使用驱动检验管理数据,精确对卫星数据的查询检索的速度相比于优化前提升了上千倍,同时避免了直接访问文件的不安全因素。其次对数据设置在线生命周期,减少系统的垃圾数据冗余,节省磁盘存储空间,同时随着系统的使用时间越久,对此类数据的删除能够对系统进行优化,因为对无用数据的检索也会消耗系统性能,减低系统的检索效率。将Elasticsearch与FastDFS结合对数据进行全生命周期管理能够以灵活、高效、安全、稳定的方式解决大量卫星数据的存储管理问题。