基于EMD距离的数据流分布式相似性连接方法与流程

文档序号:13534228阅读:491来源:国知局
基于EMD距离的数据流分布式相似性连接方法与流程

本发明属于数据流相似性连接技术领域,特别是基于emd距离的数据流分布式相似性连接方法。



背景技术:

随着数据获取设备的不断进步和数据获取技术的快速发展,如何对源源不断、快速产生的数据流进行高质量的数据分析成为工业界和学术界普遍关注的问题。数据流相似性连接返回两个数据流上相似的元组对,是分析和挖掘数据流的重要操作,广泛应用于事件检测和数据去重等实际应用中。

由直方图数据模型表征的数据元组(简称为直方图元组)构成的数据流间的相似性连接,每个直方图元组可以形式化表示为p={p1,...,pn},其中pi∈[0,1]表示数据对象出现在直方图第i个数据桶的概率值。直方图因为提取过程简单,被广泛应用于对复杂数据对象特征的概率分布进行建模。直方图相似性度量函数的选择直接影响直方图数据流相似性连接的结果质量。相比于以欧式距离为代表的lp范式距离函数,emd距离(earthmover’sdistance)不仅量化了直方图对应数据桶概率值之间的相似性,还量化了直方图临近数据桶概率值之间的相似性,因而对概率分布之间的微小偏移不敏感,具有更强的鲁棒性。基于emd距离的相似性搜索因而被广泛应用在基于内容的图像检索或视频监控、冗余图像识别、对象跟踪和传感器网络数据监控等重要领域。

基于emd距离的数据流相似性连接问题颇具挑战。一方面,数据流源源不断、快速到达的特性要求连接算法必须快速高效。另一方面,计算两个直方图元组之间的emd距离需要求解一个时间复杂度高达o(n3logn)的线性规划问题(n为直方图所包含的数据桶的数目),这无疑给设计与实现高效的基于emd距离的数据流相似性连接技术带来巨大挑战。面对emd距离的高计算复杂度,本领域有三种解决思路。第一种思路是尽可能减少emd距离的计算次数,因为其是主要的计算瓶颈,包括两类方法:“扫描—求精”法和“索引—求精”法。这两类方法都是通过设计计算复杂度相对较低的emd距离的上界或下界计算函数,然后基于这些计算函数或直接扫描过滤数据集(“扫描—求精”法),或构建索引后基于索引过滤数据集(“索引—求精”法),尽可能避免对数据集中不相似直方图元组对之间emd距离的计算,从而提升相似性查询算法的处理效率。第二种解决思路是研究emd距离在某些特殊设定下的快速计算策略或是研究如何将emd距离的计算过程用别的线性时间复杂度的计算过程进行近似,旨于牺牲问题求解的普适性或是求解结果计算精度以提升emd距离的计算速度。第三种解决思路是运用分布式并行计算策略缩减算法的整体执行时间。例如基于流行的分布式并行批处理框架mapreduce,研究人员先后提出了melody-join算法、head-join算法、emd-mpj算法和top-kdlpj算法,有效提升了基于emd距离的相似性连接算法在处理大规模数据集时的可扩展性。可见,分布式并行计算是解决基于emd距离相似性连接这类计算密集型应用的高效可行手段。然而,这些研究工作只针对基于emd距离的相似性连接问题提供了批处理解决方案。批处理情况下数据是静态完整的,算法可以通过预先扫描数据集获得数据集的分布特性,并基于该分布特性提出有针对性的优化策略。而涉及动态变化的数据流,一方面算法很难提前获得对数据流的足够认识,另一方面数据流上的查询要求快速返回连接结果,增大了算法优化的难度。

在分布式系统负载均衡方面,也有不少研究工作针对如何划分数据集实现各分布式计算节点的负载均衡展开了讨论,主要有两种解决思路。第一种解决思路是在发现各个分布式计算节点的计算负载出现不平衡的时候将计算负载从高计算负载的节点向低计算负载的节点进行迁移。例如《flexibleandadaptivestreamjoinalgorithm》(fangj,wangx,zhangr,zhouay.,inproc.oftheapweb.2016:3-16.)以数据流的数据分布变化导致的系统负载分配不均为问题背景提出了有效的负载迁移的策略,然而数据迁移本身的代价不容小视。第二种解决思路是研究负载划分的优化策略。一方面基于哈希的数据划分策略虽然能维护各个分布式计算节点上的数据局部性(datalocality),有利于利用数据局部性实现进一步查询优化,但是当对静态数据集数据分布的掌握不精准或是数据分布动态变化时容易造成分布式计算节点间负载不均衡的现象。另一方面随机的数据划分策略能够严格保证各个计算节点间的负载均衡性,却丢失了计算节点上数据的局部性。基于以上观察,许多研究工作将基于哈希的数据划分策略和随机的数据划分策略相结合,优化数据划分过程以期实现计算节点间的负载近似均衡,典型的代表工作有面向静态数据集的emd-mpj算法和面向数据流的cont-rand算法。为了进一步在数据流环境下优化负载均衡策略,研究人员还先后提出pkg算法和pkge算法。区别于cont-rand算法,pkg算法和pkge算法对分布式计算框架中每个下游节点的数据分发量进行统计,并依据此优化下游计算节点的数据分发策略。然而,以上提出的面向分布式数据流处理的负载均衡策略均是针对数据流上计算复杂度较低的等值连接操作或是针对基于简单距离函数的相似性连接操作,因此连接代价模型关注的是计算节点所获得的数据量而非实际发生的计算量。由于emd距离具有高计算复杂度,节点执行相似性连接时实际发生的emd距离计算次数将是连接代价模型关注的重点,因此以上研究工作均不适用于解决数据流上基于emd距离的分布式相似性连接问题。虽然emd-mpj算法和top-kdlpj算法基于emd距离的特性设计了分布式并行计算环境下的数据相似性连接方案,但是它们处理的均是静态数据集,其负载均衡策略不适用于动态变化的数据流环境。



技术实现要素:

针对上述现有技术的不足,本发明提出了基于emd距离的数据流分布式相似性连接方法,能在数据分发时维护连接计算节点上的数据局部性,并基于该数据局部性增强连接算法对不相似直方图元组对间emd计算的过滤性能,有效降低分布式计算框架中各个连接计算节点上的计算负载,提升系统对数据流的整体执行效率,提高处理吞吐率。

本发明采用如下技术方案解决上述技术问题:

基于emd距离的数据流分布式相似性连接方法,基于开源的数据流分布式并行计算框架apachestorm构建stormtopology处理结构;stormtopology处理结构由spout和bolt两类组件构成;数据流r和数据流s通过spout节点将原始数据转换成直方图元组的形式并喷射给下游的partition-bolt节点,partition-bolt节点下游的join-bolt节点上有多个并行执行的join-bolttask;partition-bolt节点一方面基于apachestorm框架的全局分组策略将每个来自数据流s的直方图元组广播至join-bolt节点的每个join-bolttask上,然后每个join-bolttask为其所收到的数据流s的数据分片构建b+树森林索引;另一方面partition-bolt节点采用基于数据局部性的数据流划分策略将来自数据流r的相似的直方图元组发送给同一个join-bolttask;每个join-bolttask在获得当前滑动窗口内数据流r和数据流s的完整数据分片之后,采用相似性连接策略对数据流r和数据流s的数据分片执行滑动窗口语义下基于emd距离的相似性连接;各join-bolttask在执行连接计算的过程中记录自身在当前反馈周期的连接负载并在当前反馈周期结束时以负载反馈元组的形式发送给上游的partition-bolt节点,partition-bolt节点收集到上一反馈周期所有join-bolttask提交的负载反馈元组之后,基于代价模型采用基于反馈的负载均衡策略调整当前反馈周期对数据流r的划分策略,实现当前反馈周期内各join-bolttask间的负载均衡。

所述基于数据局部性的数据流划分策略为:

partition-bolt节点首先将直方图的一维实数映射空间ω(z)划分为k个子空间,并规定映射至第i个子空间上的直方图元组由第i个join-bolttask负责处理;每当partition-bolt节点接收到数据流r的元组,partition-bolt将按以下公式计算该元组的键值key(p,φ):

其中,给定直方图元组p={p1,…,pn},该元组在emd距离对偶线性规划问题的可行解z={φ,π},π={π1,…,πn};

若该键值key(p,φ)落在ω(z)的第i个子空间,则将该元组划分给第i个join-bolttask。

所述相似性连接策略为:

每个join-bolttask在获得当前滑动窗口内数据流r和数据流s的完整数据分片之后,首先在数据流s的数据流分片上构建b+树森林索引,以数据流r数据分片中的每个元组r为查询对象,访问所述b+森林索引过滤所有与所述查询对象不相似的s数据流分片上的直方图元组,得到s数据流分片上的初步约减查询候选集,再先后按新可行解过滤机制、emd距离的下界函数lbim过滤机制、emd距离的上界函数ubp过滤机制和三角不等式过滤机制逐步约减s数据流分片上的所述初步约减查询候选集得到最终约减查询候选集s’;最后计算所述查询对象和最终约减查询候选集s’中每个直方图元组之间的emd距离,若所得emd距离值不大于相似性阈值θ,则得到所述元组r与数据流s的数据流分片的相似性连接结果。

所述代价模型为:

每个join-bolttask负责完成r数据流分片和s数据流分片之间基于emd距离相似性连接,在一个执行周期内一个join-bolttask的连接代价o的模型为:

o=|r'|ofilter+nemdoemd.

其中,r'表示join-bolttask所获得的r数据流分片,|r'|表示r'的元组基数,ofilter表示每个r数据流元组和s数据流分片进行相似性连接时的平均过滤代价,oemd表示emd距离的平均计算代价,nemd表示join-bolt节点上实际发生的emd距离的计算次数。

所述基于反馈的负载均衡策略为:

将数据流的时间域划分为连续等长不相交的反馈周期,每个join-bolttask在执行相似性连接时按所述代价模型统计每个反馈周期内所发生的emd计算次数作为其在该反馈周期的计算负载代价,并在反馈周期末将该统计信息以负载反馈元组的形式发送给上游的partition-bolt节点;根据数据流的时间关联性,每个join-bolttask在时间域上相邻的两个反馈周期上统计得到的计算负载代价具有相似性,partition-bolt节点在汇总所有join-bolttask在上一反馈周期统计的负载反馈元组之后,将基于这些负载反馈元组提供的信息得到直方图至各个join-bolttask的新划分规则集。在下一反馈周期中,partition-bolt节点将采用所得到的新划分规则集中的数据划分规则决定各个join-bolttask上的数据流划分策略。

本发明的有益效果在于:

(1)本发明方法基于apachestorm框架设计并实现了滑动窗口语义下基于emd距离的数据流分布式相似性连接方法,在数据分发时维护了连接计算节点上的数据局部性,并基于该数据局部性增强了连接算法对不相似直方图元组对间emd计算的过滤性能,有效降低了分布式计算框架中各个连接计算节点上的计算负载;

(2)本发明方法基于连接计算节点的代价模型设计与实现了基于反馈的负载均衡策略,有效提升了系统对数据流的整体执行效率;

(3)通过采用真实的流数据集进行了大量实验,证明了本发明方法的有效性和可扩展性。实验证明,本发明的方法比现有技术在处理吞吐率上最高提高了50%,并且随着相似性阈值的增大该提升比率还会进一步增大。

附图说明

图1是本发明emd-ddsj方法的stormtopology处理结构示意图。

图2是本发明emd-ddsj方法中过滤链设置的示意图。

图3是图2中新可行解过滤和三角不等式过滤两种不同过滤器的过滤效果对比图。

图4(a)是本发明emd-ddsj方法在partition-bolt上的处理算法流程图。

图4(b)是本发明emd-ddsj方法在join-bolt上的处理算法流程图。

图5是本发明emd-ddsj方法中基于负载反馈元组更新数据划分规则的算法流程图。

图6是本发明emd-ddsj方法的基于反馈的负载均衡策略中直方图一维实数映射空间ω(z)中的各个子空间和各个join-bolttask之间的映射关系图。

图7是本发明实施例实验设置的三部电影视频的截图。

图8是反馈周期p大小对本发明emd-ddsj方法的负载均衡性的影响柱状图。

图9是span大小对本发明emd-ddsj方法的运行时间的影响柱状图。

图10是本发明emd-ddsj方法和shufflej方法两种方法join-bolt上的负载均衡性测试对比图。

图11(a)是本发明emd-ddsj方法和shufflej方法在处理连接时的相似性阈值的大小对emd计算次数的影响对比图。

图11(b)是本发明emd-ddsj方法和shufflej方法在处理连接时的相似性阈值的大小对emd计算次数的影响对比图。

图12(a)是本发明emd-ddsj方法和shufflej方法在处理连接时的相似性阈值的大小对处理吞吐率影响对比图。

图12(b)是本发明emd-ddsj方法和shufflej方法在处理连接时的相似性阈值的大小对处理吞吐率影响对比图。

图13(a)是本发明emd-ddsj方法和shufflej方法在处理连接时的滑动窗口大小变化时处理吞吐率的变化趋势对比图。

图13(b)是本发明emd-ddsj方法和shufflej方法在处理连接时的滑动窗口大小变化时处理吞吐率的变化趋势对比图。

图14(a)是本发明emd-ddsj方法在处理连接时的可扩展性测试结果曲线图。

图14(b)是本发明emd-ddsj方法在处理连接时的可扩展性测试结果曲线图。

具体实施方式

以下结合附图对本发明的具体实施方式作详细说明,但不构成对本发明权利要求保护范围的限制。

1、相关定义和技术

1.1、emd距离的定义:

已知各包含n个数据桶的直方图元组p={p1,…,pn}和q={q1,…,qn},以及地面距离矩阵c=[cij],则p和q之间的emd距离,记为emd(p,q),是将直方图p搬运转换为直方图q的最小搬运代价,即等于以下线性规划问题的最优解。

式(1)中,已知的地面距离cij∈c表示从直方图p的第i个数据桶到直方图q的第j个数据桶的搬运代价。可见,该线性规划问题共有n2个变量,记为f={fij}。其中,fij表示从直方图p的第i个数据桶搬运至直方图q的第j个数据桶的概率值。emd距离可以基于单纯形算法(simplexalgorithm)进行求解,且求解的时间复杂度高达o(n3logn)。假设emd距离定义中使用的地面移动距离是一种几何距离(metricdistance),例如常见的曼哈顿距离和欧几里德距离,此时emd距离也是一种几何距离,满足几何距离的三大特性:非负性(即emd(p,q)≥0)、对称性(即emd(p,q)=emd(q,p))和三角不等性(即emd(p,q)+emd(p,u)≥emd(q,u))。

1.2、滑动窗口语义下基于emd距离的数据流相似性连接:

已知直方图数据流r={r1,...ri,...}和s={s1,...sj,...},滑动窗口的大小为|w|,相似性阈值为θ,则滑动窗口语义下基于emd距离的数据流r和s的相似性连接返回以下直方图元组对的集合:

{<ri,sj>|ri∈r,sj∈s,emd(ri,sj)≤θ,|ri.ts-sj.ts|≤|w|}(2)

其中,x.ts表示直方图元组x的时间戳。

1.3、apachestorm框架:

开源的分布式数据流实时计算框架apachestorm,简称为storm。storm框架基于topology实现对数据流的分布式实时处理。topology中数据以元组(tuple)的形式进行转发和处理。topology一经启动将永久运行,不断处理实时到达的数据元组。如图1所示,一个topology由spout和bolt两类组件构成。spout作为数据产生者,从一个外部源读取数据并向topology里喷射数据元组。bolt作为数据消费者,对所接收的数据元组进行处理和转发。一个复杂的topology可由多个spout和多个bolt组成,且可以为每个spout或bolt设置task并行度,由多个task并行完成其处理逻辑。storm提供多种组件间的数据分组(划分)策略,例如随机分组(shufflegrouping)、字段分组(fieldgrouping)和全局分组(allgrouping),完成topology中上游组件的各个task向下游组件的各个task的数据分发。

1.4现有技术shufflej方法介绍:

基于随机分组策略的数据流分布式相似性连接方法shufflej。运用storm提供的随机分组策略和全局分组策略可以直接实现基于emd距离的数据流分布式相似性连接。具体而言,spout组件上的每个task每当收到一条来自s数据流的元组时即基于全局分组(allgrouping)策略向下游负责执行相似性连接的bolt组件的各个task(简称为join-bolttask)广播该元组;spout组件每当收到一条来自r数据流的元组时即基于随机分组(shufflegrouping)策略将该元组随机划分给下游负责执行相似性连接的bolt组件的一个join-bolttask。每个join-bolttask获得当前滑动窗口内完整的r数据分片和s数据分片后,执行这两个数据分片之间基于emd距离的相似性连接,并将连接结果写入外部数据存储设备。这种对数据流r进行随机划分的分布式相似性连接技术,简称为shufflej方法,易于实现,由于各个join-bolttask得到的数据量和数据分布近似一致,各个join-bolttask的连接负载是均衡的。然而,由于随机分发r数据流上的元组,shufflej方法破坏了join-bolttask所获得的r数据分片的数据局部性(datalocality),即不能把emd距离相近的r数据流元组分发到同一个join-bolttask上进行连接处理,因而join-bolttask就不能利用数据局部性过滤大量不相似元组对之间的emd距离计算,制约了join-bolttask上基于emd距离的相似性连接处理效率的提升。

2、本发明构建的stormtopology处理结构

本发明的基于emd距离的数据流分布式相似性连接方法,简称为emd-ddsj方法。emd-ddsj方法构建stormtopology处理结构。

如图1所示。首先,数据流r和数据流s通过spout节点将原始数据转换成直方图元组的形式并喷射给下游的partition-bolt。假设partition-bolt下游的join-bolt上有k个并行执行的join-bolttask(图1中简单表示为task)。partition-bolt一方面基于storm框架的全局分组(allgrouping)策略将每个来自数据流s的直方图元组广播至join-bolt的每个join-bolttask上,然后每个join-bolttask为其所收到的s数据流分片构建b+树森林索引;partition-bolt另一方面将来自数据流r的相似的直方图元组发送给同一个join-bolttask,即基于数据局部性的数据流划分策略。相比于现有技术shufflej方法,emd-ddsj方法对数据流r上元组进行划分时维护了各个join-bolttask得到的r数据流分片的数据局部性,为join-bolttask上的查询优化提供可能。每个join-bolttask在获得当前滑动窗口内数据流r和数据流s的数据分片之后,对数据流r和数据流s的数据分片采用相似性连接策略执行滑动窗口语义下基于emd距离的相似性连接。连接过程中利用r数据流分片的数据局部性过滤大量不相似直方图元组对之间的emd距离计算,最终把连接结果写入外部数据存储系统,例如apachehdfs分布式文件系统。各join-bolttask在执行连接计算的过程中记录自身在当前反馈周期的连接负载并在当前反馈周期结束时以负载反馈元组的形式发送给上游的partition-bolt。partition-bolt收集到上一反馈周期所有join-bolttask提交的负载反馈元组之后,基于代价模型调整当前反馈周期对数据流r的划分策略,均衡各个join-bolttask上的连接计算负载,即采用基于反馈的负载均衡策略。

2.1、基于数据局部性的数据流划分策略

基于线性规划的对偶理论,采用直方图元组至一维实数空间的映射机制。假设每个直方图元组包含n个数据桶,根据对偶理论可知公式(1)所示的求解emd距离的线性规划问题存在且仅存在一个对偶线性规划问题,即:

以上对偶线性规划问题的一组可行解z={φ,π}包含2n个变量,表示为和π={π1,…,πn}。给定直方图元组p={p1,…,pn},则该元组在emd距离对偶线性规划问题的可行解z={φ,π}下的一维实数映射空间(表示为ω(z)中的映射值,即key(p,φ)可由公式(4)计算得到。以下将该映射值简称为键值。

给定直方图元组q{q1,…,qn}作为查询对象,则所有和q之间的emd距离不大于相似性阈值θ的直方图元组的键值必然落在公式(5)所示的一维实数映射空间ω(z)的子空间中。其中ckey(q,π)为查询对象q的反键值,定义为

公式(5)说明基于公式(4)的映射函数可将emd距离相近的直方图元组映射至一维实数映射空间ω(z)的临近区域,即该一维实数映射空间维护了直方图元组基于emd距离的数据局部性。

给定emd距离对偶线性规划问题的一组可行解z={φ,π},且假设下游的join-bolt上有k个并行执行的join-bolttask,基于上述直方图元组的映射机制,partition-bolt首先将直方图的一维实数映射空间ω(z)划分为k个子空间,并规定映射至第i个子空间上的直方图元组由第i个join-bolttask负责处理。每当接收到数据流r的元组,partition-bolt按公式(4)计算该元组的键值key(p,φ),若该键值落在ω(z)的第i个子空间,则将该元组划分给第i个join-bolttask。由于公式(4)所示的直方图元组映射函数维护了直方图元组基于emd距离的数据局部性,partition-bolt因而能够将r数据流上彼此相似的直方图元组分配给同一个join-bolttask,维护了join-bolttask上r数据流分片的数据局部性。可以通过实现storm框架中的自定义分组(customstreamgrouping)接口实现partition-bolt对数据流r的上述数据划分逻辑。

2.2、相似性连接策略:

在获得当前滑动窗口内数据流r和s的完整数据分片之后,每个join-bolttask采用“索引—求精”的方式完成r数据流分片和s数据流分片之间面向滑动窗口语义且基于emd距离的相似性连接。即,首先在s数据流分片上构建轻量的面向流数据的b+树森林索引。给定查询对象,该索引机制利用公式(5)的结论过滤s数据流分片中和查询对象之间emd距离大于相似性阈值的无关直方图元组。其次以数据流r数据分片中的每个元组r为查询对象,利用s数据流分片上的b+树森林索引完成元组r在数据流s的数据分片上面向滑动窗口语义且基于emd距离的相似性连接,得到元组r与数据流s的数据分片的相似性连接结果。具体过程如图2所示,首先访问s数据流分片上的b+树森林索引过滤所有与查询对象不相似的s数据流分片上的直方图元组,得到数据流s的数据分片上的初步约减查询候选集;其次先后按新可行解过滤机制、emd距离的下界函数lbim过滤机制、emd距离的上界函数ubp过滤机制和三角不等式过滤机制逐步约减s数据流分片上的初步约减查询候选集得到最终约减查询候选集s’;最后求精计算查询对象和最终约减查询候选集s’中每个直方图元组之间的emd距离,若距离值不大于相似性阈值θ,则将该结果对输出至外部存储系统。

所述b+树森林索引的构建方法参见中国专利申请《一种数据流相似性的连接方法》(申请号为201610564307.3)。所述新可行解过滤机制和所述三角不等式过滤机制参见jiaxu,zhenjiezhang,anthonyk.h.tung,geyu.efficientandeffectivesimilaritysearchoverprobabilisticdatabasedonearthmover’sdistance,vldbjournal,21(4):535-559,2012。所述emd距离的下界函数lbim过滤机制参见i.assent,a.wenning,andt.seidl.approximationtechniquesforindexingtheerathmover’sdistanceinmultimediadatabases.inicde,page11,2016.。所述emd距离的上界函数ubp过滤机制参见jiaxu,zhenjiezhang,anthonyk.h.tung,geyu.efficientandeffectivesimilaritysearchoverprobabilisticdatabasedonearthmover’sdistance,inproc.ofvldb2010。

在如图2所示的过滤链中,新可行解过滤机制和三角不等式过滤机制均利用了r数据流分片上前后查询对象之间的相似性(即良好的数据局部性)对s数据分片中的无关直方图元组进行过滤。r数据流分片所维护的数据局部性越好,这两个过滤机制的过滤性能就越高。具体而言,新可行解过滤机制利用不可避免的emd计算过程中顺带产生的emd距离对偶线性规划问题的新可行解计算emd距离的下界,并基于该下界值对候选集进行过滤。前后查询对象之间越相似,基于新产生的可行解计算得到的emd距离的下界越紧,则基于该下界值进行过滤的效果越好。三角不等式过滤机制利用前后查询对象(例如qi和qi+1)之间的相似性,利用emd距离所满足的三角不等特性(即emd(qi,p)+emd(qi,qi+1)≤emd(qi+1,p)),计算qi+1和qi的连接结果p之间emd距离的下界值,并基于该下界值判断p是否也是qi+1的连接结果,从而避免qi+1和p之间的emd距离计算。可见,前后查询对象之间越相似,三角不等式过滤机制的对emd计算的过滤效果越好。如图3所示,同一数据集在经过如图2所示的过滤链处理后,join-bolttask对具有数据局部性的r数据流分片进行相似性连接时和join-bolttask对没有数据局部性的r数据流分片进行相似性连接时新可行解过滤机制和三角不等式过滤机制各自过滤掉的emd计算次数占总emd计算次数的比率。可见,利用数据局部性设计的新可行解过滤机制和三角不等式过滤机制在r数据流分片具有数据局部性时的过滤性能比在r数据流分片不具有数据局部性时的过滤性能提高了至少一倍多。考虑到emd距离的高计算复杂度,在数据划分时维护join-bolttask上r数据流分片的数据局部性可以有效提升各个join-bolttask处理基于emd距离的相似性连接的执行效率。

2.3、本发明emd-ddsj方法在partition-bolt和join-bolt上的具体处理流程分别如图4(a)和图4(b)所示。

输入:直方图数据流r和s,emd距离对偶线性规划问题的一组可行解z={φ,π},滑动窗口w,相似性阈值θ。

输出:相似性连接结果集rs={(ri,sj)|ri∈r,sj∈s,emd(ri,sj)≤θ,|ri.ts-sj.ts|≤|w|}

如图4(a)所示,在partition-bolt端,对于每个到达的直方图元组xi,如果xi属于数据流s,则partition-bolt基于storm系统提供的全局分组(allgrouping)策略将xi广播至下游join-bolt的所有task上;反之如果xi属于数据流r,则partition-bolt首先按公式(4)计算xi在直方图一维实数映射空间ω(z)内的键值key(xi,ф),然后基于维护数据局部性的数据划分规则集partitionrule,将xi发送至负责其键值key(xi,ф)所在子空间的join-bolttask上。每当收到上一反馈周期所有下游join-bolttask的连接负载反馈元组fm,partition-bolt将基于连接负载反馈元组更新数据划分规则集partitionrule,从而调整当前周期对数据流r的划分策略,均衡各个join-bolttask上的连接负载。

如图4(b)所示,在join-bolt端,如果到达的元组xi属于数据流s,则join-bolttask将xi插入b+树森林索引i;反之如果xi属于数据流r,join-bolttask将基于滑动窗口语义以b+树森林索引i为输入按图2所述的过滤链对s数据流分片中不相似的元组对进行过滤,最终得到元组xi与s数据流分片的相似性连接的结果集rs,并在删除元组xi之后将结果集rs存储至外部存储系统,例如apachehdfs。如果当前反馈周期期满,则join-bolttask将其在当前反馈周期统计得到的负载反馈元组fm发送给partition-bolt。

3、本发明emd-ddsj方法采用基于反馈的负载均衡策略:

给定emd距离对偶线性规划问题(如公式(3)所示)的任一可行解z={φ,π},emd-ddsj方法将直方图元组的一维实数映射空间ω(z)划分为若干个子空间,并将映射至第i个子空间的r数据流元组分派给第i个join-bolttask进行连接处理。这样做维护了join-bolttask上r数据流分片的数据局部性,可以利用数据局部性过滤不相似直方图元组对之间的emd距离计算。由于数据流上的数据分布随着时间推移会发生改变,如果不能在数据分布变化时及时调整各个子空间边界划分将导致各个join-bolttask的负载不均衡,从而降低emd-ddsj方法的整体处理吞吐率。实际应用中产生的数据流普遍具有的时间关联性,即同一数据流上时间戳相近的元组的取值也相近,例如传感器采样数据流和监控视频流都具有这样的性质。假设直方图数据流具有时间关联性。首先建立join-bolt上的连接负载代价模型,并基于该代价模型和数据流的时间关联性采用基于反馈的负载均衡策略,该策略利用基于反馈的数据划分规则获取算法根据各个连接计算节点的负载反馈信息阶段性调整partition-bolt的数据划分策略,实现各个连接计算节点间的负载均衡。

3.1、系统负载代价模型:

emd-ddsj方法中每个join-bolttask负责完成r数据流分片和s数据流分片之间基于emd距离相似性连接,因而在一个执行周期内一个join-bolttask的连接代价o可量化为:

o=|r'|ofilter+nemdoemd.(6)

其中,r'表示join-bolttask所获得的r数据流分片,|r'|表示r'的元组基数,ofilter表示每个r数据流元组和s数据流分片进行相似性连接时的平均过滤代价,oemd表示emd距离的平均计算代价,nemd表示join-bolt上实际发生的emd距离的计算次数。因为emd距离的计算复杂度远比其它emd距离的过滤机制要高,即oemd>>ofilter,而emd距离的平均计算代价oemd的取值稳定,故join-bolttask的连接代价o可以用该join-bolttask上发生的emd距离的计算次数,即nemd来近似量化,即o≈nemd。

3.2、基于反馈的负载均衡策略:

基于以上代价模型,本发明方法采用基于反馈的负载均衡策略。该策略将数据流的时间域划分为连续等长不相交的反馈周期(feedbackperiod)。要求每个join-bolttask在执行相似性连接时统计每个反馈周期内所发生的emd计算次数来作为其在该反馈周期的计算负载代价,并在反馈周期末将该统计信息以负载反馈元组的形式发送给上游的partition-bolt。基于数据流的时间关联性可认为每个join-bolttask在时间域上相邻的两个反馈周期上统计得到的计算负载代价具有相似性。因此,partition-bolt在汇总所有join-bolttask在上一反馈周期统计的负载反馈元组之后,可基于该汇总信息调整直方图一维实数映射空间ω(z)内各子空间的划分边界,从而调整当前反馈周期partition-bolt对数据流r的划分策略,实现当前反馈周期内各join-bolttask间的负载均衡。可见,基于反馈的负载均衡策略需要join-bolt和partition-bolt共同参与完成。

为了降低统计开销,如图6所示,首先将直方图的一维实数映射空间ω(z)划分为等长不重叠的区间,称之为span区间,因而每个span区间涵盖了一个等长且连续的key值空间。根据具体的负载划分策略,每个join-bolttask负责处理落在一个或多个连续span区间内的r数据流元组,这样就保证了每个join-bolttask上r数据流分片的数据局部性。如图6所示,m1,…,mk-1分别表示k个join-bolttask所负责的ω(z)中子空间的划分点,可见第1个join-bolttask(对应图中task1)负责处理落在前3个span区间内的r数据流元组,第2个task(对应图中task2)负责处理落在第4个至第8个span区间内的r数据流元组。在span语义下,每个join-bolttask就能够基于一定的反馈周期p以span为粒度统计本地的emd距离计算负载信息。下面先后介绍每个join-bolttask上统计emd距离计算负载的具体过程和partition-bolt上基于负载反馈元组调整数据流r的划分策略的过程。

3.2.1、join-bolt上的负载信息统计:

假设直方图的一维实数映射空间ω(z)被划分为u个互相不重叠的span区间(记为spanx,1≤x≤u),基于反馈的负载均衡策略在join-bolt上的主要工作流程如下:每个join-bolttask在执行基于emd距离的相似性连接时以每个span区间为粒度统计当前反馈周期内落在每个span区间内的r数据流元组所触发的emd距离总计算次数。此处记第x个区间spanx上统计得到的emd距离总计算次数为nemd(x),则第i个join-bolttask在当前反馈周期结束时即可得到一个u维计算负载向量,记为vitrue=<nemd(1),…,nemd(u)>。由于某些join-bolttask在当期反馈周期结束时可能仍有未处理完的r数据流元组,导致负载向量vitrue的统计信息不完整。为了得到完备的计算负载信息,需要每个join-bolttask基于当前反馈周期结束时已处理的r数据流元组所产生的emd计算次数对当前反馈周期结束时未处理的r数据流元组即将在下一反馈周期产生的emd计算次数进行估计。记第i个join-bolttask对当期未处理的r数据流元组在下一反馈周期产生的emd计算次数的估计值为viest,viest对应图6中的竖线阴影方框,其计算方法如公式(7)所示。

其中,|ri|表示第i个join-bolttask在当前反馈周期开始时所获得的未处理的r数据流元组的基数,|ri'|表示第i个join-bolttask在当前反馈周期结束时已处理的r数据流元组的基数,则|ri|-|ri'|表示第i个join-bolttask在当前反馈周期结束时尚未处理的r数据流元组的基数。niemd=∑xnemd(x)(其中,nemd(x)∈vitrue)表示第i个join-bolttask在当前反馈周期结束时在所有span区间上统计得到的emd距离计算次数的和,则niemd/|ri'|表示第i个join-bolttask在当前反馈周期内处理每个r数据流元组的过程中产生的平均emd计算次数。当前反馈周期结束时,每个join-bolttask将统计得到的本周期已处理的emd距离计算负载vitrue和估算得到的下一反馈周期将要处理的emd距离计算负载viest打包成负载反馈元组,形式为fim=<vitrue,viest>,发送给上游的partition-bolt组件。

3.2.2、partition-bolt上的负载划分调整策略

当partition-bolt组件收集到所有下游join-bolttask发送的上一周期的负载反馈元组之后,需要根据这些反馈负载信息重新确定k个join-bolttask各自负责的直方图一维实数映射空间ω(z)的子空间的划分点,即图6所示的m1,…,mk-1。首先,将k个join-bolttask反馈发回的k条负载反馈元组,即{f1m,...,fkm},的vitrue(1≤i≤k)分量进行累加得到以span区间为统计粒度的emd计算次数在直方图一维实数映射空间ω(z)中的分布信息,记为dω(z)。考虑到第i个join-bolttask发回的反馈元组fim=<vitrue,viest>的viest分量相当于下一反馈周期已经划分到第i个join-bolttask的emd计算负载量,在决定下一反馈周期各个join-bolttask在ω(z)中的子空间的划分边界时因该考虑到viest带来的影响,可以基于公式(8)计算下一反馈周期partition-bolt组件需要给第i个join-bolttask新分配的emd计算负载量,记为li。

其中,表示下一反馈周期每个join-bolttask需要处理的平均emd计算负载量的估计值,该值减去viest即可得到partition-bolt组件在下一反馈周期需要给第i个join-bolttask新分配的emd计算负载量的估计值。基于li(1≤i≤k),即可调用如图5所示的基于连接负载反馈元组更新数据划分规则的算法在dω(z)分布上以span区间为粒度求解各个join-bolttask在直方图一维实数映射空间ω(z)中所负责的子空间的边界值,即求得{m1,...,mk-1},从而得到ω(z)中k个join-bolttask和k个子空间的新映射关系;并将该集合{m1,...,mk-1}添加到r数据流划分规则集partitionrule中。下一反馈周期中,partition-bolt组件将基于所得到的r数据流划分规则集partitionrule决定各个join-bolttask上的数据划分策略。

需要注意,当dω(z)所示的emd距离计算次数在直方图一维实数映射空间ω(z)上的分布存在倾斜时,某个span区间所对应的emd距离计算次数较别的span区间显著较大(称为热度span区间),导致该span区间无论在下一反馈周期分给哪个join-bolttask都可能使该join-bolttask的emd计算负载量激增,导致各个join-bolttask间负载不均衡。此处认为当区间spani的emd距离计算次数超过下一反馈周期每个join-bolttask需要处理的平均emd计算负载量的估计值时,该span区间为热度span区间,记为spanhoti。针对dω(z)内存在热度区间的情况,负载划分策略会首先求解dω(z)中包含的所有热度区间,得到热度区间集合,记为{spanhoti},并在下一反馈周期中将落在热度区间spanhoti内的r数据流元组随机发送给所负责的span区间和spanhoti区间前后临近的两个join-bolttask上。

如图5所示,基于连接负载反馈元组更新数据划分规则的算法具体实现如下:

输入:join-bolt组件的task并行度k;ω(z)中span区间的个数l;span区间的设定宽度wspan;每join-bolttask所发送的上一反馈周期的负载反馈元组集合{fim}。

输出:r数据流的新数据划分规则集partitionrule。

partition-bolt每当收到下游某个join-bolttask(设为taski)所发送的上一反馈周期的负载反馈元组fim=<vitrue,viest>,即将该join-bolttask的接收标志位ti设置为true。当partition-bolt接收到所有join-bolttask的负载反馈元组之后,将基于这些负载反馈元组生成下一反馈周期partition-bolt对r数据流的数据划分规则。具体过程为:首先基于这些计算负载反馈元组计算得到以span区间为统计粒度的emd计算次数在直方图一维实数映射空间ω(z)中的分布信息dω(z);其次按公式(8)计算出下一反馈周期需要给每个join-bolttask新分配的emd计算负载量li;紧接着获取dω(z)中的热度区间集合hotspanset;然后遍历dω(z)中所有非热度区间,基于每个join-bolttask在下一反馈周期的估计计算负载值li得到下一反馈周期每个join-bolttask所负责的ω(z)子空间的划分边界点集合{m1,...,mk-1},并将该集合添加到r数据流划分规则集partitionrule中;接着将热度区间集合hotspanset中每个热度区间内r数据流元组的划分规则同样添加到r数据流划分规则集partitionrule中;最后重置各个join-bolttask的接收标志位,将向量dω(z)中的各维数据置0。

4、代价分析

对emd-ddsj方法和shufflej方法的算法复杂度进行对比分析。让|r|和|s|分别表示数据流r和数据流s的元组基数。并假设join-bolt上有k个并行执行的task。因为无论是emd-ddsj方法还是shufflej方法均将数据流s上的每个直方图元组广播给k个join-bolttask,同时将数据流r上的每个元组发送给一个特定的join-bolttask,因而emd-ddsj方法和shufflej方法的网络传输代价均为o(|r|+k*|s|)。

让avgemd-ddsj和avgshufflej分别表示emd-ddsj方法和shufflej方法处理每个r数据流元组和s数据流分片之间相似性连接时的平均计算代价,则emd-ddsj方法和shufflej方法在所有join-bolttask上的总计算代价分别为o(|r|avgemd-ddsj)和o(|r|avgshufflej)。因为emd-ddsj技术能够利用数据局部性过滤掉更多不相似直方图元组对之间的emd距离求精计算,所以相似性连接的平均计算代价avgemd-ddsj<avgshufflej。因此emd-ddsj技术在所有join-bolttask上的总计算代价小于shufflej方法在所有join-bolttask上的总计算代价。

5、实验结果与分析:

5.1、实验设置:

使用真实的流数据集对本发明的emd-ddsj方法和现有技术shufflej方法进行比较评估。其中,shufflej方法在每个join-bolt组件上使用和emd-ddsj方法一样的过滤链对不相似直方图元组对之间的emd距离计算进行过滤。实验使用的集群由3台计算节点构成。每个计算节点的配置是双核cpu、2gb内存,运行64位linux操作系统。每个节点拥有500gb的硬盘容量,集群上部署的apachestorm框架的版本为0.9.2。系统源代码的实现语言为java。

如图7所示,实验基于3部电影视频产生真实流数据集。具体而言,抽取每个电影的视频关键帧,并从抽取的每个视频帧中提取出包含256个数据桶的灰度直方图即得到1个直方图元组,依此每个电影视频均可转换为1条直方图数据流(元组基数为100万)。这里将基于3部电影视频分别得到的3条直方图数据流并分别记为s、ss和m。如表1所示,因为第2部电影视频是将第1部电影视频每一帧的亮度降低58fl得到的,因而基于第2部电影视频得到的直方图数据流ss和基于第1部电影视频得到的直方图数据流s很相似性。用符号表示面向滑动窗口语义且基于emd距离的数据流分布式相似性连接操作。实验中基于欧几里德距离和直方图每个数据桶的索引号计算数据桶之间的地面距离矩阵c=[cij],并将该地面距离矩阵用于emd距离的计算。

以下表1给出了实验中相关参数的设置情况,加粗的数字表示该参数的默认值。每个实验数据都是运行5次实验得到的平均值。

表1实验参数设置

5.2、实验结果与分析:

首先测试了反馈周期p和span区间的大小对本发明emd-ddsj方法的影响。定义storm中join-bolt组件的负载不均衡率=(join-bolttask的最大负载量-所有join-bolttask的平均负载量)/所有join-bolttask的平均负载量。图8展示了本发明emd-ddsj方法中反馈周期p的大小和join-bolt组件的负载不均衡率之间的关系。可见随着反馈周期p的增大,无论是在处理数据流s和ss之间的连接还是在处理数据流s和m之间的连接,join-bolt组件的负载不均衡率呈现先递减后递增的趋势,且反馈周期p等于3秒时,join-bolt组件的负载不均衡率达到最低。这是因为反馈周期设置越短,反馈周期内收集到的各join-bolttask对emd距离计算负载的统计信息越少,基于有限的emd距离计算负载统计信息不能准确指导下一反馈周期中r数据流元组的划分,造成下一反馈周期中join-bolt组件的负载不均衡率偏高。当反馈周期p大于3秒时,随着反馈周期p变长,join-bolt组件的负载不均衡率会不断增加,这是因为反馈周期p增大则会弱化相邻反馈周期之间计算负载统计信息的时间关联性,从而降低当前的负载反馈信息对下一反馈周期数据划分策略的指导准确性。在接下来的实验中,统一设置反馈周期p为3秒。

图9展示了span区间的大小对emd-ddsj执行时间的影响。可见,不论是执行连接还是执行连接,emd-ddsj的执行时间均呈现随span增大先降低后增大的趋势,且span区间大小为15时算法的执行时间最短。这是因为span区间设置越小,虽然对直方图一维实数映射空间内各键值对应的计算负载的统计越精细,但考虑到下一反馈周期的emd距离计算负载在映射空间内的分布可能存在一定的偏移,因而统计得越精细反倒会降低统计信息对下一反馈周期emd距离计算负载划分的指导意义。反之,如果span区间设置得过大则统计信息粒度过粗糙也不能准确指导下一反馈周期emd距离计算负载的划分。在接下来的实验中设置span为15。

图10展示了本发明的emd-ddsj方法和现有技术shufflej方法在处理不同数据流连接时join-bolt组件上并行执行的各task间的负载均衡性。shufflej方法随机给每个join-bolttask分配了近似等量且同分布的数据,故负载均衡性最好。值得肯定是,emd-ddsj所提出的基于反馈的负载均衡策略在均衡各join-bolttask的计算负载方面取得了显著成效,使emd-ddsj的负载不均衡率仅略高于shufflej方法的负载不均衡率。

本实验测试了不同数据集上相似性阈值的大小对shufflej方法和本发明emd-ddsj方法中产生的emd距离求精计算总次数的影响。其emd距离求精计算总次数是指不同方法在处理两条直方图数据流间基于emd距离的相似性连接时经过图2所示的过滤链过滤后仍需要进行的emd距离计算的总次数。如图11(a)和图11(b)所示,随着相似性阈值的增大,shufflej方法和本发明emd-ddsj方法各自的emd距离求精计算总次数都呈现出上升的趋势。这是因为阈值越大则相似性连接的结果候选集越大,因而emd距离求精计算的次数也随之增加。从图11(a)和图11(b)中还可观察到,无论是执行连接还是执行连接,本发明emd-ddsj方法比shufflej方法的emd距离求精计算总次数降低了12%至36%。这是因为emd-ddsj方法使用了基于数据局部性的数据流r划分策略,每个join-bolttask可以利用r数据流分片的良好数据局部性增强三角不等式过滤机制和新可行解过滤机制对不相似直方图元组对之间emd距离计算的过滤性能。还可观察到随着阈值增大,emd-ddsj方法的emd距离计算次数和shufflej方法的emd距离计算次数之间的差值增大,这是因为阈值越大则查询候选集越多,emd-ddsj技术利用查询候选集的数据局部性对不相似直方图元组对之间emd距离计算进行过滤的性能就越好。同时,由于数据流s和ss比s和m更相似,在执行连接时每个join-bolttask上r数据流分片的数据局部性更好,因而在执行连接时emd-ddsj方法对emd距离计算的过滤性能也就更好。

如图12(a)和图12(b)所示,基于不同数据集展示了emd-ddsj方法和shufflej方法在相似性阈值变化时的处理吞吐率变化情况。其中,处理吞吐率为系统每分钟处理的r数据流元组的个数。可见,在不同的数据集上,随着相似性阈值的增大两种技术的处理吞吐率都呈现递减的趋势。这是因为相似性阈值越大则相似性连接处理中的结果后选集增大,导致emd距离的求精计算次数增加从而影响了整个系统的处理吞吐率。从图12(a)中,还可观察到在执行连接时,emd-ddsj方法比shufflej方法的处理吞吐率提高了11%到50%。从图12(b)中可知,在执行连接时emd-ddsj方法比shufflej方法的处理吞吐率提高了6%到34%。这是因为emd-ddsj方法使用了基于数据局部性的数据流r划分策略,并利用该数据局部性强化了三角不等式过滤机制和新可行解过滤机制的过滤性能。同时从图12(a)和图12(b)还可观察到,emd-ddsj方法和shufflej方法在处理连接时比在处理连接时在处理吞吐率方面提高得更显著。这是因为数据流s和ss之间比数据流s和m之间更相似,因而join-bolttask上所采用的各个过滤策略可以利用join-bolttask上数据局部性得到更紧的emd距离的上界或下界值,并基于这些上界或下界值过滤掉更多的不相似直方图元组对之间的emd距离计算。最后还可观察到,随着相似性阈值的增大,emd-ddsj方法比shufflej方法在处理吞吐率方面的优势会进一步增强,正是由于emd-ddsj方法在阈值增大时对emd距离计算的过滤性能更好。

如图13(a)和图13(b)所示,基于不同数据集上展示了emd-ddsj方法和shufflej方法在滑动窗口大小变化时处理吞吐率的变化趋势。可见,随着滑动窗口大小的增大,两种方法的处理吞吐率都呈现出降低的趋势。这是因为随着滑动窗口的增大,相似性连接处理中的结果后选集也增大,导致emd距离的求精计算次数增加从而影响了整个系统的处理吞吐率。同时,当滑动窗口的大小增大时,无论在处理连接时还是在处理连接时,emd-ddsj方法比shufflej方法在处理吞吐率上的优势都呈现出逐渐增强的趋势。这是因为窗口越大则参与计算的元组就越多,相似性连接过程中所产生的结果候选集也就越大,在这种情况下emd-ddsj方法利用数据局部性对结果候选集进行过滤所带来的优势就更明显,因而emd-ddsj方法在处理吞吐率上的提升优势就越显著。

图14(a)和图14(b)展示了本发明emd-ddsj方法的系统可扩展性。通过在不同数据集上改变join-bolt组件中并行执行的task的数目测试不同技术的处理吞吐率情况。从图14(a)和图14(b)中可以看出,随着join-bolt组件中并行执行的task数目的增加,系统的处理吞吐率呈线性递增趋势,表明本发明emd-ddsj方法具有良好的可扩展性。

本发明的方法选取开源apachestorm作为直方图数据流的分布式并行处理框架平台,基于apachestorm框架实现滑动窗口语义下基于emd距离的数据流分布式相似性连接,有效支持但不限于以下应用:

应用1:在基于内容的视频检索和监控应用中,每个视频帧的颜色、灰度和纹理等重要内容特征通常可以用直方图的形式进行提取和表征。因而两个视频流可以转换成两条直方图数据流。在滑动窗口语义下基于emd距离对这两条数据流进行相似性连接可以返回这两条数据流上时间临近且颜色、灰度或纹理相似的视频帧对,为视频流间的相关性分析或视频流中的对象跟踪提供支撑。

应用2:在无线传感器监控应用中,由于硬件故障、信号干扰和电量损耗等原因,单个传感器反馈的采样数据存在一定的不精确性。通常会基于同一区域中的多个传感器节点在同一时段内的采样数据构建采样数据分布直方图来表征区域采样值的不确定性。这样从同一区域传回的传感器采样数据流可以转化为直方图形式表征的采样数据分布数据流。在滑动窗口语义下基于emd距离对不同区域传回的直方图数据流进行相似性连接可以挖掘临近时间范围中采样读数具有关联性的监控区域对,便于后续的监控和分析。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1