一种应对倾斜数据流在线连接的处理方法与流程

文档序号:12906179阅读:207来源:国知局
本发明涉及一种数据处理方法,特别是关于一种应对倾斜数据流在线连接的处理方法。
背景技术
::一般基于完全二部图的连接模型可支持分布式数据流的连接操作。该模型具有内存高效、易伸缩和可扩展等特性。然而,该模型无法动态分配查询节点,并需要人工干预数据分组的参数设置。尤其是针对倾斜数据的全历史连接查询,模型效率更低。技术实现要素:针对上述问题,本发明的目的是提供一种应对倾斜数据流在线连接的处理方法,该方法能有效应对倾斜数据的连接操作,并进一步提升分布式数据流管理系统的吞吐率,降低云环境中的计算成本。为实现上述目的,本发明采取以下技术方案:一种应对倾斜数据流在线连接的处理方法,其特征在于包括以下步骤:1)数据流r和数据流s分别被随机划分成n个节点r1,r2,…,rn和m个节点s1,s2,…,sm,将各个节点分别存储在n个或m个处理单元中,且数据流r和数据流s分别位于二部图连接模型的两侧;数据流r和数据流s根据基于键值的哈希函数进行元组划分,数据流r或s的元组被分配至同一侧的不同节点进行存储,并同步将该元组发送至另一侧处理单元以完成在线连接的操作;2)以预先设定时间间隔周期性地监控二部图连接模型每侧节点的负载统计信息,并搜集发送至预先构建的数据流控制器;若数据流控制器监控到某些处理单元超过负载均衡因子的临界值,则根据启发式规则动态制定迁移策略;3)在数据迁移之前,将新产生的数据流暂存在高吞吐量的分布式发布订阅消息系统中,暂缓新数据的连接操作;此时,按照迁移策略进行数据流和连接状态信息的迁移,并同步更新路由表;4)继续发送kafka中暂存的和新到来的数据,完成后续的在线连接操作。所述步骤2)中,设定的启发式规则如下:2.1)规则h1:数据需要迁出的处理单元,如果迁出负载键值的元组后可直接满足非平衡因子阈值的要求,则直接进行迁出操作,并在路由表中记录迁移键值;2.2)规则h2:数据需要迁出的处理单元,如果迁出某些键值的元组后仍不满足非平衡因子阈值的要求,则需要切分具有较高元组数的键值,并将切分后的部分数据进行迁出操作,并在路由表中记录迁移键值;2.3)规则h3:数据需要迁入的处理单元,如果存在键值在路由表中,则优先将该键值的元组合并至哈希函数映射的处理单元,并清空路由表中的记录。根据启发式规则,设定迁出元组和迁入元组的基本算法,迁出元组的基本算法为:首先,判断迁出集合中迁出元组的键值范围,并确定待迁入元组的处理单元;然后,针对各个迁出键值按照启发式规则h1和规则h2完成数据迁出,并更新路由表;最后,确定迁移计划;迁入元组的基本算法为:首先,判断迁入集合中迁入元组的键值范围,并确定待迁出元组的处理单元;然后,针对各个迁入键值按照启发式规则h3完成数据迁入,并更新路由表;最后,确定迁移计划。所述步骤2)中,动态制定迁移策略是根据不同迁移类型定义三种代价:(1)网络代价cnetwork:数据分裂的情况下,相同键值的元组分布于不同的处理单元,在连接操作时由于复制数据带来的代价;(2)迁移代价cmigration:元组从某一处理单元迁移到其他处理单元的代价;(3)路由代价crouting:数据迁移后,为记录键值和处理单元的映射关系而维护迁移路由的代价。所述步骤2)中,在时刻t,单侧的数据迁移采用ism算法,其过程如下:首先,统计时刻t每个处理单元的负载lt(pu),并计算出平均负载;然后,对于需要迁出数据的处理单元,调用迁出元组算法;最后,对于需要迁入数据的处理单元,调用迁入元组算法。所述步骤2)中,针对两侧节点逻辑迁移采用s2sm算法,其过程如下:首先,统计每个处理单元的负载lt(pu),并分别统计各侧和整个集群的平均负载和其中,表示t时刻具有m个处理单元侧的平均负载,表示t时刻具有n个处理单元侧的平均负载,表示t时刻整个集群的平均负载;然后,根据临界值判定迁出元组的一侧和迁入元组的一侧;最后,针对迁出侧,判断需要迁出的处理单元并调用迁出元组算法,针对迁入侧,判断需要迁入的处理单元并调用迁入元组算法。本发明由于采取以上技术方案,其具有以下优点:本发明通过逻辑重划分查询节点的策略和状态迁移算法,动态实现连接算法的负载均衡,以支持全历史数据的连接查询和自适应的资源管理。有效应对倾斜数据的连接操作,并进一步提升分布式数据流管理系统的吞吐率,降低云环境中的计算成本。附图说明图1是本发明的整体流程示意图;图2a是本发明实施例中的吞吐率示意图;图2b是本发明实施例中的延迟示意图;图3a是本发明实施例中采用db,jb和jb6三种方法的tpc-h提供的等值连接q3通信代价示意图;图3b是本发明实施例中采用db,jb和jb6三种方法的tpc-h提供的等值连接q5通信代价示意图;图3c是本发明实施例中采用db,jb和jb6三种方法的tpc-h提供的范围查询(band)通信代价示意图。具体实施方式下面结合附图和实施例对本发明进行详细的描述。如图1所示,本发明提供一种应对倾斜数据流在线连接的处理方法,其包括以下步骤:1)数据流r和数据流s分别被随机划分成n个节点r1,r2,…,rn和m个节点s1,s2,…,sm,将各个节点分别存储在n个或m个处理单元中,且数据流r和数据流s分别位于二部图连接模型的两侧;数据流r和数据流s根据基于键值的哈希函数进行元组划分,数据流r或s的元组被分配至同一侧的不同节点进行存储,并同步将该元组发送至另一侧处理单元以完成在线连接的操作。2)以预先设定时间间隔周期性地监控二部图连接模型每侧节点的负载统计信息,并搜集发送至预先构建的数据流控制器。若数据流控制器监控到某些处理单元超过负载均衡因子的临界值,则根据启发式规则动态制定迁移策略。3)在数据迁移之前,将新产生的数据流暂存于高吞吐量的分布式发布订阅消息系统kafka中,暂缓新数据的连接操作。此时,按照迁移策略进行数据流和连接状态信息的迁移,并同步更新路由表(routingtable)。4)继续发送kafka中暂存的和新到来的数据,完成后续的在线连接操作。上述步骤2)中,在时刻t,假设存在某一处理单元的负载超过非平衡因子的临界值上限,将该处理单元标记为pumax,即;lt(pumax)>(1+θmax),lt(pumax)为t时刻处理单元pumax的总负载,θmax为最大非平衡因子的边界值;或者存在某一处理单元负载低于非平衡因子的临界值下限,将该处理单元标记为pumin,即lt(pumin)<(1-θmax),lt(pumin)为t时刻处理单元pumin的总负载。为满足二部图连接模型各处理单元的平衡性,并尽量减少数据迁移的情况,本发明设定的启发式规则如下:2.1)规则h1:数据需要迁出的处理单元,如果迁出负载键值的元组后可直接满足非平衡因子阈值的要求,则直接进行迁出操作,并在路由表中记录迁移键值。2.2)规则h2:数据需要迁出的处理单元,如果迁出某些键值的元组后仍不满足非平衡因子阈值的要求,则需要切分具有较高元组数的键值,并将切分后的部分数据进行迁出操作,并在路由表中记录迁移键值。2.3)规则h3:数据需要迁入的处理单元,如果存在键值在路由表中,则优先将该键值的元组合并至哈希函数映射的处理单元,并清空路由表中的记录。根据上述三种规则,分别给出迁出元组(moveout)和迁入元组(movein)的基本算法。其中,迁出元组的基本算法为:首先,判断迁出集合中迁出元组的键值范围,并确定待迁入元组的处理单元;然后,针对各个迁出键值按照启发式规则h1和规则h2完成数据迁出,并更新路由表;最后,确定迁移计划。迁入元组的基本算法为:首先,判断迁入集合中迁入元组的键值范围,并确定待迁出元组的处理单元;然后,针对各个迁入键值按照启发式规则h3完成数据迁入,并更新路由表;最后,确定迁移计划。上述步骤2中,动态制定迁移策略是根据不同迁移类型定义三种代价:(1)网络代价cnetwork:数据分裂的情况下,相同键值的元组分布于不同的处理单元,在连接操作时由于复制数据带来的代价。(2)迁移代价cmigration:元组从某一处理单元迁移到其他处理单元的代价。(3)路由代价crouting:数据迁移后,为记录键值和处理单元的映射关系而维护迁移路由的代价。时刻t,所有迁移函数的集合f={f1,f2,f3,…}。根据不同的迁移策略,每个迁移函数fi(i=1,2,…)的代价ct(fi)为:ct(fi)=α×cnetwork(fi)+β×cmigration(fi)+γ×crouting(fi),其中,α、β和γ是三种迁移代价的权重,α+β+γ=1。由于多节点备份数据引起的数据多次传输,网络代价对ct(fi)的影响最高,其次是数据在不同节点间的迁移代价,最后是路由表的维护代价。根据实验的经验值,将α、β和γ分别设置为0.5,0.3和0.2。优化目标表示为:其中,pu表示某一处理单元;pu表示全部处理单元的集合。当满足负载均衡的条件下,优化目标是最小化迁移代价。上述步骤2)中,在时刻t,为满足二部图连接模型单侧处理单元的平衡性,并尽量减少数据迁移的情况,单侧的数据迁移采用ism算法,其过程如下:首先,统计时刻t每个处理单元的负载lt(pu),并计算出平均负载;然后,对于需要迁出数据的处理单元,调用moveout算法;最后,对于需要迁入数据的处理单元,调用movein算法。上述步骤2)中,由于数据流速的动态改变,导致二部图连接模型中两侧数据流的数量会有较大间隙,这严重影响到分布式数据流管理系统的吞吐率。针对两侧节点逻辑迁移采用s2sm算法,其过程如下:首先,统计每个处理单元的负载lt(pu),并分别统计各侧和整个集群的平均负载和其中,表示t时刻具有m个处理单元侧的平均负载,表示t时刻具有n个处理单元侧的平均负载,表示t时刻整个集群的平均负载;然后,根据临界值判定迁出元组的一侧和迁入元组的一侧;最后,针对迁出侧,判断需要迁出的处理单元并调用moveout算法,针对迁入侧,判断需要迁入的处理单元并调用movein算法。实施例:针对查询任务。本发明共选取三个查询任务。其中,两个是tpc-h提供的等值连接q3和q5,一个是范围查询(band)。band查询描述为:select*,fromlineiteml1,lineiteml2whereabs(l1.orderkey-l2.orderkey)<=1and(l1.shipmode=’truck’andl2.shipinstruct=‘none’)andl1.quantity>48针对对比模型。本发明使用三种算法对比分析查询性能:db,jb和jb6。db是本发明提出的算法,表示为动态二部图连接模型。jb表示平均分配集群节点至二部图的各侧。jb6表示平均分配节点后,二部图各侧内部的节点分成6个子组做随机路由。使用z=1的10gb数据,针对三个不同的查询任务,对比了三个模型的吞吐率和延迟。如图2a所示,由于db动态调整处理单元的负载情况,其吞吐率最高。而jb需要做单侧的全网广播操作,通信量较大,故其吞吐率最低。相对于处理延迟而言,图2b说明,db的延迟均低于jb和jb6。如图3a~图3c所示,为验证db模型应对不同倾斜度数据流的处理情况,通过改变zipf分布情况,测试三种模型的网络通信代价。通过对比图3a、图3b和图3c,发现jb需要做全网广播操作,其通信代价最高;jb6仅做子网广播操作,其通信代价最低;为应对不同的倾斜度,提高系统的吞吐率,db需要做数据迁移操作,其通信代价略高于jb6。此外,由于q5涉及到的数据流最多,其通信代价高于q3和band。上述各实施例仅用于说明本发明,各个步骤都是可以有所变化的,在本发明技术方案的基础上,凡根据本发明原理对个别步骤进行的改进和等同变换,均不应排除在本发明的保护范围之外。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1