基于Hadoop 的海量卫星影像大数据管理系统设计与实现
2022-07-09袁昱纬杨亚鹏夏明卓
袁昱纬 卫 强 杨亚鹏 夏明卓
(中国人民解放军91977 部队,北京 100036)
0 引言
随着成像卫星分辨率的不断提高和星座规模的不断增大,卫星对地观测获得的高质量、大范围影像数据越来越多,卫星影像在农林生产、环境监测、地理信息系统等领域也获得广泛应用。 同时,卫星影像的数据量也呈几何级数增长,对影像数据管理系统的功能性能需求越来越高,如无法及时、高效地进行组织管理,卫星影像海量的数据规模将成为其应用的严重障碍。
Hadoop 是目前存储、管理和处理大数据的主流开源平台之一, 能够提供高效的海量卫星影像数据管理与处理的环境,具有可靠性高、运行效率高、扩展性好、易于维护等优点,在影像管理与应用领域取得了良好的应用效果。 因此,本文通过分析卫星影像大数据管理系统特点与功能需求,基于Hadoop 平台提出了系统总体构架,并通过研究相关关键技术,设计和实现基于Hadoop 平台的海量卫星影像大数据管理系统。
1 卫星影像大数据管理系统特点与功能需求
卫星影像大数据管理系统的特点主要包括:(1)支持的卫星影像数据规模大, 存储的数据量已由GB级提高至TB 级、甚至PB 级,且支持多分辨率、多类型的卫星影像;(2)大规模卫星影像的组织管理效率高,卫星数据的导入、索引、修改、读取等组织管理效率不随影像数据量的增大而显著增大, 当数据集已存在TB 级规模的数据量时, 仍然具有较高的组织管理效率;(3)支持卫星影像元数据管理,能够组织管理卫星影像的各类属性信息,如影像名称、卫星标识、卫星成像参数、空间分辨率、成像区域、成像时间等;(4)易于工程实现,软件部署和日常操作便捷。 综上,本文将卫星影像大数据管理系统的功能需求划分为以下三个阶段。
(1)卫星影像的入库与管理。 主要包括卫星影像数据及其元数据的数据库构建、 存储与管理功能,多源异构数据能够在统一构建的平台上存储,且支持分布式物理存储。
(2)卫星影像的检索。 能够在数据库中高效、灵活地开展检索功能,包括对卫星影像元数据中各参数条件的组合查询,包括基于成像时间、卫星标识、地理位置、分辨率等级、影像类型等查询条件。
(3)卫星影像的分发与应用。 主要根据卫星影像的检索结果向用户分发卫星影像及相应的元数据,并提供读取接口,为用户的行业应用提供影像基础。
2 系统总体构架
海量卫星影像大数据管理系统的总体构架共分为数据层、支撑层、服务层和用户层,如图1 所示。
图1 海量卫星影像大数据管理系统的总体构架示意图
其中, 数据层和支撑层是整个管理系统的核心,本文采用Hadoop 平台的HDFS、MapReduce、HBase 三大核心组件构建了总体框架中的数据层和支撑层。 其中,数据层提供多源卫星影像数据、元数据以及其他相关信息的物理存储,基于HDFS 文件系统构建各物理节点,并提供大数据访问接口和冗余备份;支撑层的MapReduce 和HBase 通过访问HDFS 实现数据的管理和检索,其中MapReduce 分为Map 和Reduce 两个部分。 服务层则通过进一步封装,实现影像并行入库、并行分块、并行构建金字塔等并行处理功能。
3 关键技术分析
3.1 HDFS 文件系统
HDFS 文件系统能够分布式地部署于通用、 廉价的硬件设备上,该文件系统为主从结构,节点主要包括名字节点(NameNode)和数据节点(DataNode)两大类,如图2 所示,其中名字节点用于数据的管理和调度;数据节点为若干个,数据节点的一个节点一般对应一台硬件设备,每个节点则由若干文件分块(Block)构成。 在HDFS 中,文件及其冗余备份被分散为多个文件分块,存储于若干个数据节点中,名字节点负责维护文件与数据节点、文件分块之间的映射关系并进行管理和调度。 HDFS 文件系统的节点之间一般采用TCP/IP 协议进行通信。
图2 HDFS 文件系统结构示意图
3.2 基于MapReduce 的影像分块与影像金字塔
影像分块通过将卫星影像在空间中进行划分,影分影像瓦片,以提高在任意给定空间区域中进行影像组织和检索的效率,也是构建影像金字塔的基础。 根据实际存储设备IO 性能和网络性能, 影像瓦片的大小一般为256×256 像素或128×128 像素。 影像金字塔通过预先将影像瓦片处理成不同分辨率等级,以提高卫星影像在不同分辨率等级的组织和检索效率,是典型的采用空间换时间的策略。 金字塔模型中的低分辨率影像瓦片可通过隔行抽取等重采样的方式得到。
在构建影像金字塔时,本文采用MapReduce 进行并行重采样来构建高层级,流程如图3 所示。 首先对高分辨率的影像瓦片进行分组,分组的数量决定了并行处理的线程数;其次将每组影像瓦片分配至Map 的各节点,由Map 各节点分别进行重采样,形成低分辨率影像瓦片; 最后通过Reduce 对各个Map 节点中的重采样结果进行合并,形成金字塔模型中的低分辨率层级。 金字塔模型除最高分辨率层级外,都可通过该方式获得。
图3 基于MapReduce 的影像金字塔构建流程示意图
3.3 基于HBase 的影像的索引与入库
根据影像金字塔模型的空间结构,以及常用的墨卡托投影特点,本文采用四叉树索引的方式组织全球范围的卫星影像。 四叉树索引中节点的每次划分都是将空间划分为四个范围相同的子空间,分别对应于四个子节点,四叉树的不同层级对应影像金字塔模型的不同层级,四叉树的节点对应金字塔模型中的一个分块,如图4 所示,其中四叉树的叶子节点代表金字塔模型中的最高分辨影像瓦片。
图4 金字塔模型与四叉树索引关系示意图
将四叉树索引及其对应的影像瓦片存储到HBase数据库时,四叉树索引各层级内每个节点对应一个行列号编码,该编码可通过下式得到。
其中,X和Y分别为对应四叉树节点的行号、列号,X和Y分别为对应四叉树节点左上角对应的经度和纬度,为每个影像瓦片边长的经纬度度数,roundup 为向上取整。
四叉树索引及其对应影像瓦片的并行入库流程如图5 所示。 首先基于四叉树索引组织的影像瓦片及其编码导入HDFS 文件系统,然后将影像分块按照四叉树结构进行分组,每组影像分块分配至Map 的各节点,再通过Map 的各节点将存储于HDFS 中的各组影像瓦片导入HBase 的HRegion 中,存储时影像分块以其分辨率等级和行列号命名,实现基于HBase 的影像的组织与存储。 上述影像入库流程中,文件的入库操作由各个Map 节点并行完成, 影像块分组之间、Map节点之间以及HRegin 之间没有影像数据交换, 入库的效率与单线程入库相比大大提高。
图5 卫星影像并行入库流程示意图
3.4 Hadoop 构架下的卫星影像读取
影像的读取是对外发布的关键。 由于本文将影像瓦片以其所在分辨率等级和行列号命名,因此用户在读取卫星影像时,可通过直接给出所需卫星影像的分辨率等级和位置即可定位所需的影像分块。
读取时, 首先用户给向HBase 请求影像分块数据,请求时提供影像分块的分辨率等级和地理位置等参数; 其次根据本文第3.3 节中的方法将地理位置解析为行列号,HBase 根据分辨率等级和行列号进行检索,并调用HDFS 文件系统接口,对指定的影像瓦片数据进行读取;最后,将读取的影像瓦片按照其行列位置关系合并,形成完整的卫星影像反馈给用户。 读取流程如图6 所示。
图6 卫星影像读取流程示意图
4 应用实例
基于本文提出的影像大数据管理特点与需求以及系统总体构架, 采用Hadoop 平台开发了卫星影像大数据管理系统。 在Linux 操作系统中使用采用Java和C++语言进行开发,Hadoop 采用2.10.1 版本,HDFS文件系统构建了1 个名字节点和4 个数据节点,并在此基础上实现了卫星影像的分块与入库、影像检索和读取、影像浏览等功能,能够获得较高的卫星影像管理效率。
5 结语
本文通过研究基于Hadoop 的文件系统、 影像分块与金字塔模型、影像索引与入库、影像读取等方面的关键技术, 设计并实现了基于Hadoop 平台的海量卫星影像大数据管理系统,为卫星影像数据的工程应用进行了有益的探索。 同时,如何基于Hadoop 平台将卫星影像处理任务分配至若干计算设备上进行,并支持计算设备的随机加入和退出,实现进行卫星影像的分布式处理,还值得进一步深入研究。