一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

分布式处理系统的监控方法及装置与流程

2022-08-13 23:21:47 来源:中国专利 TAG:


1.本说明书涉及分布式技术领域,尤其涉及分布式处理系统的监控方法及装置。


背景技术:

2.随着大数据技术在各行各业得到普及,数据产生的价值对客户越来越重要,在一些领域大批量离线计算的小时、天级延时对业务的时效性支持不够,客户越来越关注数据的实时性。实时计算分布式技术经过几代的演进,从storm、spark streaming到flink,低延时、高吞吐量、强一致性等方面都得到了成熟的发展。
3.目前,实时计算分布式技术的普及给客户数据分析带来时效性的同时,由于flink平台中的算子经常会出现异常,也给平台的数据运维造成了新的压力。flink内部提供一些运维监控指标去辅助确定故障算子,但往往发现问题具有一定的延迟性,从而导致无法及时地发现异常算子。


技术实现要素:

4.为克服相关技术中存在的问题,本说明书提供了分布式处理系统的监控方法及装置。
5.根据本说明书实施例的第一方面,提供一种分布式处理系统的监控方法,所述分布式处理系统包括存在上下游关系的算子;
6.所述方法包括:
7.针对分布式任务,获取所述算子对应的数据处理速率;
8.根据所述算子和/或其上游算子对应的数据处理速率,确定所述算子的至少一个工作状态;
9.响应于所述算子的任意工作状态指示所述算子存在异常,进行相应的告警操作。
10.可选的,所述算子对应于至少一个算子实例,每个算子实例存在对应的数据处理速率;
11.所述根据所述算子和/或和/或其上游算子对应的数据处理速率,确定所述算子的至少一个工作状态,包括:
12.根据第一算子和/或第二算子对应的各个算子实例所分别对应的数据处理速率之间的误差值确定所述第一算子的至少一个工作状态;其中,所述第一算子为所述算子中的任一算子;所述第二算子为所述第一算子的上游算子。
13.可选的,所述数据处理速率包括第一数据生产速率;其中,所述第一数据生产速率表示算子生产数据的速率;所述第一算子的工作状态包括第一工作状态;
14.其中,所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配是否均匀;
15.所述根据第一算子和/或第二算子对应的各个算子实例所分别对应的数据处理速率之间的误差值确定所述第一算子的至少一个工作状态,包括:
16.计算所述第二算子对应的各个算子实例所分别对应的第一数据生产速率中的任意两个第一数据生产速率之间的第一误差值;
17.根据所述第一误差值,确定所述第一算子的第一工作状态。
18.可选的,所述根据所述第一误差值,确定所述第一算子的第一工作状态,包括:
19.在存在第一误差值达到第一预设值的情况下,确定所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀;
20.在所有第一误差值均未达到第一预设值的情况下,确定所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配均匀。
21.可选的,所述在存在第一误差值达到第一预设值的情况下,确定所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀,包括:
22.获取所述第二算子对应的出端缓冲区所对应的扩容速率;其中,所述出端缓冲区用于存放所述第二算子生产的数据;
23.在存在第一误差值达到第一预设值,且所述扩容速率达到第一预设速率的情况下,确定所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀。
24.可选的,所述响应于所述算子的任意工作状态指示所述算子存在异常,进行相应的告警操作,包括:
25.在所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀的情况下,输出第一告警信息;其中所述第一告警信息用于提示增加下游算子并发度的数量。
26.可选的,所述响应于所述算子的任意工作状态指示所述算子存在异常,进行相应的告警操作,包括:
27.在所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀的情况下,基于所述分布式任务对应的执行流程,确定处于所述第一算子上方的各个第三算子;
28.获取各个第三算子分别对应的第一工作状态;
29.在所述各个第三算子分别对应的第一工作状态均指示上游算子生产的数据分配不均匀的情况下,确定所述分布式任务对应的源算子所对应的除第一下游算子以外的其它下游算子;其中,所述第一下游算子为所述源算子的下游算子,且为所述第三算子;
30.根据其它下游算子对应的数据消费速率,进行告警操作。
31.可选的,上游算子与下游算子之间通过通道连接;
32.所述根据其它下游算子对应的数据消费速率,进行告警操作,包括:
33.确定所述其它下游算子对应的数据消费速率与所述源算子对应的第一数据生产速率之间的第二误差值;
34.在所述第二误差值达到第二预设值的情况下,输出第二告警信息;其中,所述第二告警信息用于提示源端数据过多,增加下游算子并发度的数量。
35.可选的,上游算子与下游算子之间通过通道连接;在所述各个第三算子分别对应的第一工作状态均指示上游算子生产的数据分配不均匀的情况下,所述方法还包括:
36.确定所述其它下游算子对应的数据消费速率与所述源算子对应的第一数据生产
速率之间的第二误差值;
37.在所述第二误差值未达到第三预设值的情况下,进行第一通道重分配操作;其中,所述第一通道重分配操作指示控制所述其它下游算子消费所述第一下游算子对应的入端缓冲区中的数据;所述入端缓冲区中的数据为所述源算子生产的数据。
38.可选的,在所述各个第三算子分别对应的第一工作状态均指示上游算子生产的数据分配不均匀的情况下,所述方法还包括:
39.获取所述其它下游算子对应的数据消费速率和所述第一下游算子对应的数据消费速率中的最小值;
40.根据所述最小值,生成限速指令,并将所述限速指令发送至所述源算子,以使所述源算子基于所述最小值,调整所述源算子对应的第一数据生产速率。
41.可选的,在获取各个第三算子分别对应的第一工作状态之后,所述方法还包括:
42.在所有第三算子的第一工作状态均指示上游算子生产的数据分配均匀的情况下,进行第二通道重分配操作;其中,所述第二通道重分配操作指示正常算子实例消费异常算子实例对应的入端缓冲区中的数据;所述正常算子实例为所述第一算子对应的算子实例中的第一工作状态指示上游算子生产数据分配均匀的算子实例,异常算子实例为所述第一算子对应的算子实例中的第一工作状态指示上游算子生产数据分配不均匀的算子实例。
43.可选的,在所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀的情况下,所述方法还包括:
44.记录所述第一算子对应的上游算子生产的数据所对应的键值,并输出所述键值。
45.可选的,所述数据处理速率包括数据消费速率;所述数据消费速率表示算子消费上游算子产生的数据的速率;
46.所述第一算子的工作状态包括第一工作状态;
47.其中,所述第一算子的第二工作状态指示数据消费能力是否正常;
48.所述根据第一算子和/或第二算子对应的各个算子实例所分别对应的数据处理速率之间的误差值确定所述第一算子的至少一个工作状态,包括:
49.计算第一算子对应的各个数据消费速率中的任意两个数据消费速率之间的第三误差值;
50.根据所述第三误差值,确定所述第一算子对应的各个算子实例分别对应的第二工作状态。
51.可选的,所述算子被调度至至少一个资源组slot上;所述slot与所述算子实例一一对应;
52.所述响应于所述算子的任意工作状态指示所述算子存在异常,进行相应的告警操作,包括:
53.在所述算子实例的第二工作状态指示数据消费能力异常的情况下,确定所述算子实例对应的slot所属的目标任务管理器;
54.确定所述目标任务管理器所包括的除所述算子实例以外的所有第一算子实例,并获取各个第一算子实例分别对应的第二工作状态;
55.根据各个第一算子实例分别对应的第二工作状态,进行相应的告警操作。
56.可选的,所述根据各个第一算子实例分别对应的第二工作状态,进行相应的告警
操作,包括:
57.计算第二工作状态指示数据消费能力异常的第一算子实例的数目与第一算子实例的总数目的比值,得到异常第一算子实例比例;
58.在异常第一算子实例比例达到第一预设比例的情况下,输出目标任务管理器故障提示信息;
59.在异常第一算子实例比例未达到第一预设比例的情况下,输出所述算子实例异常提示信息。
60.可选的,所述响应于所述算子的任意工作状态指示所述算子存在异常,进行相应的告警操作,包括:
61.在所述算子实例的第二工作状态指示数据消费能力异常的情况下,输出所述算子实例异常提示信息。
62.可选的,所述算子对应至少一个算子实例;所述算子实例存在对应的缓冲区;
63.所述方法还包括:
64.获取各个算子实例分别对应的缓冲区的扩容速率;
65.在所述缓冲区的扩容速率达到第二预设速率的情况下,控制所述缓冲区停止扩容。
66.可选的,所述算子对应至少一个算子实例;所述方法还包括:
67.获取在设定时间获取到所述算子实例对应的所有数据处理速率,并获取所述算子实例对应的历史平均处理速率;
68.若所述所有数据处理速率未达到所述历史平均处理速率,则输出慢算子告警信息。
69.根据本说明书实施例的第二方面,提供一种分布式处理系统的监控装置,所述分布式处理系统包括存在上下游关系的算子;
70.所述装置包括:
71.速率获取模块,用于针对分布式任务,获取所述算子对应的数据处理速率;
72.速率处理模块,用于根据所述算子和/或其上游算子对应的数据处理速率,确定所述算子的至少一个工作状态;
73.告警模块,用于响应于所述算子的任意工作状态指示所述算子存在异常,进行相应的告警操作。
74.可选的,所述算子对应于至少一个算子实例,每个算子实例存在对应的数据处理速率;
75.所述速率处理模块具体用于:
76.根据第一算子和/或第二算子对应的各个算子实例所分别对应的数据处理速率之间的误差值确定所述第一算子的至少一个工作状态;其中,所述第一算子为所述算子中的任一算子;所述第二算子为所述第一算子的上游算子。
77.可选的,所述数据处理速率包括第一数据生产速率;其中,所述第一数据生产速率表示算子生产数据的速率;所述第一算子的工作状态包括第一工作状态;
78.其中,所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配是否均匀;
79.所述速率处理模块具体用于:
80.计算所述第二算子对应的各个算子实例所分别对应的第一数据生产速率中的任意两个第一数据生产速率之间的第一误差值;
81.根据所述第一误差值,确定所述第一算子的第一工作状态。
82.可选的,所述速率处理模块还用于:
83.在存在第一误差值达到第一预设值的情况下,确定所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀;
84.在所有第一误差值均未达到第一预设值的情况下,确定所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配均匀。
85.可选的,所述速率处理模块还用于:
86.获取所述第二算子对应的出端缓冲区所对应的扩容速率;其中,所述出端缓冲区用于存放所述第二算子生产的数据;
87.在存在第一误差值达到第一预设值,且所述扩容速率达到第一预设速率的情况下,确定所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀。
88.可选的,所述告警模块具体用于:
89.在所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀的情况下,输出第一告警信息;其中所述第一告警信息用于提示增加下游算子并发度的数量。
90.可选的,所述告警模块具体用于:
91.在所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀的情况下,基于所述分布式任务对应的执行流程,确定处于所述第一算子上方的各个第三算子;
92.获取各个第三算子分别对应的第一工作状态;
93.在所述各个第三算子分别对应的第一工作状态均指示上游算子生产的数据分配不均匀的情况下,确定所述分布式任务对应的源算子所对应的除第一下游算子以外的其它下游算子;其中,所述第一下游算子为所述源算子的下游算子,且为所述第三算子;
94.根据其它下游算子对应的数据消费速率,进行告警操作。
95.可选的,上游算子与下游算子之间通过通道连接;
96.可选的,所述告警模块具体用于:
97.确定所述其它下游算子对应的数据消费速率与所述源算子对应的第一数据生产速率之间的第二误差值;
98.在所述第二误差值达到第二预设值的情况下,输出第二告警信息;其中,所述第二告警信息用于提示源端数据过多,增加下游算子并发度的数量。
99.可选的,上游算子与下游算子之间通过通道连接;所述装置还包括第一通道处理模块;
100.所述第一通道处理模块具体用于:
101.在所述各个第三算子分别对应的第一工作状态均指示上游算子生产的数据分配不均匀的情况下,确定所述其它下游算子对应的数据消费速率与所述源算子对应的第一数
据生产速率之间的第二误差值;
102.在所述第二误差值未达到第三预设值的情况下,进行第一通道重分配操作;其中,所述第一通道重分配操作指示控制所述其它下游算子消费所述第一下游算子对应的入端缓冲区中的数据;所述入端缓冲区中的数据为所述源算子生产的数据。
103.可选的,所述装置还包括限速模块;
104.所述限速模块具体用于:
105.在所述各个第三算子分别对应的第一工作状态均指示上游算子生产的数据分配不均匀的情况下,获取所述其它下游算子对应的数据消费速率和所述第一下游算子对应的数据消费速率中的最小值;
106.根据所述最小值,生成限速指令,并将所述限速指令发送至所述源算子,以使所述源算子基于所述最小值,调整所述源算子对应的第一数据生产速率。
107.可选的,所述装置还包括第二通道处理模块;
108.所述第二通道处理模块具体用于:
109.在获取各个第三算子分别对应的第一工作状态之后,在所有第三算子的第一工作状态均指示上游算子生产的数据分配均匀的情况下,进行第二通道重分配操作;其中,所述第二通道重分配操作指示正常算子实例消费异常算子实例对应的入端缓冲区中的数据;所述正常算子实例为所述第一算子对应的算子实例中的第一工作状态指示上游算子生产数据分配均匀的算子实例,异常算子实例为所述第一算子对应的算子实例中的第一工作状态指示上游算子生产数据分配不均匀的算子实例。
110.可选的,所述装置还包括数据记录模块;
111.数据记录模块具体用于:
112.在所述第一算子的第一工作状态指示所述第一算子对应的上游算子生产的数据分配不均匀的情况下,记录所述第一算子对应的上游算子生产的数据所对应的键值,并输出所述键值。
113.可选的,所述数据处理速率包括数据消费速率;所述数据消费速率表示算子消费上游算子产生的数据的速率;所述第一算子的工作状态包括第一工作状态;
114.其中,所述第一算子的第二工作状态指示数据消费能力是否正常;
115.所述速率处理模块具体用于:
116.计算第一算子对应的各个数据消费速率中的任意两个数据消费速率之间的第三误差值;
117.根据所述第三误差值,确定所述第一算子对应的各个算子实例分别对应的第二工作状态。
118.可选的,所述算子被调度至至少一个资源组slot上;所述slot与所述算子实例一一对应;
119.所述告警模块具体用于:
120.在所述算子实例的第二工作状态指示数据消费能力异常的情况下,确定所述算子实例对应的slot所属的目标任务管理器;
121.确定所述目标任务管理器所包括的除所述算子实例以外的所有第一算子实例,并获取各个第一算子实例分别对应的第二工作状态;
122.根据各个第一算子实例分别对应的第二工作状态,进行相应的告警操作。
123.可选的,所述告警模块还用于:
124.计算第二工作状态指示数据消费能力异常的第一算子实例的数目与第一算子实例的总数目的比值,得到异常第一算子实例比例;
125.在异常第一算子实例比例达到第一预设比例的情况下,输出目标任务管理器故障提示信息;
126.在异常第一算子实例比例未达到第一预设比例的情况下,输出所述算子实例异常提示信息。
127.可选的,所述告警模块还用于:
128.在所述算子实例的第二工作状态指示数据消费能力异常的情况下,输出所述算子实例异常提示信息。
129.可选的,所述算子对应至少一个算子实例;所述算子实例存在对应的缓冲区;
130.所述告警模块还用于:
131.获取各个算子实例分别对应的缓冲区的扩容速率;
132.在所述缓冲区的扩容速率达到第二预设速率的情况下,控制所述缓冲区停止扩容。
133.可选的,所述算子对应至少一个算子实例;所述告警模块还用于:
134.获取在设定时间获取到所述算子实例对应的所有数据处理速率,并获取所述算子实例对应的历史平均处理速率;
135.若所述所有数据处理速率未达到所述历史平均处理速率,则输出慢算子告警信息。
136.根据本说明书实施例的第三方面,提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上第一方面以及第一方面各种可能的设计所述的分布式处理系统的监控方法。
137.根据本说明书实施例的第四方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述程序时实现如上第一方面以及第一方面各种可能的设计所述的分布式处理系统的监控方法。
138.根据本说明书实施例的第五方面,提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上第一方面以及第一方面各种可能的设计所述的分布式处理系统的监控方法。
139.本说明书的实施例提供的技术方案可以包括以下有益效果:
140.本说明书实施例中,分布式处理系统包括存在上下游关系的算子。获取分布式任务所涉及的各个算子对应的数据处理速率,对应每个算子,根据该算子与其上游算子对应的数据处理速率确定该算子处理数据是否异常,从而确定该算子在至少一个工作状态,以及时发现故障算子。当算子的某个工作状态指示算子存在异常的情况下,进行相应的告警操作,保证告警的及时性,实现分布式处理系统的智能监控,进而可以及时解决异常,提高分布式处理系统的鲁棒性和可运维性。
141.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
142.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
143.图1是本说明书根据一示例性实施例示出的一种分布式处理系统的监控方法的流程图。
144.图2是本说明书根据一示例性实施例示出的一种算子示意图。
145.图3是本说明书根据一示例性实施例示出的一种执行计划示意图。
146.图4是本说明书根据一示例性实施例示出的另一种算子示意图。
147.图5是本说明书根据一示例性实施例示出的又一种分布式处理系统的监控方法的流程图。
148.图6是本说明书根据一示例性实施例示出的再一种算子示意图。
149.图7是本说明书根据一示例性实施例示出的再一种分布式处理系统的监控方法的流程图。
150.图8是本说明书实施例分布式处理系统的监控装置所在电子设备的一种硬件结构图。
151.图9是本说明书根据一示例性实施例示出的一种分布式处理系统的监控装置的框图。
具体实施方式
152.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
153.在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其它含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
154.应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
155.接下来对本说明书实施例进行详细说明。
156.如图1所示,图1是本说明书根据一示例性实施例示出的一种分布式处理系统的监控方法的流程图,所述分布式处理系统包括的处理节点上设置有算子,算子之间存在上下游关系。该方法的执行主体为主控服务器,具体的,为计算机设备,也即主控服务器中的处理器,该方法包括以下步骤:
157.步骤101、针对分布式任务,获取算子对应的数据处理速率。
158.在本实施例中,分布式处理系统为flink系统。分布式任务指示flink job,也即
flink作业。flink作业包括由多个算子形成的算子链,对于算子链中相邻两个算子而言,在前(即在上方)的算子可以称为上游算子,在后(即在下方)的算子可以称为下游算子。流量总是从上游发往下游,即下游算子对上游算子生产的数据进行处理。对于算子链中的每个算子,确定该算子对应的数据处理速率。
159.可选的,数据处理速率包括数据消费速率和/或第一数据生产速率。数据消费速率表示算子消费上游算子产生的数据的速率。第一数据生产速率表示算子生产数据的速率。
160.其中,数据消费速率指示算子在第一预设单位时间内处理上游算子产生的数据的速率,其反应该算子的处理能力;第一数据生产速率指示算子在第一预设单位时间内产生数据的速率,其反应上游算子生产数据的情况。例如,分布式任务所涉及的算子,即算子链包括算子1和算子2,算子1为算子2的上游算子,算子1把数据,即流量传输至算子2,该数据便为算子2的上游算子产生的数据,算子2对该数据进行处理,例如,对其进行过滤,过滤得到的数据变为算子2生产的数据。
161.可选的,上游算子将生产的数据保存至入端缓冲区,下游算子消费入端缓冲区重的数据,下游算子将其生产的数据保存至出端缓冲区。相应的,算子对应的数据消费速率指示该算子消费入端缓冲区中的数据的速率;算子对应的第一数据生产速率指示该算子填充出端缓冲区的速率,例如,在计算第一数据生产速率时,获取一定时间内,该出端缓冲区增加的数据量,并将该数据量除以该时间,得到第一数据生产速率。
162.可选的,算子对应的数据处理速率可以由安装在该算子上的客户端插件采集的,客户端在采集到算子对应的数据处理速率后,并将发送至主控服务器。
163.可选的,算子的上游算子的数目为至少一个。上下游算子之间通过通道channel连接。每个算子包括,即对应至少一个算子实例,算子实例是通过对算子进行实例化得到的。相应的,算子对应的数据处理速率包括该算子对应的各个算子实例所分别对应的数据处理速率。例如,当数据处理速率包括数据消费速率时,算子包括算子d,算子d对应2个算子实例,分别为算子实例d1和算子实例d2。算子实例d1对应的数据消费速率为3m/s,算子实例d2对应的数据消费速率为5m/s,则算子d对应的数据消费速率包括算子实例d1对应的数据消费速率(即3m/s)和算子实例d2对应的数据消费速率(即5m/s)。
164.可选的,算子对应的一个算子实例与该算子的上游算子所对应的至少一个算子实例,也即上游算子实例之间通过通道连接,每个通道对应的一个入端缓冲区和出端缓冲区。例如,如图2所示,算子2对应2个算子实例2,算子1对应的6个算子实例1,算子1为算子2的上游算子,一个算子实例2与3个算子实例1分别通过三个通道连接,也即一个算子实例1与一个算子实例2之间通过一个通道连接,该算子实例2消费存放该算子实例1生产的数据的入端缓冲区,也即该通道对应的入端缓冲区中的数据。
165.具体的,flink作业架构包括三部分:作业client、flink jobmanager、flink taskmanager(任务管理器),作业经由client和jobmanager分三次解析为stream graph、job graph,execution graph。主控服务器监控jobmanager,若有新的作业(即新的数据)提交,则获取execution graph,以查询作业被调度到taskmanager、slot,即作业所涉及的slot的地址、算子列表、算子之间依赖关系,算子并发度等等。如图3所示的作业的执行计划,即执行流程,vertex代表dag图上的某个顶点,jobvertex和executionvertex分别代表逻辑执行计划和物理执行计划。resultpartition代表顶点的输出,flink会按算子的并发
度进行实例化,以得到该算子对应的算子实例。如图4所示,resultsubpartition(即子分区)和并发数目一致初始化为2个,下游inputgate接收上游数据,并发数目由下游并发度控制。其中,map算子代表源端算子,reduce算子代替目的端算子,用这两个算子作为dag图上的两个顶点,一个顶点可以对应一个或多个算子(operator chain),为了方便描述,本技术将一个顶点对应一个算子。
166.具体的,上述描述的作业执行流程,可以确定:1)作业分配到的taskmanager的task slot;2)作业所涉及的算子标识、算子之间的父子依赖关系,即上下游关系;3)算子被调度到的slot的标识,算子的并发度,算子之间的通道数据等;4)每个算子对应的inputgate和resultsubpartion,以用来跟踪该算子对应的上游算子和下游算子;其中,源算子(即source算子)作为输入端inputgate。
167.可选的,上下游算子的并发度可以是不同的,每个算子可以被调度到至少一个slot上,slot与算子实例一一对应,例如,一个算子被调度到3个slot上,每个slot对应该算子的一个算子实例。按照并发度拆分每个slot上的线程数,比如一个10个taskmanager,每个taskmanager对应2个slot,map的并发度为10,那么map可以分配到5个taskmanager,每个slot上启动一个map线程。
168.可选的,上游算子和下游算子通过通道通信,通道数由上下游的并发数决定。比如,上游算子为10个并发度,下游算子为2个并发度,假设平均分配的话,每5个处理线程向下游算子的一个线程发送数据,也即上游算子共有10个算子实例,下游算子有2个算子实例,上游算子的每5个算子实例与下游算子的一个算子实例通信。在flink引擎中,上游算子和下游算子连接的通道并不是固定不变的。
169.其中,每个算子需要记录自己的上下游通道,相应的,客户端也会记录算子之间,也即算子实例之间的通道情况。
170.其中,上述标识包括名称、id等信息。例如,算子标识为算子id。
171.可选的,算子对应的数据处理速率还可以包括第二数据生产速率,第二数据生产速率表示算子的上游算子生产数据的速率,即填充入端缓冲区的速率。
172.可选的,算子对应的数据处理速率为算子实例对应的数据处理速率,具体的,算子实例对应的数据消费速率表示算子实例消费上游算子实例产生的数据的速率。第一数据生产速率表示该算子实例生产数据的速率。
173.可选的,每个算子实例对应一个入端缓冲区和一个出端缓冲区。入端缓冲区和出端缓冲区的总空间大小是可以变化,即可以进行扩容、缩容。主控服务器可以实时或定时获取算子实例对应的入端缓冲区信息和出端缓冲区信息;其中,入端缓冲区信息包括入端缓冲区的当前总大小,剩余大小等信息;同立,出端缓冲区信息包括出端缓冲区的当前总大小,剩余大小等信息。
174.可选的,算子对应的客户端记录该算子对应的各个算子实例所对应的入端缓冲区信息以及出端缓冲区信息,并将其发送至主控服务器。
175.可选的,主控服务器在获取到算子,即算子对应的各个算子实例的数据处理速率后,可以将其保存至目标位置,以用于聚合加工计算。第一预设单位时间可以是秒级,相应的,数据消费速率表示算子,也即算子实例每秒消费上游算子,也即上游算子实例产生的数据量大小。第一数据生产速率表示算子每秒生产的数据量大小。在对数据处理速率进行聚
合计算时,按照第二预设单位时间,对其进行聚合,其中,第二预设单位时间指示分钟,小时等级别。例如,当第二预设单位时间指示分钟级别时,聚合后的第一数据生产速率表示算子每分钟生产的数据量大小。
176.其中,目标位置包括数据库、es等能够存储数据的装置。
177.在本实施例中,在得到数据处理速率后,对其进行聚合计算,以使业务和运维人员可以参考聚合后的数据处理速率,对flink系统的相关状况(例如,算子的并发度)进行调优处理,以保证flink系统的性能。当然,也可以直接利用数据处理速率进行调优。
178.步骤102、根据算子和/或其上游算子对应的数据处理速率,确定算子的至少一个工作状态。
179.在本实施例中,对于每个算子,在得到该算子数据处理速率后,基于该算子对应的数据处理速率和/或位于该算子的上游算子锁对应的数据处理速度确定该算子在各个维度上处理数据(例如,生产、消费)的能力是否存在异常,以得到该算子的各个维度的工作状态,也即得到该算子的各个工作状态,该工作状态指示算子处理数据的能力是否异常,从而确定是否存在异常算子,实现算子的智能监控。
180.可选的,维度包括第一维度和/或第二维度,第一维度指示生产维度,第二维度指示消费维度。相应的,算子的工作状态包括算子的第一工作状态和/或算子的第二工作状态。其中,算子的第一工作状态指示上游算子生产的数据分配是否均匀,即表示该算子对应的所有上游算子实例生产的数据量相差是否较小。第二工作状态指示数据消费能力是否正常,即表示该算子对应的各个算子实例消费的数据量相差是否较小。
181.可选的,在确定所有算子中的任一算子的工作状态时,根据第一算子和/或第二算子对应的各个算子实例所分别对应的数据处理速率之间的误差值确定第一算子的至少一个工作状态。其中,第一算子为算子中的任一算子。第二算子为第一算子的上游算子。
182.具体的,当工作状态包括第一工作状态时,根据第一算子的上游算子(即第二算子)对应的算子实例所分别对应的数据处理速率之间的误差值确定第一算子的第一工作状态。
183.当工作状态包括第二工作状态时,根据第一算子对应的各个算子实例所分别对应的数据处理速率之间的误差值确定第一算子的第二工作状态。具体的,可以确定第一算子对应的各个算子实例的第二工作状态。
184.当工作状态既包括第一工作状态和第二工作状态时,根据第一算子的上游算子对应的算子实例所分别对应的数据处理速率之间的误差值确定第一算子的第一工作状态,同时,根据第一算子对应的各个算子实例所分别对应的数据处理速率之间的误差值确定第一算子的第二工作状态。
185.步骤103、响应于算子的任意工作状态指示算子存在异常,进行相应的告警操作。
186.在本实施例中,在确定算子在各个工作状态后,当某个工作状态指示该算子存在异常时,表明该算子为故障算子,则进行相应的告警操作,使得相关人员可以及时发现故障算子,从而可以及时解决故障,保证分布式处理系统的正常运行以及性能。
187.从上述描述可知,分布式处理系统包括多个算子,算子之间存在上下游关系。获取处理分布式任务所涉及的各个算子对应的数据处理速率,该数据处理速率包括数据消费速率和/或第一数据生产速率,数据消费速率表示算子消费其对应的上游算子所生产的数据
的速率,第一数据生产速率表示算子生产数据的速率。根据算子对应的数据消费速率和/或第一数据生产速率确定算子生产和/或消费数据是否异常,从而确定算子在至少一个维度上的工作状态,以及时发现故障算子。当算子在某个维度上的工作状态指示算子存在异常的情况下,进行相应的告警操作,保证告警的及时性,实现分布式处理系统的智能监控,进而可以及时解决异常,提高分布式处理系统的鲁棒性和可运维性。
188.如图5所示,图5是本说明书根据一示例性实施例示出的另一种分布式处理系统的监控方法的流程图,下面将结合一个具体实施例对确定算子的第一工作状态的过程进行详细说明,如图5所示,该方法包括以下步骤:
189.步骤501、针对分布式任务,获取算子对应的数据处理速率。其中,数据处理速率包括第一数据生产速率。第一数据生产速率表示算子生产数据的速率。
190.步骤502、计算第一算子的第二算子对应的各个算子实例所分别对应的第一数据生产速率中的任意两个第一数据生产速率之间的第一误差值。其中,第一算子为上述算子中的任一算子;第二算子为第一算子的上游算子。
191.在本实施例中,对于分布式处理系统中的每个算子,将该算子作为第一算子,并将第一算子的上游算子作为第二算子。获取该第二算子对应的各个算子实例(即第二算子实例)所对应的第一数据生产速率。对于每个第二算子实例,计算该第二算子实例对应的第一数据生产速率与其它第二算子实例对应的第一数据生产速率的差值,并将其作为该第二算子实例对应的第一误差值,该第一误差值指示两个第二算子实例在第一预设单位时间内生产的数据量的差值,即表示两个第二算子实例生产数据能力的差值。
192.步骤503、根据第一误差值,确定第一算子的第一工作状态。
193.在本实施例中,在得到第二算子对应的所有第一误差值后,也即在得到各个第二算子实例对应的第一误差值后,利用第一误差值确定各个第二算子实例生产数据的能力是否相差较小,即确定第一算子的上游算子生产的数据分配是否均匀,从而得到第一算子的第一工作状态。
194.可选的,根据第一误差值,确定第一算子的第一工作状态,包括:
195.在存在第一误差值达到第一预设值的情况下,确定第一算子的第一工作状态指示上游算子生产的数据分配不均匀。
196.在所有第一误差值均未达到第一预设值的情况下,确定第一算子的第一工作状态指示上游算子生产的数据分配均匀。
197.其中,达到表示大于和/或等于。未达到表示小于。
198.具体的,当两个第二算子实例对应的第一数据生产速率之间的第一误差值达到第一预设值时,表明该两个第二算子实例生产数据的能力相差较大,即一个第二算子实例生产的数据量较大,另一个第二算子实例生产的数据量较小,即第一算子对应的上游算子实例生产的数据分配不均匀,也即第一算子的第一工作状态指示第一算子的上游算子生产的数据分配不均匀。
199.当所有第一误差值均未达到第一预设值时,即任意两个第二算子实例对应的第一数据生产速率之间的第一误差值未达到第一预设值时,表明任意两个第二算子实例生产数据的能力相差较小,即第一算子对应的上游算子实例生产的数据分配均匀,也即第一算子的第一工作状态指示第一算子的上游算子生产的数据分配均匀。
200.当然,也可以基于第一误差值进行其它数学计算,并利用计算得到的数值确定第一算子的第一工作状态,例如,在得到两个第二算子实例对应的第一数据生产速率之间的第一误差值后,将该第一误差值与该两个第二算子实例中的任一第二算子实例对应的第一数据生产速率的比值,得到误差率,当该误差值达到预设值时,确定该第一算子的第一工作状态指示上游算子生产的数据分配不均匀,否则,确定该第一算子的第一工作状态指示上游算子生产的数据分配均匀。
201.可选的,还可以先确定出第一算子对应的各个算子实例的第一工作状态,以供利用各个算子实例的第一工作状态确定第一算子的第一工作状态,其过程包括:对于第一算子对应的每个算子实例,获取该算子实例对应的各个第二算子实例,在该各个第二算子实例之间的第一误差值均未达到第一预设值的情况下,表明该算子实例对应的上游算子实例之间的生产数据能力相差较小,则确定该算子实例的第一工作状态指示上游算子生产的数据分配均匀。
202.在该算子实例对应的各个第二算子实例之间的第一误差值达到第一预设值的情况下,表明该算子实例对应的上游算子实例之间的生产数据能力相差较大,确定该算子实例的第一工作状态指示上游算子生产的数据分配不均匀,从而确定算子的第一工作状态指示上游算子生产的数据分配不均匀。
203.在本实施例中,当第一算子对应的算子实例中存在任一算子实例的第一工作状态指示上游算子生产的数据分配不均匀时,确定第一算子的第一工作状态指示上游算子生产的数据分配不均匀。当第一算子对应的所有算子实例的第一工作状态均指示上游算子生产的数据分配均匀时,确定第一算子的第一工作状态指示上游算子生产的数据分配均匀。
204.可选的,在基于第一误差值确定第一算子的第一工作状态的基础上,还可以进一步利用第二算子对应的出端缓冲区确定第一算子的第一工作状态,其具体确定过程包括:
205.获取第二算子对应的出端缓冲区所对应的扩容速率。其中,出端缓冲区用于存放第二算子生产的数据。
206.在存在第一误差值达到第一预设值,且扩容速率达到第一预设速率的情况下,确定第一算子的第一工作状态指示第一算子对应的上游算子生产的数据分配不均匀。
207.具体的,对于每个第二算子实例,当该第二算子实例对应的所有第一误差值,在该所有第一误差值均达到第一预设值时,表明该第二算子实例生产的数据可能过多,则进一步获取该第二算子实例对应的出端缓冲区所对应的扩容速率,该扩容速率指示在出端缓冲区的总空间大小的增长速率。例如,在时刻1时,第二算子实例对应的出端缓冲区的总空间大小为100mb,在时刻2时,第二算子实例对应的出端缓冲区的总空间大小为200mb,则该第二算子实例对应的出端缓冲区所对应的扩容速率为(200mb-100mb)/(时刻2-时刻1)。
208.当第二算子实例对应的出端缓冲区所对应的扩容速率达到第一预设速率时,表明第二算子实例对应的缓冲区扩容过快,即表明该第二算子实例生产的数据过多,则确定该第二算子实例生产数据分配不均匀,从而确定与该第二算子实例连接的下游算子实例,即第一算子中的算子实例所对应的第一工作状态指示上游算子生产的数据分配不均匀,也即该第一算子对应的第一工作状态指示上游算子生产的数据分配不均匀。
209.当第二算子实例对应的出端缓冲区所对应的扩容速率未达到第一预设速率时,确定该第二算子实例生产数据分配均匀。可选的,对于第一算子对应的每个算子实例,可以根
据上述确定第一算子的第一工作状态的过程确定该算子实例的第一工作状态。
210.步骤504、响应于第一算子的第一工作状态指示算子存在异常,进行相应的告警操作。
211.在本实施例中,在得到第一算子的第一工作状态后,当第一算子的第一工作状态指示上游算子生产的数据分配不均匀时,进行告警操作,实现及时告警。
212.可选的,当根据第一算子的第一工作状态进行告警操作时,可以根据以下两种方式进行告警。
213.一种方式为,在第一算子的第一工作状态指示第一算子对应的上游算子生产的数据分配不均匀的情况下,输出第一告警信息。其中第一告警信息用于提示增加下游算子并发度的数量。
214.具体的,在第一算子的第一工作状态指示上游算子生产的数据分配不均匀时,也即在第一算子对应的算子实例的第一工作状态指示上游算子生产的数据分配不均匀时,表明存在第一算子的上游算子实例(即第二算子实例)生产的数据较多,则输出第一告警信息,以提示第一算子,也即该算子实例已经出现计算瓶颈,上游算子生产数据的能力超过下游算子消费数据的能力,需增加消费者数据才能满足业务需求,也即需增加第一算子的并发度,换言之,提示相关人员增加与生产数据分配不均匀的第二算子实例连接的下游算子实例的数目。例如,第一算子包括2个算子实例,分别为实例1和2。第一算子的上游算子,也即第二算子包括6个第二算子实例,实例1和3个第二算子实例连接,实例2和另外3个第二算子实例连接,与实例1连接的一个第二算子实例生产的数据分配不均匀,则输出第一告警信息,以增加与该第二算子实例连接的下游算子实例的并发度,比如,第一算子新增实例3,该实例3也与该第二算子实例连接,该实例3也用于消费第二算子实例生产的数据,从而增加该第二算子实例对应的消费者数量。
215.另一种方式为,在第一算子的第一工作状态指示第一算子对应的上游算子生产的数据分配不均匀的情况下,基于分布式任务对应的执行流程,确定处于第一算子上方的各个第三算子。获取各个第三算子分别对应的第一工作状态。在所有第三算子分别对应的第一工作状态均指示上游算子生产的数据分配不均匀的情况下,确定分布式任务对应的源算子所对应的除第一下游算子以外的其它下游算子;其中,第一下游算子为源算子的下游算子,且为第三算子。根据其它下游算子对应的数据消费速率,进行告警操作。
216.具体的,当第一算子的第一工作状态指示上游算子生产的数据分配不均匀时,以该第一算子为子节点,向上遍历执行计划,也即基于作业的执行流程,向上遍历,换言之,基于第一算子所在的算子链向上遍历,直至遍历到最源头的source算子(即源算子),将遍历到的算子作为第三算子。当所有第三算子的第一工作状态均指示上游算子生产的数据分配不均匀时,表明源端数据,即数据源部分分区数据量过高,也即第一下游算子所消费的分区内的数据过多,造成第一下游算子负载过高,第一下游算子所在的算子链中的算子负载过高,则获取与源算子连接的其它下游算子,以供根据其它下游算子对应的数据消费速率确定其它下游算子是否能够处理更多数据,从而进行相应的告警操作。
217.以一个具体应用场景为例,如图6所示的算子之间的连接关系,算子a1消费消息队列中的分区1中的数据,算子b1消费分区2中的数据。在算子a3的第一工作状态指示上游算子生产的数据分配不均匀的情况下,依次确定算子a1、a2在第一维度上的工作状态,由于源
算子a不存在上游算子,因此,无需获取源算子a的第一工作状态。当算子a1、a2在第一维度上的工作状态均指示上游算子生产的数据分配不均匀时,表明分区1中的数据过多,则将该算子a1作为第一下游算子,且将算子b1作为其它下游算子,利用算子b1对应的数据消费速率进行告警操作。
218.其中,为了方便描述,算子a1、a2和a3分别对应一个算子实例,分区1指示算子a1的入端缓冲区。算子b1、b2和a3分别对应一个算子实例,分区1指示算子b1的入端缓冲区。
219.另外,当算子a1对应多个算子实例时,分区1对应多个子分区,也即入端缓冲区,算子a1的每个算子实例消费一个入端缓冲区中的数据。
220.可以理解,第一算子、第三算子均可以指示算子实例,相应的,第一下游算子和其它下游算子也可以指示算子实例。
221.可选的,根据其它下游算子对应的数据消费速率,进行告警操作,包括:
222.确定其它下游算子对应的数据消费速率与源算子对应的第一数据生产速率之间的第二误差值。
223.在第二误差值达到第二预设值的情况下,输出第二告警信息。其中,第二告警信息用于提示源端数据过多,增加下游算子并发度的数量。
224.可选的,在第二误差值未达到第三预设值的情况下,进行第一通道重分配操作。其中,第一通道重分配操作指示控制其它下游算子消费第一下游算子对应的入端缓冲区中的数据。入端缓冲区中的数据为源算子生产的数据。
225.具体的,对于每个其它下游算子,计算该其它下游算子对应的数据消费速率与源算子对应的第一数据生产速率之间的差值,并将其作为该其它下游算子对应的第二误差值。当该第二误差值未达到第三预设值的情况下,表明该其它下游算子可以消费更多数据,可以根据下游算子的数据消费速率的快慢重新分配通道,也即进行第一通道重分配操作,使得数据消费速率较高的其它下游算子消费第一下游算子对应的入端缓冲区。
226.当所有第二误差值均达到第二预设值的情况下,表明所有其它下游算子的计算压力也较大,无法消费更多的数据,则输出第二告警信息,以提示源端数据过多,增加下游算子并发度的数量,即增加第一下游算子的并发度。
227.可选的,其它下游算子对应的数据消费速率可以是指其它下游算子对应的各个算子实例所对应的数据消费速率,源算子对应的第一数据生产速率可以是指与该其它下游算子对应的算子实例连接的源算子对应的算子实例所对应的第一数据生产速率。相应的,可以确定该各个算子实例对应的第二误差值。当该算子实例对应的第二误差值未达到第三预设值的情况下,表明该算子实例可以消费更多的数据,则使该算子实例消费受影响的通道所对应的数据,即消费第一下游算子对应的入端缓冲区中的数据,也即建立该算子实例与源算子之间的通道,实现通道自动智能连接。
228.其中,第二预设值和第三预设值可以是相同的,也可以是不同的。
229.可以理解,在建立该算子实例与源算子之间的通道时,实际是建立该算子实例与该第一下游算子,也即数据过多的入端缓冲区对应的第一下游算子中的算子实例之间的通道连接,即重建上游slot和下游slot之间的通道。
230.可选的,还可以关闭第一下游算子与源算子之间的通道,即关闭源算子对应的受影响的下游算子实例。
231.承接上述应用场景,计算算子b1对应的数据消费速率与源算子a对应的第一生产速率之间的差值,即计算算子b1消费分区2中数据的速率与算子a填充分区2的速率之间的差值,得到第二误差值。当该第二误差值未达到第三预设值时,表明算子b1消费数据能力较高,可以消费更多的数据,则使算子b1消费区域1中的数据。
232.可选的,当输出第二告警信息时,获取其它下游算子对应的数据消费速率和第一下游算子对应的数据消费速率中的最小值。根据最小值,生成限速指令,并将限速指令发送至源算子,以使源算子基于最小值,调整源算子对应的第一数据生产速率,即以最小值为基准,调整源算子对应的第一数据生产速率,避免整个系统造成反压影响checkpoint、watermark等机制。
233.可选的,在以最小值为基准,调整源算子对应的第一数据生产速率时,可以按照预设调整规则进行调整,例如,将源算子对应的第一数据生产速率调整为该最小值,在此,不对该调整规则进行限制。
234.可以理解,在调整源算子对应的第一数据生产速率时,调整该源算子对应的各个算子实例所对应的第一数据生产速率。
235.可选的,在所有第三算子的第一工作状态均指示上游算子生产的数据分配均匀的情况下,进行第二通道重分配操作。其中,第二通道重分配操作指示正常算子实例消费异常算子实例对应的入端缓冲区中的数据;正常算子实例为第一算子对应的算子实例中的第一工作状态指示上游算子生产数据分配均匀的算子实例,异常算子实例为第一算子对应的算子实例中的第一工作状态指示上游算子生产数据分配不均匀的算子实例。
236.具体的,当所有第三算子的第一工作状态均指示上游算子生产的数据分配均匀时,表明只有第一算子的上游算子生产的数据分配不均匀,也即上游算子生产数据的速率超过第一算子的消费能力,则确定第一算子对应的算子实例中的第一工作状态指示上游算子生产数据分配均匀的算子实例,并将确定的算子实例作为正常算子实例。对于每个正常算子实例,计算该正常算子实例对应的数据消费速率与其对应的第一数据生产速率之间的差值,得到第四误差值,以供利用该第四误差值确定正常算子实例是否可以消费更多的数据。在确定正常算子实例可以消费更多的数据时,将第一算子对应的算子实例中的第一工作状态指示上游算子生产数据分配不均匀的算子实例作为异常算子实例,并将该正常算子实例与该异常算子实例对应的上游算子实例,也即生产数据过多的上游算子实例建立通道,以使该正常算子实例可以消费该上游算子实例所生产的数据,降低该异常算子实例的消费压力,实现根据数据消费能力重分配通道,保证分布式系统的数据处理性能,即保证业务的正常运行。
237.可选的,当第一算子的上游算子生产的数据是基于keystream时,在第一算子的第一工作状态指示上游算子生产的数据分配不均匀的情况下,记录第一算子对应的上游算子生产的数据所对应的键值,即确定数据分配不均匀的第二算子实例生产的数据所对应的键值(即key值),实现倾斜数据的key值的记录,并输出键值,以使相关人员可以获知倾斜数据,从而可以使相关人员根据倾斜数据重新设置第一算子所需处理的key值,即重新设置数据的流向,避免由于key值设置不合理导致第一算子需要消费过多的数据,进而出现计算瓶颈。
238.在本实施例中,主控服务器还可以获取各个算子实例对应的缓冲区所对应的扩容
速率,其中,缓冲区包括出端缓冲区和/或入端缓冲区。在该扩容速率达到第二预设速率的情况下,表明该缓冲区扩容过快,需限制该缓冲区扩容速率,则在该缓冲区的总大小扩容至预设大小时,控制该缓冲区停止扩容,实现bufferpool预分配。
239.在本实施例中,在不影响业务的基础上,能够根据算子的数据处理速率进行通道重分配,实现流量的自动切换,无须业务人员和运维人员介入,避免出现分布式处理系统造成反压、checkpoint大量失败后才被运维感知的问题,保证分布式处理系统的性能。
240.在本实施例中,对算子,即算子实例对应的数据处理速率进行横向比较,即获取在设定时间内的算子实例对应的所有数据处理速率,若所有数据处理速率均未达到历史平均处理速率,表明该算子实例已经成为慢节点,则输出慢算子告警信息,以使相关人员对运行较慢的算子进行维护。其中,历史平均速率是基于采集到的数据处理速率进行平均值计算得到的。
241.在本实施例中,基于算子的上游算子所对应的数据处理速率确定该算子在第一维度上的工作状态,即确定该算子的上游算子生产的数据是否分配均匀,即确定该算子的并发度是否合理,从而确定是否进行相应的告警,即是否提示对该算子的并发度进行调整,实现异常的及时调整,保证分布式处理的运行性能。
242.在本实施例中,以源端kafka消息队列为例,数据在kafka分区分散不均匀,有些分区的数据量很大,这样会造成flink kafka consumer,也即源算子的下游算子在消费大数据分区时遇到瓶颈,因此,当第一算子的第一工作状态指示上游算子生产的数据分配不均匀时,确定是否由于源端分区不均匀导致下游算子的负载过高,从而进行相应的告警操作,例如,增加提示源算子的下游算子的并发度,避免系统堵塞。
243.在本实施例中,当业务逻辑中包括keystream时,如果设置的分区key值不合理,同样也会造成下游算子出现计算瓶颈,因此,记录倾斜数据的key值,以使相关人员尽快解决。
244.在本实施例中,通过运维指标,即算子对应的数据处理速率可以及时确定系统所存在的异常,以在系统未出现严重问题时,告知运维人员系统是否存在并发度设置不合理,作业是否存在key值数据倾斜或设置不合理的问题,使得运维人员可以尽早解决分布式处理系统中的问题,保证系统的可靠性。
245.在本实施例中,对于每个算子,将该算子作为第一算子,并获取位于该第一算子上游的第二算子对应的各个算子实例所分别对应的第一数据生产速率,以供基于各个算子实例分别对应的第一数据生产速率,确定各个算子实例之间生产数据的能力是否相差过大,即确定是否存在生产数据过多或过少的算子实例,从而可以确定第一算子对应的上游算子实例生产的数据分配是否均匀,进而得到第一算子对应的第一工作状态,实现第一算子的第一工作状态的准确确定。当第一算子对应的第一工作状态指示第一算子对应的上游算子生产的数据分配不均匀时,进行告警操作,实现及时告警,以使相关人员可以及时解决第一算子对应的上游算子生产数据分配不均匀的问题。
246.如图7所示,图7是本说明书根据一示例性实施例示出的再一种分布式处理系统的监控方法的流程图,下面将结合一个具体实施例对确定算子对应的第二工作状态的过程进行详细说明,过程进行详细说明,如图7所示,该方法包括以下步骤:
247.步骤701、针对分布式任务,获取算子对应的数据处理速率。其中,数据处理速率包括数据消费速率。数据消费速率表示算子消费上游算子产生的数据的速率。
248.步骤702、计算第一算子对应的各个数据消费速率中的任意两个数据消费速率之间的第三误差值。其中,第一算子为上述算子中的任一算子。
249.在本实施例中,对于分布式处理系统中的每个算子,将该算子作为第一算子,获取该第一算子对应的各个算子实例所对应的数据消费速率。
250.对于第一算子对应的每个算子实例,计算该算子实例对应的数据消费速率与第一算子对应的其它算子实例所对应的数据消费速率的差值,并将其作为该算子实例对应的第三误差值,该第三误差值指示第一算子对应的两个算子实例在第一预设单位时间内消费数据量的差值,即表示该两个第二算子实例消费数据能力的差值。
251.具体的,算子实例对应的数据消费速率指示算子实例在其对应的slot上的数据消费速率。
252.步骤703、根据第三误差值,确定第一算子对应的各个算子实例分别对应的第二工作状态。
253.在本实施例中,对于每个算子实例,在该算子实例与其它算子实例之间的第三误差值均达到第四预设值时,表明该算子实例消费数据的能力较差,该算子实例所在的slot存在计算瓶颈,则确定该算子实例的第二工作状态指示数据消费能力异常,否则,则确定该算子实例的第二工作状态指示数据消费能力正常。
254.步骤704、响应于算子实例的第二工作状态指示数据消费能力异常,进行相应的告警操作。
255.在本实施例中,在得到第一算子对应的各个算子实例的第二工作状态后,当算子实例的第二工作状态指示数据消费能力异常时,表明该算子实例异常,则进行相应的告警操作,实现及时告警。
256.可选的,在基于算子实例的第二工作状态进行告警操作时,可以基于以下两种方式进行告警。
257.一种方式为,在算子实例的第二工作状态指示数据消费能力异常的情况下,确定算子实例对应的slot所属的目标任务管理器。确定目标任务管理器所包括的除算子实例以外的所有第一算子实例,并获取各个第一算子实例的第二工作状态。根据各个第一算子实例的第二工作状态,进行相应的告警操作。
258.具体的,当第一算子对应的算子实例的第二工作状态指示数据消费能力异常时,表明该算子实例存在计算瓶颈,也即该算子实例所在的slot存在计算瓶颈,判断是否是由于该slot所属的任务管理器(即目标任务管理器)故障导致的,则获取该目标任务管理器上的其它算子实例,并将其它算子实例作为第一算子实例,以供利用第一算子实例的第二工作状态确定第一算子对应的该算子实例出现数据消费能力异常的原因,也即确定该slot出现计算瓶颈的原因,实现问题的准确定位,进而实现精准告警。
259.可选的,在基于第一算子实例的第二工作状态进行告警时,计算第二工作状态指示数据消费能力异常的第一算子实例的数目与第一算子实例的总数目的比值,得到异常第一算子实例比例。在该异常第一算子实例比例达到第一预设比例的情况下,表明该目标任务管理器出现故障,从而造成不止一个slot上的算子实例出现问题,多个作业均已受到影响,则输出目标任务管理器故障提示信息,以提示相关人员目标任务管理器出现故障,实现问题的精准定位。
260.在该异常第一算子实例比例未达到第一预设比例的情况下,表明只有第一算子对应的第二工作状态指示数据消费能力异常的算子实例出现计算瓶颈,也即该算子实例所属的slot出现计算瓶颈,则输出所述算子实例异常提示信息,以提示相关人员该算子实例存在异常。
261.可选的,目标任务管理器故障提示信息还可以包括受影响的作业名称、受影响的算子标识,也即目标任务管理器对应的所有指示数据消费能力异常的算子实例的标识。
262.另一种方式为,在算子实例指示数据消费能力异常的情况下,直接输出算子实例异常提示信息,以告知相关人员该算子实例存在异常。
263.在本实施例中,通过运维指标,即算子对应的数据消费速率可以及时确定系统所存在的异常,实现故障的精准定位,以在系统未出现严重问题时,告知运维人员系统中存在故障的taskmanager和slot,使得运维人员可以尽早解决分布式处理系统中的问题,保证系统的可靠性。
264.在本实施例中,对于每个算子,将该算子作为第一算子,并获取第一算子对应的各个算子实例所分别对应的数据消费速率,以供该各个算子实例分别对应的数据消费速率,确定各个算子实例之间消费数据的能力是否相差过大,即确定是否存在消费数据过多或过少的算子实例,从而可以确定该各个算子实例的数据消费能力是否正常,进而得到该各个算子实例分别对应的第二工作状态,实现第一算子对应的算子实例所对应的第二工作状态的准确确定。当第一算子对应的算子实例所对应的第二工作状态指示数据消费能力异常时,进行告警操作,实现及时告警,以使相关人员可以及时解决该算子实例消费数据能力异常的问题。
265.与前述方法的实施例相对应,本说明书还提供了装置及其所应用的计算机设备的实施例。
266.本说明书分布式处理系统的监控装置的实施例可以应用在计算机设备上,例如终端设备(例如,服务器、电脑等)。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在文件处理的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图8所示,为本说明书实施例分布式处理系统的监控装置所在计算机设备的一种硬件结构图,除了图8所示的处理器810、内存830、网络接口820、以及非易失性存储器840之外,实施例中分布式处理系统的监控装置831所在的计算机设备,通常根据该计算机设备的实际功能,还可以包括其他硬件,对此不再赘述。
267.如图9所示,图9是本说明书根据一示例性实施例示出的一种分布式处理系统的监控装置的框图,所述装置包括:
268.速率获取模块910,用于针对分布式任务,获取所述算子对应的数据处理速率;
269.速率处理模块920,用于根据算子和/或其上游算子对应的数据处理速率,确定算子的至少一个工作状态。
270.告警模块930,用于响应于算子的任意工作状态指示算子存在异常,进行相应的告警操作。
271.可选的,算子对应于至少一个算子实例,每个算子实例存在对应的数据处理速率。
272.速率处理模块920具体用于:
273.根据第一算子和/或第二算子对应的各个算子实例所分别对应的数据处理速率之间的误差值确定第一算子的至少一个工作状态。其中,第一算子为算子中的任一算子。第二算子为第一算子的上游算子。
274.可选的,数据处理速率包括第一数据生产速率。其中,第一数据生产速率表示算子生产数据的速率。第一算子的工作状态包括第一工作状态。
275.其中,第一算子的第一工作状态指示第一算子对应的上游算子生产的数据分配是否均匀。
276.速率处理模块920具体用于:
277.计算第二算子对应的各个算子实例所分别对应的第一数据生产速率中的任意两个第一数据生产速率之间的第一误差值。
278.根据第一误差值,确定第一算子的第一工作状态。
279.可选的,速率处理模块920还用于:
280.在存在第一误差值达到第一预设值的情况下,确定第一算子的第一工作状态指示第一算子对应的上游算子生产的数据分配不均匀。
281.在所有第一误差值均未达到第一预设值的情况下,确定第一算子的第一工作状态指示第一算子对应的上游算子生产的数据分配均匀。
282.可选的,速率处理模块920还用于:
283.获取第二算子对应的出端缓冲区所对应的扩容速率。其中,出端缓冲区用于存放第二算子生产的数据。
284.在存在第一误差值达到第一预设值,且扩容速率达到第一预设速率的情况下,确定第一算子的第一工作状态指示第一算子对应的上游算子生产的数据分配不均匀。
285.可选的,告警模块930具体用于:
286.在第一算子的第一工作状态指示第一算子对应的上游算子生产的数据分配不均匀的情况下,输出第一告警信息。其中第一告警信息用于提示增加下游算子并发度的数量。
287.可选的,告警模块930具体用于:
288.在第一算子的第一工作状态指示第一算子对应的上游算子生产的数据分配不均匀的情况下,基于分布式任务对应的执行流程,确定处于第一算子上方的各个第三算子。
289.获取各个第三算子分别对应的第一工作状态。
290.在各个第三算子分别对应的第一工作状态均指示上游算子生产的数据分配不均匀的情况下,确定分布式任务对应的源算子所对应的除第一下游算子以外的其它下游算子。其中,第一下游算子为源算子的下游算子,且为第三算子。
291.根据其它下游算子对应的数据消费速率,进行告警操作。
292.可选的,上游算子与下游算子之间通过通道连接。
293.可选的,告警模块930具体用于:
294.确定其它下游算子对应的数据消费速率与源算子对应的第一数据生产速率之间的第二误差值。
295.在第二误差值达到第二预设值的情况下,输出第二告警信息。其中,第二告警信息用于提示源端数据过多,增加下游算子并发度的数量。
296.可选的,上游算子与下游算子之间通过通道连接。装置还包括第一通道处理模块。
297.第一通道处理模块具体用于:
298.在各个第三算子分别对应的第一工作状态均指示上游算子生产的数据分配不均匀的情况下,确定其它下游算子对应的数据消费速率与源算子对应的第一数据生产速率之间的第二误差值。
299.在第二误差值未达到第三预设值的情况下,进行第一通道重分配操作。其中,第一通道重分配操作指示控制其它下游算子消费第一下游算子对应的入端缓冲区中的数据。入端缓冲区中的数据为源算子生产的数据。
300.可选的,装置还包括限速模块。
301.限速模块具体用于:
302.在各个第三算子分别对应的第一工作状态均指示上游算子生产的数据分配不均匀的情况下,获取其它下游算子对应的数据消费速率和第一下游算子对应的数据消费速率中的最小值。
303.根据最小值,生成限速指令,并将限速指令发送至源算子,以使源算子基于最小值,调整源算子对应的第一数据生产速率。
304.可选的,装置还包括第二通道处理模块。
305.第二通道处理模块具体用于:
306.在获取各个第三算子分别对应的第一工作状态之后,在所有第三算子的第一工作状态均指示上游算子生产的数据分配均匀的情况下,进行第二通道重分配操作。其中,第二通道重分配操作指示正常算子实例消费异常算子实例对应的入端缓冲区中的数据。正常算子实例为第一算子对应的算子实例中的第一工作状态指示上游算子生产数据分配均匀的算子实例,异常算子实例为第一算子对应的算子实例中的第一工作状态指示上游算子生产数据分配不均匀的算子实例。
307.可选的,装置还包括数据记录模块。
308.数据记录模块具体用于:
309.在第一算子的第一工作状态指示第一算子对应的上游算子生产的数据分配不均匀的情况下,记录第一算子对应的上游算子生产的数据所对应的键值,并输出键值。
310.数据处理速率包括数据消费速率。数据消费速率表示算子消费上游算子产生的数据的速率。第一算子的工作状态包括第一工作状态。
311.其中,第一算子的第二工作状态指示数据消费能力是否正常。
312.速率处理模块920具体用于:
313.计算第一算子对应的各个数据消费速率中的任意两个数据消费速率之间的第三误差值。
314.根据第三误差值,确定第一算子对应的各个算子实例分别对应的第二工作状态。
315.可选的,算子被调度至至少一个资源组slot上。slot与算子实例一一对应。
316.告警模块930具体用于:
317.在算子实例的第二工作状态指示数据消费能力异常的情况下,确定算子实例对应的slot所属的目标任务管理器。
318.确定目标任务管理器所包括的除算子实例以外的所有第一算子实例,并获取各个第一算子实例分别对应的第二工作状态。
319.根据各个第一算子实例分别对应的第二工作状态,进行相应的告警操作。
320.可选的,告警模块930还用于:
321.计算第二工作状态指示数据消费能力异常的第一算子实例的数目与第一算子实例的总数目的比值,得到异常第一算子实例比例。
322.在异常第一算子实例比例达到第一预设比例的情况下,输出目标任务管理器故障提示信息。
323.在异常第一算子实例比例未达到第一预设比例的情况下,输出算子实例异常提示信息。
324.可选的,告警模块930还用于:
325.在算子实例的第二工作状态指示数据消费能力异常的情况下,输出算子实例异常提示信息。
326.可选的,算子对应至少一个算子实例。算子实例存在对应的缓冲区。
327.告警模块930还用于:
328.获取各个算子实例分别对应的缓冲区的扩容速率。
329.在缓冲区的扩容速率达到第二预设速率的情况下,控制缓冲区停止扩容。
330.可选的,算子对应至少一个算子实例。告警模块930还用于:
331.获取在设定时间获取到算子实例对应的所有数据处理速率,并获取算子实例对应的历史平均处理速率。
332.若所有数据处理速率未达到历史平均处理速率,则输出慢算子告警信息。
333.上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
334.在一个实施例中,本技术还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,当处理器执行所述计算机执行指令时,实现如上所述的方法。
335.在一个实施例中,本技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时,实现如上所述的方法。
336.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
337.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
338.本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、
用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
339.应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
340.以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献