CN116319381A - 一种通信和资源感知的数据流分组方法及系统 - Google Patents

一种通信和资源感知的数据流分组方法及系统 Download PDF

Info

Publication number
CN116319381A
CN116319381A CN202310594872.4A CN202310594872A CN116319381A CN 116319381 A CN116319381 A CN 116319381A CN 202310594872 A CN202310594872 A CN 202310594872A CN 116319381 A CN116319381 A CN 116319381A
Authority
CN
China
Prior art keywords
field value
frequency
downstream
data stream
instance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310594872.4A
Other languages
English (en)
Other versions
CN116319381B (zh
Inventor
孙大为
陈哲
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China University of Geosciences Beijing
Original Assignee
China University of Geosciences Beijing
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China University of Geosciences Beijing filed Critical China University of Geosciences Beijing
Priority to CN202310594872.4A priority Critical patent/CN116319381B/zh
Publication of CN116319381A publication Critical patent/CN116319381A/zh
Application granted granted Critical
Publication of CN116319381B publication Critical patent/CN116319381B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/142Network analysis or design using statistical or mathematical methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/12Discovery or management of network topologies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/14Network analysis or design
    • H04L41/147Network analysis or design for predicting network behaviour
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/54Organization of routing tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D30/00Reducing energy consumption in communication networks
    • Y02D30/50Reducing energy consumption in communication networks in wire-line communication networks, e.g. low power modes or reduced link rate

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Pure & Applied Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种通信和资源感知的数据流分组方法及系统,涉及分布式流计算技术领域。包括:监控模块获取拓扑信息,并将拓扑信息发送至下游任务选择模块;其中,拓扑信息包括数据流分组任务的CPU资源和拓扑中各个任务间的通信距离;下游任务选择模块进行数据流中字段值频率的预测,并根据字段值频率预测结果以及拓扑信息进行数据流分组。本发明能够以较低的字段值拆分程度实现下游有状态运算符实例的负载均衡,并提高拓扑中元组的吞吐量,降低系统延迟。

Description

一种通信和资源感知的数据流分组方法及系统
技术领域
本发明涉及分布式流计算技术领域,尤其涉及一种通信和资源感知的数据流分组方法及系统。
背景技术
分布式流计算平台大多采用主从架构,基于分布式内存,对不断产生的动态数据进行高速处理。分布式系统能够通过增加节点为每个组件中添加更多任务来应对工作量的增长。但另一方面,并行式的处理方式带来了对数据流在并行模块之间进行分割的需要。流计算平台的分组机制是在单一运算符内部实现不同实例间数据流的划分和工作负载的分配。分组算法可以针对不同的需要进行设计,能够服务于流的聚合或连接操作实现诸如平滑短期负载波动、提高资源利用率等目标。
在一些流计算系统处理的拓扑中,由于数据类型繁复,产生迅速,并且场景对处理实时性要求高,对分组方式提出了更为复杂的要求。分布式流计算系统目前只内置了部分基础分组方法,在面对有状态运算符这类有特殊需求的节点时,分组效果并不理想,会引起运算符内各实例间负载失衡进而导致拥塞发生,或导致数据流中字段值的过度拆分。随着分布式流计算平台的不断发展,为实现不同的目的多种多样的分组方式被设计出来,针对有状态运算符进行数据流的分组也日益成为一个重要的研究课题,更为合理的分组方式亟待实现。
在有状态运算符内,因为需要保持一定的状态,对资源利用和负载分配产生较大的限制,需要更加成熟的分组方式来解决负载均衡和状态维护等问题。目前针对有状态运算符中分组的研究大多以字段分组为基础展开。根据对字段分组所带来的负载倾斜问题处理方式的不同,有状态运算符分组的研究可以分为负载倾斜发生后调节和降低负载倾斜程度两大类。同时,部分研究也将对计算、通信和内存资源的利用率和字段值聚合成本等的影响考虑在内,在分组效果上实现了很大的提升。
在有状态运算符实例间负载倾斜问题发生后,一种调节方式是通过迁移部分字段值目的任务的方法来平衡实例负载。现有技术提出一种基于哈希函数和路由表的混合分组算法。首先使用哈希函数为字段值选择下游实例,在负载失衡发生后,使用路由表迁移部分字段值目标实例来实现负载均衡。现有技术也采用了类似的混合分组算法,在更新路由表时还考虑了字段值迁移成本、路由表尺寸和负载失衡度等因素。DAGreedy(Distribution-Aware Greedy Stream Par-titioning,分布感知贪婪流分区)算法则是在获得数据流中字段值分布情况后,使用启发式贪婪算法将部分字段值分发到更多实例上。该工作的亮点在于在选择实例时,将字段值聚合成本考虑在内。
该类方法的缺点在于:首先,迁移是在负载失衡产生后做出的补救措施,不能阻止负载失衡发生;其次,要保证负载持续均衡,需要频繁迁移,并生成规模庞大的路由表,会耗费大量资源;最后,在大规模数据流中,计算出合适迁移策略所需时间较长,会导致数据流处理效率下降,降低分布式流计算系统的实时性。综上所述,这一类型方案并非流计算系统的最佳选择。
由于不同字段值对应的元组在数据流中出现的频率差异巨大,解决有状态运算符实例间负载失衡问题的另一思路是预测数据流中字段值出现的频率,对出现频率不同的字段值做出差异化处理。这类方法通过滑动窗口平均算法、ARIMA(AutoregressiveIntegrated Moving Average,差分整合移动平均自回归)等方法预测并标记未来数据流中出现频率较高的字段值,较少的高频字段值对任务间负载平衡产生的影响程度远大于其余的字段值。
其中,D/W-choice(D/W选择)算法通过设定频率阈值筛选高频字段值,D-choice算法为每个高频字段值分配多个可使用的实例,并通过贪婪算法来确定元组的目标实例。当可使用实例数等于下游实例数量时,W-choice算法将选择工作负载最小的工作进程。另一项研究P Stream算法通过加权概率计数和自适应阈值来识别高频字段值。对于高频字段值对应的元组使用随机分组选择下游实例,其余字段值则使用哈希函数来分配,在减少内存消耗的同时实现了工作负载的相对均衡。DKG(Domain-specific KnowledgeGraph,特定领域知识图谱)算法通过字段值分布感知和Space-Saving结构识别高频率字段值,通过路由表为其选择下游实例,实现了以接近最优负载平衡的方式进行分组。但是DKG的字段值分布感知算法是离线运行的,无法应对数据流的波动。
除上述研究之外,Squirrel作为一种网络感知分组框架,会识别通信主体的网络位置,根据网络通道的权重和优先级实现权重分组。Squirrel采用动态权重控制技术,能够分析运行时信息,在线调整网络通道的权重和优先级,但Squirrel并没有尝试实现下游实例间的负载均衡。
发明内容
本发明针对有状态运算符进行数据流分组的问题,提出了本发明。
为解决上述技术问题,本发明提供如下技术方案:
一方面,本发明提供了一种通信和资源感知的数据流分组方法,该方法由通信和资源感知的数据流分组系统实现,系统包括监控模块以及下游任务选择模块;
该方法包括:
S1、监控模块获取拓扑信息,并将拓扑信息发送至下游任务选择模块;其中,拓扑信息包括数据流分组任务的 CPU 资源和拓扑中各个任务间的通信距离。
S2、下游任务选择模块进行数据流中字段值频率的预测,并根据字段值频率预测结果以及拓扑信息进行数据流分组。
可选地,S1中的拓扑采用有状态运算符作为拓扑的组件,进行字段值的状态管理。
可选地,S2中的下游任务选择模块进行数据流中字段值频率的预测,包括:
采用最小计数草图Count-Min Sketch算法统计数据流中预设时间间隔内字段值的频率,得到字段值计数表。
根据字段值计数表以及循环门单元GRU算法进行字段值的频率预测,得到预测频次表,预测频次表为字段值频率预测结果。
可选地,S2中的根据字段值频率预测结果以及拓扑信息进行数据流分组,包括:
S21、根据字段值频率预测结果以及拓扑信息将字段值划分为高频字段值或低频字段值。
S22、对于高频字段值,通过设计负载平衡的循环访问路由表选择下游实例。
S23、对于低频字段值,使用一致性哈希分组算法选择下游实例。
可选地,S21中的根据字段值频率预测结果以及拓扑信息将字段值划分为高频字段值或低频字段值,包括:
S211、构建任务间负载平衡程度的理论值,设定任务间负载平衡程度阈值。
S212、根据任务间负载平衡程度的理论值以及任务间负载平衡程度阈值,解算出高频字段值占比。
S213、根据高频字段值占比以及拓扑中字段取值数量,求解出高频字段值数量。
S214、根据高频字段值数量以及字段值频率预测结果将字段值划分为高频字段值或低频字段值。
可选地,S211中的任务间负载平衡程度的理论值,如下式(1)所示:
Figure SMS_1
(1)
其中,
Figure SMS_2
为数据流中字段取值数量,/>
Figure SMS_3
为组件中任务个数,/>
Figure SMS_4
为高频字段值个数,/>
Figure SMS_5
为字段值/>
Figure SMS_6
出现的概率,/>
Figure SMS_7
标注字段值的等级。
可选地,S22中的设计负载平衡的循环访问路由表选择下游实例,包括:
通过拓扑中各个任务间的通信距离调整下游实例权重,生成任一上游实例到任一下游实例的循环访问路由表。
调整所有上游实例到所有下游实例的循环访问路由表的访问权重。
任一上游实例执行调整后的循环访问路由表,并通过令牌标记当前选择的下游实例,当数据流中元组到达任一上游实例时,将元组发送至当前选择的下游实例。
可选地,S23中的使用一致性哈希分组算法选择下游实例,包括:
获取下游任务ID列表,给每一个下游任务ID加上一个唯一确定的随机数,并建立下游任务ID到哈希环上固定位置的映射。
根据用户设定字段的字段值,将数据流中元组映射到哈希环上,具有相同字段值的元组将被映射到哈希环的同一位置上。
选择在哈希环上与元组距离最短的下游任务ID作为该元组的下游实例。
另一方面,本发明提供了一种通信和资源感知的数据流分组系统,该系统应用于实现通信和资源感知的数据流分组方法,该系统包括监控模块以及下游任务选择模块;
其中:
监控模块,用于获取拓扑信息,并将拓扑信息发送至下游任务选择模块;其中,拓扑信息包括数据流分组任务的 CPU 资源和拓扑中各个任务间的通信距离。
下游任务选择模块,用于进行数据流中字段值频率的预测,并根据字段值频率预测结果以及拓扑信息进行数据流分组。
可选地,拓扑采用有状态运算符作为拓扑的组件,进行字段值的状态管理。
可选地,下游任务选择模块,进一步用于:
采用最小计数草图Count-Min Sketch算法统计数据流中预设时间间隔内字段值的频率,得到字段值计数表。
根据字段值计数表以及循环门单元GRU算法进行字段值的频率预测,得到预测频次表,预测频次表为字段值频率预测结果。
可选地,下游任务选择模块,进一步用于:
S21、根据字段值频率预测结果以及拓扑信息将字段值划分为高频字段值或低频字段值。
S22、对于高频字段值,通过设计负载平衡的循环访问路由表选择下游实例。
S23、对于低频字段值,使用一致性哈希分组算法选择下游实例。
可选地,下游任务选择模块,进一步用于:
S211、构建任务间负载平衡程度的理论值,设定任务间负载平衡程度阈值。
S212、根据任务间负载平衡程度的理论值以及任务间负载平衡程度阈值,解算出高频字段值占比。
S213、根据高频字段值占比以及拓扑中字段取值数量,求解出高频字段值数量。
S214、根据高频字段值数量以及字段值频率预测结果将字段值划分为高频字段值或低频字段值。
可选地,任务间负载平衡程度的理论值,如下式(1)所示:
Figure SMS_8
(1)
其中,
Figure SMS_9
为数据流中字段取值数量,/>
Figure SMS_10
为组件中任务个数,/>
Figure SMS_11
为高频字段值个数,/>
Figure SMS_12
为字段值/>
Figure SMS_13
出现的概率,/>
Figure SMS_14
标注字段值的等级。
可选地,下游任务选择模块,进一步用于:通过拓扑中各个任务间的通信距离调整下游实例权重,生成任一上游实例到任一下游实例的循环访问路由表。
调整所有上游实例到所有下游实例的循环访问路由表的访问权重。
任一上游实例执行调整后的循环访问路由表,并通过令牌标记当前选择的下游实例,当数据流中元组到达任一上游实例时,将元组发送至当前选择的下游实例。
可选地,下游任务选择模块,进一步用于:
获取下游任务ID列表,给每一个下游任务ID加上一个唯一确定的随机数,并建立下游任务ID到哈希环上固定位置的映射。
根据用户设定字段的字段值,将数据流中元组映射到哈希环上,具有相同字段值的元组将被映射到哈希环的同一位置上。
选择在哈希环上与元组距离最短的下游任务ID作为该元组的下游实例。
上述技术方案,与现有技术相比至少具有如下有益效果:
上述方案,提出了针对有状态运算符的字段值频率感知分组方法。该方法通过Count-min Sketch算法和GRU算法统计并预测数据流中字段值分布情况,对于高频字段值,通过降低通信延迟和使用下游任务资源控制路由表生成来实现低延迟且负载均衡的分组。对于低频字段值使用一致性哈希分组算法来选择目标实例。该方法能够以较低的字段值拆分程度实现下游有状态运算符实例的负载均衡,并提高拓扑中元组的吞吐量,降低系统延迟。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的通信和资源感知的数据流分组方法流程示意图;
图2是本发明实施例提供的组件内各实例间工作负载对比图;
图3是本发明实施例提供的通信和资源感知的数据流分组系统架构图;
图4是本发明实施例提供的一致性哈希算法结构图;
图5是本发明实施例提供的通信和资源感知的数据流分组系统框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种通信和资源感知的数据流分组方法,该方法可以由通信和资源感知的数据流分组系统实现。如图1所示的通信和资源感知的数据流分组方法流程图,该方法的处理流程可以包括如下的步骤:
S1、监控模块获取拓扑信息,并将拓扑信息发送至下游任务选择模块。
其中,拓扑信息包括数据流分组任务的 CPU 资源和拓扑中各个任务间的通信距离。
可选地,S1中的拓扑采用有状态运算符作为拓扑的组件,进行字段值的状态管理。
一种可行的实施方式中,Storm作为一个分布式流计算平台,支持有状态运算符作为拓扑的组件,这一特性为流聚合等操作打下了基础,支持Storm成为一个功能强大的流计算平台。有状态运算符是一类需要对字段值的状态进行管理的运算符。字段值的状态可以理解为,当单组数据被处理过后,处理单元并没有遗忘这组数据,而是根据元组中某个字段的取值对相应的记录进行更改。通常将需要进行字段值的状态管理的组件称为有状态运算符。
字段分组能够保证字段值完整,省去了后续的聚合步骤。但在真实场景中。字段分组会造成了任务之间负载失衡。这是由于数据流中不同字段取值的元组出现频率差异巨大,加之字段值完整映射,导致下游实例间所承担的工作压力并不均匀。数据量较大时,甚至会造成拥塞,整个流计算系统的性能也将受制于这些节点。
如图2所示,这是一个由四个工作实例组成的下游组件,使用字段分组为元组选择下游目标实例。其中工作负载最高的task4(任务4),其负载压力约为工作负载最低的task1的1.6倍。
在有状态运算符分组时应当考虑字段值状态的维护,不应造成字段值过度拆分。一种字段值过度拆分的情况是随机分组的使用。随机分组广泛应用于无状态运算符数据流划分。但将其应用于有状态运算符时,随机分组不能保证字段的完整,会将具有相同字段取值的元组分散到各个任务上。首先,不加以区分的对所有字段值使用随机分组算法在后续对字段值进行聚合将耗费大量计算资源。其次,由于为数据流中每一个字段值保存状态都需要一定的内存,随着数据流流量的扩张,系统将随之进行扩展,此时组件中的任务数量将增多,所需内存也将成倍增长。内存增长将限制任务数量的无限扩张,影响了分布式流计算系统的可扩展性,制约了系统处理数据时的吞吐量。
S2、下游任务选择模块进行数据流中字段值频率的预测,并根据字段值频率预测结果以及拓扑信息进行数据流分组。
一种可行的实施方式中,字段值频率感知分组算法在具体实现时,由系统监控模块和下游任务选择模块两部分组成。其中,下游任务选择模块负责字段值频率预测,根据字段值频率预测值和拓扑信息做好分组准备工作,在元组到来时执行分组算法选择下游实例。监控模块主要负责拓扑感知,对任务的 CPU 资源和拓扑中各个任务间的通信距离等信息进行实时监控,然后将得到的信息传送到下游任务选择模块供分组时使用。
进一步地,字段值频率感知分组算法基于Storm平台的远程模式实现。如图3所示,在集群运行时,下游任务选择模块通过Storm提供的Custom Stream Grouping接口运行在Master Node(主控节点)上,实现自定义的数据流分组算法。拓扑被提交到主控节点的Nimbus进程,Nimbus接收代码后,针对该拓扑建立本地目录,Nimbus中的Scheduler(调度器)根据拓扑配置计算Task(任务),并将其分配到不同的Worker上,调度结果写入Zookeeper。系统监控模块运行在Work Node(工作节点)上。工作节点上的Supervisor(管理)进程前往Zookeeper获取分配的Task信息,启动相应数量的Worker。当数据流到来时,Worker中的执行器调用下游任务选择模块的分组执行部分完成分组。Supervisor将管理所在节点的任务并向Nimbus反馈运行情况。
可选地,S2中的下游任务选择模块进行数据流中字段值频率的预测,包括S211-S212:
S211、采用最小计数草图Count-Min Sketch算法统计数据流中预设时间间隔内字段值的频率,得到字段值计数表。
S212、根据字段值计数表以及循环门单元GRU算法进行字段值的频率预测,得到预测频次表。
一种可行的实施方式中,准确预测出未来数据流中的字段值频率能够帮助实现对元组做出针对性处理,进而提高分组算法应用效果。本节将介绍字段值的频次统计和频率预测以及在此基础上实现字段值的划分工作。字段值频率的预测需要基于当前字段值计数实现,因此需要统计周期内数据流中各字段值数量。本发明使用Count-Min Sketch(最小计数草图)算法来统计字段值频率。
进一步地,在完成固定时间间隔内字段值频次的统计后,对字段值频率的估计采用GRU(Gate Recurrent Unit,循环门单元)模型来实现。系统以固定时间间隔
Figure SMS_15
将Count-Min Sketch字段值计数表作为/>
Figure SMS_16
输入到GRU模型,GRU模型将结合之前节点所传递的隐含状态/>
Figure SMS_17
,计算出当前节点的输出/>
Figure SMS_18
作为对接下来数据流中字段值频率的预测,并同时输出当前节点的隐含状态/>
Figure SMS_19
作为当前时间周期信息的保留,传递到下一个时间周期参与字段值频率的预测。
可选地,S2中的根据字段值频率预测结果以及拓扑信息进行数据流分组,包括S221- S223:
S221、根据字段值频率预测结果以及拓扑信息将字段值划分为高频字段值或低频字段值。
可选地,上述步骤S221可以包括如下步骤S2211- S2214:
S2211、构建任务间负载平衡程度的理论值,设定任务间负载平衡程度阈值。
一种可行的实施方式中,当一个新的元组到来时,系统首先查询高频键值预测表。若表中不存在元组中字段值
Figure SMS_20
,系统将根据GRU输出的预测频次表计算元组中字段值/>
Figure SMS_21
的计数值。由于散列冲突存在,一个字段值会使用多个计数器向量进行统计,但这些计数器向量并非该字段值单独占有使用。也就是说,一个计数器向量值可能是多个字段值计数结果的累加值,为减少计数器向量叠加使用对字段值计数带来的偏差,选择一个字段值的多个计数器向量中的最小值。因为技术结果总是正的,所以最小值最接近该字段值计数的真实值。高频键值预测表大小固定,当表没有被填满或者表中字段值的预测值小于/>
Figure SMS_22
时,系统将/>
Figure SMS_23
作为一个键值对放入固定大小高频键值预测表中,并替换掉字段值的预测值小于/>
Figure SMS_24
的键值对。
进一步地,在字段值分布模型中,排序在前的字段值与排序在后的字段值在数据流中出现的频率存在较大差异,应当针对字段值出现频率对元组做出不同的分组处理。在这里人为将字段值划分为高频字段值和低频字段值。
假设组件中共有
Figure SMS_25
个任务,数据流中字段取值数量为/>
Figure SMS_26
,将数据流中出现频率占据前/>
Figure SMS_27
的字段值划定为高频字段值。记负载平衡度的理论值为/>
Figure SMS_28
,任务负载为/>
Figure SMS_29
,有:
Figure SMS_30
(1)
其中,
Figure SMS_31
为当前负载最大的实例的工作负载,/>
Figure SMS_32
为当前负载最小的实例的工作负载,/>
Figure SMS_33
为当前实例的平均工作负载。
进一步地,使用字段值频率感知分组算法,由于高频字段值元组通过在Task间的近似随机分发实现了较高的负载均衡,因此,公式在此处进行了简化,忽略了高频字段值元组对于任务间负载平衡的影响。在最差情况下,其负载平衡程度的理论值计算如下,如下式(2)所示:
Figure SMS_34
(2)
其中,
Figure SMS_35
为数据流中字段取值数量,/>
Figure SMS_36
为组件中任务个数,/>
Figure SMS_37
为高频字段值个数,/>
Figure SMS_38
为字段值/>
Figure SMS_39
出现的概率,/>
Figure SMS_40
标注字段值的等级。
S2212、根据任务间负载平衡程度的理论值以及任务间负载平衡程度阈值,解算出高频字段值占比。
S2213、根据高频字段值占比以及拓扑中字段取值数量,求解出高频字段值数量。
S2214、根据高频字段值数量以及字段值频率预测结果将字段值划分为高频字段值或低频字段值。
一种可行的实施方式中,由上式(2)可知,字段值频率感知分组算法负载平衡程度,取决于数据流倾斜程度、字段取值数量、节点任务数和高频字段值占比。在前三者固定的情况下,高频字段值占比越大,负载平衡提升程度越强。
因此设定任务间负载平衡程度阈值
Figure SMS_41
,要求/>
Figure SMS_42
。当拓扑提交后统计字段取值数量,读取下游组件节点任务数,以数据流倾斜程度为1进行运算,根据式(2)可以解算出高频字段值占比/>
Figure SMS_43
,再结合统计出的字段取值数量就可以求解出高频字段值数量。在拓扑实际运行时,数据流中字段值的分布并不完全符合理想状态,同时对高频字段值的预测也存在一定的误差。因此,当拓扑运行一定时间后,如果负载平衡程度不能满足设定好的负载平衡程度阈值/>
Figure SMS_44
,系统会自动调高高频字段值占比,取/>
Figure SMS_45
。系统会重复执行这一流程直至负载平衡程度满足设定好的负载平衡程度阈值/>
Figure SMS_46
S222、对于高频字段值,通过设计负载平衡的循环访问路由表选择下游实例。
可选地,S222中的设计负载平衡的循环访问路由表选择下游实例,包括:
通过拓扑中各个任务间的通信距离调整下游实例权重,生成任一上游实例到任一下游实例的循环访问路由表。
调整所有上游实例到所有下游实例的循环访问路由表的访问权重。
任一上游实例执行调整后的循环访问路由表,并通过令牌标记当前选择的下游实例,当数据流中元组到达任一上游实例时,将元组发送至当前选择的下游实例。
一种可行的实施方式中,对于高频字段值,其数量占字段值总体数量的比例较低,每个字段值在数据流中出现的频率极高。如果将一个高频字段值全部映射到一个Task上,必然会导致该任务负载过重,发生严重拥塞。因此,高频字段值分组是基于设计了负载平衡的循环访问路由表来实现的,能够实现元组在下游任务间的平均分发。它的核心思想是降低高频字段值分组的通信开销并依据实例的可用资源来调整下游实例的工作压力来达到负载平衡。
处于同一个Worker进程中的Executor,其线程间通信通过Disruptor队列来完成。在数据传输时,当接收方执行器和发送方执行器在同一个Worker进程上,Disruptor队列直接将数据放入与接收方执行器相对应的队列中,由接收方执行器来自行拉取自己所需要的数据。当数据的接收方Executor和发送方Executor在不同的Worker上,就需要通过Worker进程之间的通信传送数据。当处于Worker1的执行器1需要与处于Worker2的执行器2通信时,执行器 1将根据TaskID到各节点端口的Map,确定需要进行通信的执行器2所在的Worker2的地址,然后Worker1将同Worker2创建好Socket端口连接。执行器1在向执行器2发送数据时,首先需要将数据序列化,然后通过Disruptor将数据放入对外发送队列中,发送线程通过连接将数据发送到执行器2所在的Worker进程上。
两者相比较,当数据的接收方执行器和发送方执行器在同一个Worker进程上时,数据的传输不需要进行序列化操作和网络传输,而是通过Disruptor直接放入与接收方执行器相对应的队列中。Worker进程的执行器间的信息传输的通信距离较短,可以大量降低元组处理的时间延迟。另一个需要考虑的因素是下游实例的可用资源。
首先通过通信距离调整下游实例权重并生成第一轮循环访问路由表。算法会从系统中获取工作节点之间的通信速度,当前任务的下游TaskID列表、当前任务所在服务器的主机号与Worker进程的端口号,并获取从TaskID到各节点端口的映射表。设拓扑中共有n个上游实例,m个下游实例。对于某一个上游实例
Figure SMS_47
,使用一个一维数组/>
Figure SMS_48
记录它到下游实例/>
Figure SMS_49
的通信距离,使用另一个一维数组/>
Figure SMS_50
记录对应下游实例的可用资源。
此时生成的循环访问路由表倾向将元组发送到与上游任务通信距离较短的下游任务;但这样会造成部分下游任务中元组大量累计而另一部分下游任务几乎没有元组到达。为此,还需要将所有上游实例到所有下游实例的路由表访问权重综合考虑,进行一轮再平衡以实现负载均衡。计算
Figure SMS_51
到/>
Figure SMS_52
的路由表访问权重/>
Figure SMS_53
根据下游实例/>
Figure SMS_54
的权重/>
Figure SMS_55
来安排/>
Figure SMS_56
在循环访问路由表中出现的次数。
每一个上游实例都维持一个循环访问路由表,并通过令牌标记当前选择的下游实例。当元组到达上游实例
Figure SMS_57
时,将查询循环访问路由表中当前被标记的实例,元组将被发往该下游实例,然后令牌将往前移动,随着元组到来,令牌将不断在路由表中循环。
S223、对于低频字段值,使用一致性哈希分组算法选择下游实例。
可选地,S223中的使用一致性哈希分组算法选择下游实例,包括:
获取下游任务ID列表,给每一个下游任务ID加上一个唯一确定的随机数,并建立下游任务ID到哈希环上固定位置的映射。
根据用户设定字段的字段值,将数据流中元组映射到哈希环上,具有相同字段值的元组将被映射到哈希环的同一位置上。
选择在哈希环上与元组距离最短的下游任务ID作为该元组的下游实例。
一种可行的实施方式中,低频字段值取值数量约占总字段值的80%,但每个字段值出现的频率都很低,它们的总和也仅占据数据流中约20%的流量。使用哈希函数可以将一个低频字段值映射到一个单独的任务上,在维护字段值的完整性的同时,也不会造成单个实例负载过重。
目标实例选择算法如下所示:
Figure SMS_58
为了维护分布式流计算系统的可缩放性,避免在组件的任务数量发生变化时,字段值发生大规模的迁移,本发明采用一致性哈希分组算法为低频字段值选择目标实例。
如图4所示,一致性哈希分组算法的基础结构是一个大小固定的哈希环。在分组的准备工作阶段,算法将获取下游任务ID列表,并将任务映射到哈希环上。
由于在分布式流计算平台中,单个组件的任务数量较少且TaskID取值连续,为了避免一致性哈希算法在任务节点太少且节点分布不均匀的情况下,出现数据倾斜问题,算法会给每一个TaskID加上一个唯一确定的随机数,然后再建立TaskID到哈希环上固定位置的映射,以实现TaskID在哈希环上较为均匀的分布。
在进行元组分组时,算法会根据用户设定字段的字段值,将元组映射到哈希环上,具有相同字段值的元组将被映射到哈希环的同一位置上。而后,算法将为元组选择在哈希环上与元组距离最短的下游任务ID作为该元组的目的实例。
本发明实施例中,提出了针对有状态运算符的字段值频率感知分组方法。该方法通过Count-min Sketch算法和GRU算法统计并预测数据流中字段值分布情况,对于高频字段值,通过降低通信延迟和使用下游任务资源控制路由表生成来实现低延迟且负载均衡的分组。对于低频字段值使用一致性哈希分组算法来选择目标实例。该方法能够以较低的字段值拆分程度实现下游有状态运算符实例的负载均衡,并提高拓扑中元组的吞吐量,降低系统延迟。
如图5所示,本发明实施例提供了一种通信和资源感知的数据流分组系统,该系统应用于实现通信和资源感知的数据流分组方法,该系统包括监控模块以及下游任务选择模块;
其中:
监控模块,用于获取拓扑信息,并将拓扑信息发送至下游任务选择模块;其中,拓扑信息包括数据流分组任务的 CPU 资源和拓扑中各个任务间的通信距离。
下游任务选择模块,用于进行数据流中字段值频率的预测,并根据字段值频率预测结果以及拓扑信息进行数据流分组。
可选地,拓扑采用有状态运算符作为拓扑的组件,进行字段值的状态管理。
可选地,下游任务选择模块,进一步用于:
采用最小计数草图Count-Min Sketch算法统计数据流中预设时间间隔内字段值的频率,得到字段值计数表。
根据字段值计数表以及循环门单元GRU算法进行字段值的频率预测,得到预测频次表,预测频次表为字段值频率预测结果。
可选地,下游任务选择模块,进一步用于:
S21、根据字段值频率预测结果以及拓扑信息将字段值划分为高频字段值或低频字段值。
S22、对于高频字段值,通过设计负载平衡的循环访问路由表选择下游实例。
S23、对于低频字段值,使用一致性哈希分组算法选择下游实例。
可选地,下游任务选择模块,进一步用于:
S211、构建任务间负载平衡程度的理论值,设定任务间负载平衡程度阈值。
S212、根据任务间负载平衡程度的理论值以及任务间负载平衡程度阈值,解算出高频字段值占比。
S213、根据高频字段值占比以及拓扑中字段取值数量,求解出高频字段值数量。
S214、根据高频字段值数量以及字段值频率预测结果将字段值划分为高频字段值或低频字段值。
可选地,任务间负载平衡程度的理论值,如下式(1)所示:
Figure SMS_59
(1)
其中,
Figure SMS_60
为数据流中字段取值数量,/>
Figure SMS_61
为组件中任务个数,/>
Figure SMS_62
为高频字段值个数,/>
Figure SMS_63
为字段值/>
Figure SMS_64
出现的概率,/>
Figure SMS_65
标注字段值的等级。
可选地,下游任务选择模块,进一步用于:
通过拓扑中各个任务间的通信距离调整下游实例权重,生成任一上游实例到任一下游实例的循环访问路由表。
调整所有上游实例到所有下游实例的循环访问路由表的访问权重。
任一上游实例执行调整后的循环访问路由表,并通过令牌标记当前选择的下游实例,当数据流中元组到达任一上游实例时,将元组发送至当前选择的下游实例。
可选地,下游任务选择模块,进一步用于:
获取下游任务ID列表,给每一个下游任务ID加上一个唯一确定的随机数,并建立下游任务ID到哈希环上固定位置的映射。
根据用户设定字段的字段值,将数据流中元组映射到哈希环上,具有相同字段值的元组将被映射到哈希环的同一位置上。
选择在哈希环上与元组距离最短的下游任务ID作为该元组的下游实例。
本发明实施例中,提出了针对有状态运算符的字段值频率感知分组方法。该方法通过Count-min Sketch算法和GRU算法统计并预测数据流中字段值分布情况,对于高频字段值,通过降低通信延迟和使用下游任务资源控制路由表生成来实现低延迟且负载均衡的分组。对于低频字段值使用一致性哈希分组算法来选择目标实例。该方法能够以较低的字段值拆分程度实现下游有状态运算符实例的负载均衡,并提高拓扑中元组的吞吐量,降低系统延迟。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种通信和资源感知的数据流分组方法,其特征在于,所述方法由通信和资源感知的数据流分组系统实现,所述系统包括监控模块以及下游任务选择模块;
所述方法包括:
S1、所述监控模块获取拓扑信息,并将所述拓扑信息发送至所述下游任务选择模块;其中,所述拓扑信息包括数据流分组任务的 CPU 资源和拓扑中各个任务间的通信距离;
S2、所述下游任务选择模块进行数据流中字段值频率的预测,并根据字段值频率预测结果以及所述拓扑信息进行数据流分组。
2.根据权利要求1所述的方法,其特征在于,所述S1中的拓扑采用有状态运算符作为拓扑的组件,进行字段值的状态管理。
3.根据权利要求1所述的方法,其特征在于,所述S2中的下游任务选择模块进行数据流中字段值频率的预测,包括:
采用最小计数草图Count-Min Sketch算法统计数据流中预设时间间隔内字段值的频率,得到字段值计数表;
根据所述字段值计数表以及循环门单元GRU算法进行字段值的频率预测,得到预测频次表,所述预测频次表为字段值频率预测结果。
4.根据权利要求1所述的方法,其特征在于,所述S2中的根据字段值频率预测结果以及所述拓扑信息进行数据流分组,包括:
S21、根据字段值频率预测结果以及所述拓扑信息将字段值划分为高频字段值或低频字段值;
S22、对于高频字段值,通过设计负载平衡的循环访问路由表选择下游实例;
S23、对于低频字段值,使用一致性哈希分组算法选择下游实例。
5.根据权利要求4所述的方法,其特征在于,所述S21中的根据字段值频率预测结果以及所述拓扑信息将字段值划分为高频字段值或低频字段值,包括:
S211、构建任务间负载平衡程度的理论值,设定任务间负载平衡程度阈值;
S212、根据所述任务间负载平衡程度的理论值以及任务间负载平衡程度阈值,解算出高频字段值占比;
S213、根据所述高频字段值占比以及拓扑中字段取值数量,求解出高频字段值数量;
S214、根据所述高频字段值数量以及字段值频率预测结果将字段值划分为高频字段值或低频字段值。
6.根据权利要求5所述的方法,其特征在于,所述S211中的任务间负载平衡程度的理论值,如下式(1)所示:
Figure QLYQS_1
(1)
其中,
Figure QLYQS_2
为数据流中字段取值数量,/>
Figure QLYQS_3
为组件中任务个数,/>
Figure QLYQS_4
为高频字段值个数,
Figure QLYQS_5
为字段值/>
Figure QLYQS_6
出现的概率,/>
Figure QLYQS_7
标注字段值的等级。
7.根据权利要求4所述的方法,其特征在于,所述S22中的设计负载平衡的循环访问路由表选择下游实例,包括:
通过拓扑中各个任务间的通信距离调整下游实例权重,生成任一上游实例到任一下游实例的循环访问路由表;
调整所有上游实例到所有下游实例的循环访问路由表的访问权重;
任一上游实例执行调整后的循环访问路由表,并通过令牌标记当前选择的下游实例,当数据流中元组到达任一上游实例时,将所述元组发送至所述当前选择的下游实例。
8.根据权利要求4所述的方法,其特征在于,所述S23中的使用一致性哈希分组算法选择下游实例,包括:
获取下游任务ID列表,给每一个下游任务ID加上一个唯一确定的随机数,并建立下游任务ID到哈希环上固定位置的映射;
根据用户设定字段的字段值,将数据流中元组映射到所述哈希环上,具有相同字段值的元组将被映射到哈希环的同一位置上;
选择在所述哈希环上与元组距离最短的下游任务ID作为该元组的下游实例。
9.一种通信和资源感知的数据流分组系统,其特征在于,所述系统包括监控模块以及下游任务选择模块;
其中:
所述监控模块,用于获取拓扑信息,并将所述拓扑信息发送至所述下游任务选择模块;其中,所述拓扑信息包括数据流分组任务的 CPU 资源和拓扑中各个任务间的通信距离;
所述下游任务选择模块,用于进行数据流中字段值频率的预测,并根据字段值频率预测结果以及所述拓扑信息进行数据流分组。
10.根据权利要求9所述的系统,其特征在于,所述下游任务选择模块,进一步用于:
S21、根据字段值频率预测结果以及所述拓扑信息将字段值划分为高频字段值或低频字段值;
S22、对于高频字段值,通过设计负载平衡的循环访问路由表选择下游实例;
S23、对于低频字段值,使用一致性哈希分组算法选择下游实例。
CN202310594872.4A 2023-05-25 2023-05-25 一种通信和资源感知的数据流分组方法及系统 Active CN116319381B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310594872.4A CN116319381B (zh) 2023-05-25 2023-05-25 一种通信和资源感知的数据流分组方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310594872.4A CN116319381B (zh) 2023-05-25 2023-05-25 一种通信和资源感知的数据流分组方法及系统

Publications (2)

Publication Number Publication Date
CN116319381A true CN116319381A (zh) 2023-06-23
CN116319381B CN116319381B (zh) 2023-07-25

Family

ID=86785547

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310594872.4A Active CN116319381B (zh) 2023-05-25 2023-05-25 一种通信和资源感知的数据流分组方法及系统

Country Status (1)

Country Link
CN (1) CN116319381B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200084269A1 (en) * 2018-09-07 2020-03-12 Red Hat, Inc. Consistent Hash-Based Load Balancer
CN112783644A (zh) * 2020-12-31 2021-05-11 湖南大学 一种基于高频键值计数的分布式倾斜流处理方法和系统
CN114675969A (zh) * 2022-03-28 2022-06-28 中南大学 基于自适应负载分区的弹性缩放流处理方法及系统
CN114817241A (zh) * 2022-03-25 2022-07-29 北京邮电大学 基于Flink引擎计算节点动态扩展的任务评价方法和装置
CN115412501A (zh) * 2022-08-30 2022-11-29 哈尔滨工业大学 基于Flink的多层次协同重配置流处理系统及其处理方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200084269A1 (en) * 2018-09-07 2020-03-12 Red Hat, Inc. Consistent Hash-Based Load Balancer
CN112783644A (zh) * 2020-12-31 2021-05-11 湖南大学 一种基于高频键值计数的分布式倾斜流处理方法和系统
CN114817241A (zh) * 2022-03-25 2022-07-29 北京邮电大学 基于Flink引擎计算节点动态扩展的任务评价方法和装置
CN114675969A (zh) * 2022-03-28 2022-06-28 中南大学 基于自适应负载分区的弹性缩放流处理方法及系统
CN115412501A (zh) * 2022-08-30 2022-11-29 哈尔滨工业大学 基于Flink的多层次协同重配置流处理系统及其处理方法

Also Published As

Publication number Publication date
CN116319381B (zh) 2023-07-25

Similar Documents

Publication Publication Date Title
Guo et al. Energy-efficient and delay-guaranteed workload allocation in IoT-edge-cloud computing systems
Liu et al. Adaptive asynchronous federated learning in resource-constrained edge computing
CN107196870B (zh) 一种基于dpdk的流量动态负载均衡方法
Hazra et al. Cooperative transmission scheduling and computation offloading with collaboration of fog and cloud for industrial IoT applications
WO2019179250A1 (zh) 调度方法、调度器、存储介质及系统
Tong et al. Dynamic energy-saving offloading strategy guided by Lyapunov optimization for IoT devices
CN115629865B (zh) 一种基于边缘计算的深度学习推理任务调度方法
Kundroo et al. Node-based horizontal pod autoscaler in kubeedge-based edge computing infrastructure
CN116319381B (zh) 一种通信和资源感知的数据流分组方法及系统
Tao et al. Congestion-aware traffic allocation for geo-distributed data centers
Zhou et al. Deadline-aware peer-to-peer task offloading in stochastic mobile cloud computing systems
CN116302578B (zh) 一种QoS约束的流应用延迟确保方法及系统
CN113032146A (zh) 一种面向多接入边缘计算环境的健壮性服务供应方法
CN115484205B (zh) 确定性网络路由与队列调度方法及装置
CN112601232B (zh) 基于最小费用最大流的负载均衡的多服务迁移方法及系统
Zhu et al. Load balancing algorithm for web server based on weighted minimal connections
Zhang et al. Towards stable flow scheduling in data centers
Kargahi et al. Utility accrual dynamic routing in real-time parallel systems
Mamduhi et al. State-dependent data queuing in shared-resource networked control systems
CN112148474A (zh) 面向负载均衡的龙芯大数据一体机自适应任务分割方法及系统
Geetmala et al. A Clustered Approach for Load Balancing inDistributed Systems
CN114827142B (zh) 一种确保容器化边缘服务请求实时性的调度方法
Yang et al. Traffic Management for Distributed Machine Learning in RDMA-enabled Data Center Networks
CN117939572B (zh) 电力物联网终端接入方法
CN116192962B (zh) 一种面向云边端计算的通信聚合方法及系统

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant