首页 理论教育 基于MapReduce/Spark的遥感数据并行处理技术

基于MapReduce/Spark的遥感数据并行处理技术

时间:2023-06-26 理论教育 版权反馈
【摘要】:MapReduce是基于HDFS的海量数据分布式处理计算框架,采用数据分片、分发到各个节点进行计算、结果汇总的过程完成数据分布式处理。针对MapReduce这一局限,Spark通过创建RDD的方式将从HDFS中读取的数据实行了缓存,从而避免了频繁的数据读写操作,大大地节省了通信开销。表6-3和表6-4对比了当分布式集群中的节点数分别为1、3和5时,基于MapReduce和Spark的分布式聚类算法分别所需要的运行时间及相应的加速比。

基于MapReduce/Spark的遥感数据并行处理技术

MapReduce是基于HDFS的海量数据分布式处理计算框架,采用数据分片、分发到各个节点进行计算、结果汇总的过程完成数据分布式处理。分布式并行运算包括特征提取和聚类。

一、基于MapReduce的分布式特征提取

分布式环境下的特征提取算法步骤如下(如图6-20所示):

(1)对于原始遥感图像数据,通过MapReduce框架将其以整幅图像为最小单位分片后分发给各个数据节点,由每个节点执行相应的Map任务;

(2)在Map任务中首先检测图像中包含的目标,然后分别提取目标的全局特征(GLCM特征)、局部特征(SIFT)和ConvNet特征;

图6-20 基于MapReduce的遥感图像分布式并行特征提取

提取全局特征(如GLCM)时,选取代表性参数(如能量、对比度、逆差矩、熵和差异性等5种参数),将这些参数组合成一个5维向量。

提取SIFT特征时,每幅目标图像中会检测到几十到上百个特征点,这些特征点都会被表示成一个128维的向量。根据图像的复杂程度,提取出来的SIFT特征文件为N行128维特征向量(N为检测到的特征点数目)。最后所有的SIFT特征文件要经过进一步聚类生成视觉词典,然后再根据视觉词典将每幅目标图像映射为一个BoVW向量。

提取ConvNet特征时,首先将目标图像归一化为大小为224×224的标准图像,然后输入到训练好的卷积神经网络中,将卷积神经网络作为一个特征提取器提取相应的ConvNet特征。

(3)每个节点执行完Map任务后,将提取的特征文件上传到HDFS中,提取的特征向量写入HBase,存储方案参见表6-1。

可见,MapReduce通过“分而治之”的思想,将较为耗时的海量遥感图像批处理任务分解为一个个针对单幅图像的小任务,在集群中分发给各个节点并行处理,大大加快了图像处理的速度。表6-2给出当分布式集群的节点数分别为1、3和5时,以上3类特征提取所需要的运行时间及相应的加速比。实验结果表明,随着分布式集群节点数量的增加,特征提取算法并行运行的速度显著提升,消耗时间显著下降;随着处理数据量的增加,分布式集群运行相对于单机运行的加速比渐渐提升,证明了分布式算法对处理海量数据有着良好的性能。可见,分布式集群处理海量数据计算任务时,通过增加分布式集群中的节点,可以有效降低任务运行的时间开销,这对实时处理海量遥感数据具有重要的意义。

表6-2 基于MapReduce的分布式特征提取算法运行时间与加速比

二、基于Spark的分布式聚类

在提取了遥感图像的低层局部特征(如SIFT)之后,为了构建中层视觉特征词袋模型,需要通过聚类算法(如K-Means聚类、层次聚类、DBSCAN密度聚类、谱聚类等)对低层局部特征进行聚类,生成聚类中心。以经典的K-Means算法为例,聚类的基本步骤如下:

(1)设置初始聚类中心:从候选数据集中,随机选择k个数据样本作为初始聚类中心;(www.xing528.com)

(2)聚类:逐个读取数据对象,根据预设的距离度量模型将候选集的所有数据进行分类,每个数据样本属于与之距离最近的聚类中心所代表的类别;

(3)生成新的聚类中心:所有数据样本分类完成之后,计算每个类别中所有数据样本的平均值,并将其作为新的聚类中心;

(4)完成聚类:当所有的聚类中心都不再移动或者当聚类次数达到阈值条件,输出聚类结果;否则重复(2)~(4)步。

基于MapReduce的分布式聚类的算法步骤如下:

(1)初始化阶段:读取遥感图像的局部特征文件(SIFT文件),从中随机选取k行特征向量作为初始聚类中心,并将其写入聚类中心文件;

(2)Map阶段。将聚类中心文件分发给各个节点,读取SIFT文件的每一行(128维特征)并将其分发给各个节点;由各个节点并行计算该行特征与k个聚类中心之间的距离,并将该行特征分配到与之距离最近的聚类中心。聚类中心的编号和特征以<Key,Value>键值对的形式输出;

(3)Reduce阶段。对聚类结果进行汇总,利用Reduce的合并功能,将键值相同的记录划分到同一聚类中心进行特征归并,计算所有特征的平均值作为新的聚类中心;

(4)更新阶段。对比新的聚类中心与原聚类中心,如果不同,则更新聚类中心,用新聚类中心的值取代原聚类中心的值,写入聚类中心文件;

(5)判断阶段。如果所有聚类中心不再移动,或者聚类次数达到预设阈值,输出聚类结果;否则继续迭代更新聚类中心。

对比可见,基于MapReduce的分布式聚类对于单机聚类的改进在于:分布式集群中每个节点只处理一部分特征记录,即将特征记录划分类别的计算分散到各个节点上并行完成,从而有效提高了聚类算法的运行速度。

如前所述,由于MapReduce需要不断执行从HDFS中读写数据的操作,造成了较大的通信开销。因此,在处理迭代次数较多的算法时效率有限,而聚类算法往往需要数百上千次迭代才能得到较为理想的结果。针对MapReduce这一局限,Spark通过创建RDD的方式将从HDFS中读取的数据实行了缓存,从而避免了频繁的数据读写操作,大大地节省了通信开销。基于Spark的分布式聚类与基于MapReduce的分布式聚类算法步骤类似,只是在初始化阶段中,增加了创建RDD的步骤,具体的算法步骤在此不再赘述。

表6-3和表6-4对比了当分布式集群中的节点数分别为1、3和5时,基于MapReduce和Spark的分布式聚类算法分别所需要的运行时间及相应的加速比。

表6-3 基于MapReduce集群的分布式聚类算法运行时间与加速比

表6-4 基于Spark集群的分布式聚类算法运行时间与加速比

实验结果表明,随着分布式集群中节点数目的增加,两种分布式平台下的聚类算法的运行速度均有显著提升。随着处理数据量的增加,两种分布式平台相对于单机运行的加速比渐渐提升。可以注意到,当处理数据量较小时(如SIFT特征数据量为150MB时),分布式集群中节点数增加时,加速不明显。这是由于集群启动会造成一定的时间开销,处理数据量较小时,这种启动消耗与分布式计算节省的时间成本相比在一个量级,加速优势不明显;此时单纯增加集群节点数量甚至可能会造成效率不升反降。而随着处理数据量的增加,集群启动消耗与分布式计算节省的时间相比几乎可以忽略,因而可以产生明显的加速效果,证明了分布式集群适合处理海量数据的并行计算任务。此外,对比两种分布式平台,发现当节点数为3和5时,Spark集群可以产生比MapReduce集群高20倍以上的加速比,充分验证了Spark集群中RDD机制在节省通信开销方面的有效性。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈