面向高分辨率影像分布式处理的HDFS存储研究

2018-06-14 05:46王敬平沈晨周洁黄子君
数字技术与应用 2018年3期
关键词:分块高分辨率分布式

王敬平 沈晨 周洁 黄子君

(中国电子科技集团公司第三十二研究所,上海 201800)

随着遥感卫星技术和成像技术的不断发展,“高分”系列卫星覆盖了从全色、多光谱到高光谱,从光学到雷达,从太阳同步轨道到地球同步轨道等多种类型,构成了一个具有高空间分辨率、高光谱分辨率、高时相分辨率和高辐射分辨率能力的对地观测系统。高分辨率遥感数据进行数据处理,已不是简单的数据密集型或计算密集型模式,而是数据密集和计算密集的混合模式,高分影像地面数据处理系统已逐步由集中式的高性能计算模式向分布式的存储及计算模式发展。本文从高分影像分布式处理的实际需求出发,分析了开源分布式存储系统HDFS的存储特性,围绕影像分布式计算进行了存储优化,改进后的HDFS分布式文件系统能够较好的支撑影像分布式计算,提高了地面影像数据处理的效率。

图2 HDFS的数据分块图解

1 传统Hadoop的分布式存储及计算

1.1 HDFS分布式存储原理及数据分块

1.1.1 HDFS分布式存储

HDFS(Hadoop Distribute File System),是为以流的方式存取大文件而设计的,适用于GB、TB及PB级的数据存储,具有一次写多次读的特性。HDFS采用主从(Master/Slave)的架构模型,如图 1所示,一个HDFS集群是由一个Namenode(名称节点)和多个Datanode(数据节点)组成的(不考虑Namenode的高可用配置)。名称节点作为主服务器,主要负责客户端对文件的访问操作和文件系统命名空间的管理,数据节点主要负责数据的实际存储。

1.1.2 HDFS数据分块

HDFS将文件划分成不同的块(Block),数据块大小默认为64MB,可以在Hadoop的配置文件hdfs-site.xml中对这个值(dfs.Block.size)进行自定义,单位是Byte。

HDFS在顺序划分文件的时候,当文件最后一个块没有达到一个标准块的大小时,也会被视为其本身大小的一个块,而不是占用一个标准块的存储空间,保证文件在HDFS上存储时占用的实际存储空间与文件大小一致。如图2,以一个300MB大小的文件为例,在Block size被设置为64MB的HDFS上会被如下分割成5个文件块:

1.2 MapReduce并行计算原理

MapReduce是一种分布式计算模型,主要是解决海量数据的计算问题,将复杂的并行计算过程高度地抽象为两个函数:Map和Reduce。Hadoop中的MapReduce是一个使用简单的软件框架,基于MapReduce编写出来的应用程序可以运行在大规模集群上,并以—种可靠容错的方式并行处理的数据集可达到上T级别、P级别,实现了Hadoop在集群上的任务和数据的并行处理与计算。

图4 高分辨率影像并行计算设计思路

图5 基于HDFS的影像数据分块(a)

如图3所示,MapReduce处理大数据集的过程,把大数据集分解成若干小数据集,每一个(或几个)数据集分别由集群中的一个节点进行处理,并生成中间结果,这些中间结果随后又由大量的节点合并,形成最终结果。

2 高分辨率影像的分布式存储及并行计算

高分辨率影像并行计算建立在海量分布式存储之上,使用数据节点作为计算节点,尽最大努力保证在那些存储了数据的节点上执行计算任务。这种方式可有效地减少数据在网络中的传输,降低任务对网络带宽的需求,避免使网络带宽成为瓶颈,所以“本地计算”可以说是节约带宽最有效的方式。

将要处理的影像文件语义分成多个输入分片,在多台数据节点上同时进行计算。作业管理节点为每个输入分片构建一个Map任务,最后再由一个或多个Reduce任务将所有Map任务处理的结果进行汇总。

如图4所示,三个数据分片分别存储在三个数据节点上,作业被分成三个Map任务,一个Reduce任务。三个Map任务首先并行执行,产生的中间文件通过网络传输给另一个数据节点,执行Reduce任务,最后把输出结果写入到海量分布式系统中。

在GeoTIFF影像的文件头中,存储了用于描述影像的所有元数据信息,包括像元数据的位数、数据偏移量、调色板数据、数据压缩方式、图像形态、图像行列编排方式、图像通道(波段)、分辨率、坐标、投影方式等。这些元数据信息在影像的识别、解析、处理中发挥着重要的作用,失去这些元数据信息将导致像元数据难以被识别及利用。

如图5所示,采用HDFS的分块策略对GeoTIFF影像进行数据分块(假设影像数据300MB,数据分块大小为64MB),文件被分成5个Block,并将会被存储到不同的Datanode节点上。

从图5中,可以发现只有其中第一个Block中包含有影像的元数据,且该元数据为完整影像的元数据信息,但其他的数据块仅为二进制流数据,未包含任何元数据信息。基于HDFS的影像数据分块,在分布式计算运行时,负责计算Block2到Block5的影像处理算法将只能拿到文件块中存储的字节流,不能获取偏移量、数据类型、分辨率、坐标等信息,该影像处理算法也就无法识别和处理该数据块的图像像元。

如图6所示,也可以调整HDFS中的dfs.Block.size的大小,使其大小超过影像的大小(如设置dfs.Block.size = 320MB),遥感影像文件会完整的存储在一个文件块中,相应的影像处理算法即可以完整的读取影像的元数据信息及像元数据,并对影像进行操作。但高分辨率影像一般分景存储,而每景数据一般都在几百MB,甚至GB以上,若设置dfs.Block.size为相应大小,这样也就无法对影像数据进行细粒度的分布式并行计算,也失去了使用HDFS存储的意义。

因此,在高分辨率影像分布式并行计算时,我们应该着重分析和优化:对高分辨率影像进行语义分割,提高影像的处理效率,并对处理后的影像仍然存储在分布式存储系统中,以及提供有效的语义合并手段。

图6 基于HDFS的影像数据分块(b)

图7 高分影像语义分块三种方式

3 面向高分辨率影像处理的存储优化

3.1 高分辨率影像的语义分块及合并

高分辨率影像的语义分块的目标是解决高分辨率影像在分块之后,依然能够作为独立高分影像被影像处理算法识别及处理,并且能够适应基于Hadoop的分布式存储与计算。

高分辨率影像存在三种图像数据划分方式,如图7所示,其中(1)为矩形块;(2)表示水平条带;(3)为竖直条带,在处理不同影像时,可以结合实际处理任务来选何种划分方法:像素级的处理并行化分支较小,进行数据划分时较为简单,特征处理如线条所示,按照竖直条带和水平条带来划分,在目标级、特征级处理期间,需要结合相应的问题、并行计算支撑环境来选择具体的划分方式。需要特别关注的是,为了适应一些类型的图像处理算法(例如卷积运算),影像在切分时相邻条带之间也可以保留一定量的冗余,例如矩形块方式切割,数据块的有效区域是a*b,但切割保留的区域则要包含冗余区域,图中分块0-0的保留区域是(a+△a)*(b+△b),分块1-1的保留区域是(△a+a+△a)*(△b+b+△b)。

如图8所示,高分辨率影像语义分块与合并的流程示意图:

(1)语义分块:在获取原始影像数据的元数据信息和像元数据后,采用图7中的一种分块方式(例如矩形分块),生成多个Block1、Block2、Block3等,然后依据原始影像数据的元数据信息和分块位置信息,分别对各个Block进行影像数据信息重建,形成各个独立分块影像文件,可被影像处理算法识别及处理;

(2)语义合并:各个分块影像数据经过影像处理之后(例如影像配准、几何校正等),生成新的影像文件数据,在解析获得各个新的影像文件的元数据信息和像元数据,依据各个分块位置信息(含冗余区域信息),合并得到新影像数据文件,并更新影像数据的元数据信息。

图8 高分辨率影像的语义分块与合并

3.2 HDFS相关模块设计优化

(1)语义分块、语义合并函数。使用GDAL构建Image Semantic Block、Image Semantic Merge两个函数,用于实现对高分影像数据的语义分块和语义合并功能。

(2)HDFS Client。在LibHDFS接口中,重写Write和Read接口函数,集成ImageSemanticBlock、ImageSemanticMerge函数,改造HDFS的分块和合并的机制,并提供能够独立访问HDFS数据块影像的独立接口IndependentBlockRead、IndependentBlockWrite。

(3)HDFS Namenode。在数据文件元数据信息中,需添加每个影像分块位于整个影像中的位置信息,在INodeFile类中增加blockArea信息和getBlockArea函数。

(4)HDFS Datanode。在HDFS写入数据块时,会对所有分块计算校验和,并在读取时验证校验和,需在ChecksumFileSystem类中,增加影像分块元数据校验和变量metaDataChecksum和setMetaDataChecksum函数。

4 结语

本文介绍了高分辨率影像的分布式存储及并行计算的原理及过程,分析了传统HDFS存储无法适用高分影像分布式并行计算的原因,研究了高分辨率影像的语义分块与语义合并的方法与技术,并对HDFS进行了改造与优化,最终实现了面向分布式并行计算的高分辨率影像的分布式存储,有效支撑并提高了高分影像的分布式处理效率。由于开源HDFS系统非常庞大,我们在对HDFS的改造过程中,存在不能完全理解HDFS的所有源代码,所以围绕HDFS的改造与优化的稳定性、可靠性以及代码的影响域,还有待进一步测试与验证。

[1]孟祥辉,李浩川,姚璐,王少坤.分布式并行计算技术在遥感数据处理中的应用[J].电子技术与软件工程,2016,(24):174.

[2]马伟锋,李伟.遥感影像数据并行计算中数据分配策略研究[J].浙江工业大学学报,2016,(6):270-274.

[3] 程付超,苗放,杨文晖,陈垦.适用于海量遥感影像的分布式计算框架设计与实现[J].物探化探计算技术,2014,(5):358-361.

[4]刘建华,毛政元.高空间分辨率光学遥感影像分割方法研究综述[J].遥感信息,2009,(6):95-101.

[5]PLAZAA, DU Q, CHANG Y L, et al. High performance computing for hyperspectral remote sensing[J].IEEE Journal of Selected Topics in Applied Earth Observa-tions and Remote Sensing,2011,4(3):528-544.

猜你喜欢
分块高分辨率分布式
高分辨率合成孔径雷达图像解译系统
分块矩阵在线性代数中的应用
反三角分块矩阵Drazin逆新的表示
基于自适应中值滤波的分块压缩感知人脸识别
基于DDS的分布式三维协同仿真研究
基于多分辨率半边的分块LOD模型无缝表达
高分辨率对地观测系统
基于Curvelet-Wavelet变换高分辨率遥感图像降噪
高分辨率遥感相机CCD器件精密热控制
西门子 分布式I/O Simatic ET 200AL