CN106649119A - 流计算引擎的测试方法及装置 - Google Patents
流计算引擎的测试方法及装置 Download PDFInfo
- Publication number
- CN106649119A CN106649119A CN201611234004.1A CN201611234004A CN106649119A CN 106649119 A CN106649119 A CN 106649119A CN 201611234004 A CN201611234004 A CN 201611234004A CN 106649119 A CN106649119 A CN 106649119A
- Authority
- CN
- China
- Prior art keywords
- stream calculation
- calculation engine
- measurement parameter
- stream
- data
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Abstract
本发明提供了一种流计算引擎的测试方法及装置,方法为:获取目标场景,选择目标场景对应的多个测量参数,调用流计算引擎,通过流计算引擎对样本数据进行处理,得到流计算运行结果;根据流计算运行结果,得到多个测量参数对应的测量值,并经分析得到流计算引擎的测试结果。本发明的流计算引擎的测试方法及装置,通过程序自动调用不同的流计算引擎,并采集流计算引擎的运行结果,通过对运行结果进行分析,选择合适的流计算引擎,本发明将对流计算引擎的评价抽象为若干测试参数,通过调用流计算引擎,并监控其运行过程,从而获取各个测试参数的测量值,客观反映其性能,且效率高。
Description
技术领域
本发明涉及数据处理领域,尤其涉及流计算引擎的测试方法及装置。
背景技术
流计算引擎用于对大规模流动数据在不断变化的运动过程中实时地进行分析。其应用场景广泛,且种类繁多。例如用于金融领域的数据处理。
在金融银行领域的日常运营过程中,往往会产生大量数据,这些数据的时效性往往较短。因此,金融银行领域是大数据流式计算最典型的应用场景之一,也是大数据流式计算最早的应用领域。在金融银行系统内部,每时每刻都有大量的往往是结构化的数据在各个系统间流动,并需要实时计算。同时,金融银行系统与其他系统也有着大量的数据流动,这些数据不仅有结构化数据,也会有半结构化和非结构化数据。通过对这些大数据的流式计算,发现隐含于其中的内在特征,可以帮助金融银行系统进行实时决策。
对于一个具体的应用场景而言,需要选择合适的流计算引擎进行数据处理。目前,需要技术人员操作,尝试不同的流计算引擎对数据进行处理,并根据经验选择合适的流计算引擎。这种做法效率低,且无法保证选择最合适的流计算引擎。
因此,现有技术中的缺陷是,运用不同的流计算引擎进行数据处理,需要技术人员操作,并根据经验选择合适的流计算引擎,这种做法效率低,且无法保证选择最合适的流计算引擎。
发明内容
针对上述技术问题,本发明提供一种流计算引擎的测试方法及装置,通过程序自动调用不同的流计算引擎,并采集流计算引擎的运行结果,通过对运行结果进行分析,选择合适的流计算引擎。
为解决上述技术问题,本发明提供的技术方案是:
第一方面,本发明提供一种流计算引擎的测试方法,包括:
步骤S1,获取目标场景;
步骤S2,选择所述目标场景对应的多个测量参数,所述多个测量参数为预先保存的测量参数;
步骤S3,调用流计算引擎,通过所述流计算引擎对样本数据进行处理,得到流计算运行结果,所述样本数据为所述目标场景对应的数据;
步骤S4,根据所述流计算运行结果,得到所述多个测量参数对应的测量值;
步骤S5,根据所述多个测量参数对应的测量值,经分析得到所述流计算引擎的测试结果。
本发明的流计算引擎的测试方法,其技术方案为:先获取目标场景;接着选择所述目标场景对应的多个测量参数,所述多个测量参数为预先保存的测量参数;然后调用流计算引擎,通过所述流计算引擎对样本数据进行处理,得到流计算运行结果;接着,根据所述流计算运行结果,得到所述多个测量参数对应的测量值;最后,根据所述多个测量参数对应的测量值,经分析得到所述流计算引擎的测试结果。
本发明的流计算引擎的测试方法,通过程序自动调用不同的流计算引擎,并采集流计算引擎的运行结果,通过对运行结果进行分析,选择合适的流计算引擎,本发明中将对流计算引擎的评价抽象为若干测试参数,通过调用流计算引擎,并监控其运行过程,从而获取各个测试参数的测量值,客观反映其性能,且效率高。
进一步地,通过多线程并行的方式调用所述流计算引擎,或通过串行的方式调用不同的所述流计算引擎。
根据不同的数据处理需求,可以选择不同的方式调用流计算引擎。对于数据量小的场景,可选择串行的方式,逻辑简单,对于数据量大的场景,可选择多线程并行的方式对数据进行并行处理,效率更高。
进一步地,所述多个测量参数包括操作复杂程度、key值分布、key值空间、窗口操作、状态信息、多阶段报警类型和时间。
不同的应用场景(目标场景),评价流计算引擎所需要的测量参数不同,因此根据不同的应用场景,评价流计算引擎就需要选择不同的测量参数。比如,对于拉抬打压的流计算引擎评价,需要的测量参数是Key值分布、状态信息、窗口操作、业务时间和操作复杂程度,其中,时间包括业务时间和系统时间;而对于大额封涨停的流计算引擎评价,需要的测量参数是Key值分布、状态信息和操作复杂程度。
其中,在流计算引擎中,自定义的算子或自定义函数(UDF)工作在进程中,也就是说对于用户定义好的某个操作(如:UDF),同一个进程共用该操作的一个实例,那么所谓的状态信息就是该实例里存在放属性信息,所谓的状态信息就是该实例里存在放属性信息。
进一步地,所述多个测量参数对应的测量值包括所述多个测量参数的支持度。
测量值反映的是在此目标场景下,流计算引擎对数据处理的不同测量参数的具体情况,可用支持度表示,比如对于测量参数中状态信息的测量值,可通过支持度“是否有状态”反映测量的这个测量值的结果,对于测量参数中Key值分布的测量值,可用过支持度“是否均匀”反映测量的这个测量值的结果。
进一步地,还包括,对所述测试结果的处理:
包括将所述测试结果通过显示器进行显示,或将所述测试结果发送给服务器。
将测试结果可通过显示器进行显示,也可以传送给服务器进行保存或处理,测试结果反映了不同的目标场景下,选择合适的流计算引擎,提高了数据处理效率。
进一步地,通过所述流计算引擎对样本数据进行处理采用分布式计算方式。
通过流计算引擎进行数据处理,是通过流计算引擎中的算子(窗口等)按照预先定义的数据处理逻辑进行样本数据的处理;因此,将计算逻辑分配到多个计算节点上进行,多个节点同时工作,这可以有效缩减计算时间。同样地,分布式流计算的计算引擎会将用于计算操作的算子分布到多个计算节点上,对数据进行并行处理,高效完成数据处理工作。
第二方面,本发明提供了一种流计算引擎的测试装置,包括:
场景获取模块,用于获取目标场景;
测量参数选择模块,用于选择所述目标场景对应的多个测量参数,所述多个测量参数为预先保存的测量参数;
流计算引擎调用模块,用于调用流计算引擎,通过所述流计算引擎对样本数据进行处理,得到流计算运行结果,所述样本数据为所述目标场景对应的数据;
测量值获取模块,用于根据所述流计算运行结果,得到所述多个测量参数对应的测量值;
测试结果模块,用于根据所述多个测量参数对应的测量值,经分析得到所述流计算引擎的测试结果。
本发明的流计算引擎的测试装置,其技术方案为:先通过场景获取模块,获取目标场景;接着通过测量参数选择模块,选择所述目标场景对应的多个测量参数,所述多个测量参数为预先保存的测量参数;然后通过流计算引擎调用模块,调用流计算引擎,通过所述流计算引擎对样本数据进行处理,得到流计算运行结果,所述样本数据为所述目标场景对应的数据;接着通过测量值获取模块,根据所述流计算运行结果,得到所述多个测量参数对应的测量值;最后通过测试结果模块,用于根据所述多个测量参数对应的测量值,经分析得到所述流计算引擎的测试结果。
本发明的流计算引擎的测试装置,通过程序自动调用不同的流计算引擎,并采集流计算引擎的运行结果,通过对运行结果进行分析,选择合适的流计算引擎,本发明中将对流计算引擎的评价抽象为若干测试参数,通过调用流计算引擎,并监控其运行过程,从而获取各个测试参数的测量值,客观反映其性能,且效率高。
进一步地,通过多线程并行的方式调用所述流计算引擎,或通过串行的方式调用不同的所述流计算引擎。
根据不同的数据处理需求,可以选择不同的方式调用流计算引擎。对于数据量小的场景,可选择串行的方式,逻辑简单,对于数据量大的场景,可选择多线程并行的方式对数据进行并行处理,效率更高。
进一步地,所述多个测量参数包括操作复杂程度、key值分布、key值空间、窗口操作、状态信息、多阶段报警类型和时间。
不同的应用场景(目标场景),评价流计算引擎所需要的测量参数不同,因此根据不同的应用场景,评价流计算引擎就需要选择不同的测量参数。比如,对于拉抬打压的流计算引擎评价,需要的测量参数是Key值分布、状态信息、窗口操作、业务时间和操作复杂程度,其中,时间包括业务时间和系统时间;而对于大额封涨停的流计算引擎评价,需要的测量参数是Key值分布、状态信息和操作复杂程度。
其中,在流计算引擎中,自定义的算子或自定义函数(UDF)工作在进程中,也就是说对于用户定义好的某个操作(如:UDF),同一个进程共用该操作的一个实例,那么所谓的状态信息就是该实例里存在放属性信息,所谓的状态信息就是该实例里存在放属性信息。
进一步地,所述多个测量参数对应的测量值包括所述多个测量参数的支持度。
测量值反映的是在此目标场景下,流计算引擎对数据处理的不同测量参数的具体情况,可用支持度表示,比如对于测量参数中状态信息的测量值,可通过支持度“是否有状态”反映测量的这个测量值的结果,对于测量参数中Key值分布的测量值,可用过支持度“是否均匀”反映测量的这个测量值的结果。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。
图1示出了本发明实施例所提供的一种流计算引擎的测试方法的流程图;
图2示出了本发明实施例所提供的一种流计算引擎的测试装置的示意图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只是作为示例,而不能以此来限制本发明的保护范围。
实施例一
图1示出了本发明实施例所提供的一种流计算引擎的测试方法的流程图;如图1所示,本发明实施例一提供了一种流计算引擎的测试方法,包括:
步骤S1,获取目标场景;
步骤S2,选择目标场景对应的多个测量参数,多个测量参数为预先保存的测量参数;
步骤S3,调用流计算引擎,通过流计算引擎对样本数据进行处理,得到流计算运行结果,样本数据为目标场景对应的数据;
步骤S4,根据流计算运行结果,得到多个测量参数对应的测量值;
步骤S5,根据多个测量参数对应的测量值,经分析得到流计算引擎的测试结果。
本发明的流计算引擎的测试方法,其技术方案为:先获取目标场景,不同的场景选择的测量参数不同;接着选择目标场景对应的多个测量参数,多个测量参数为预先保存的测量参数,即程序确定需要从哪几个维度对流计算引擎进行评价;其中,选择测量参数的过程在评价结束完成前完成即可;然后调用流计算引擎,通过流计算引擎对样本数据进行处理,得到流计算运行结果,样本数据为目标场景对应的数据;不同的目标场景选择不同的测量参数,不同的测量参数数据的处理过程不同;接着,根据流计算运行结果,得到多个测量参数对应的测量值;最后,根据多个测量参数对应的测量值,经分析得到流计算引擎的测试结果,测量结果反映了选择流计算引擎的性能。
本发明的流计算引擎的测试方法,通过程序自动调用不同的流计算引擎,并采集流计算引擎的运行结果,通过对运行结果进行分析,选择合适的流计算引擎,本发明中将对流计算引擎的评价抽象为若干测试参数,通过调用流计算引擎,并监控其运行过程,从而获取各个测试参数的测量值,客观反映其性能,且效率高。
具体地,通过多线程并行的方式调用流计算引擎,或通过串行的方式调用不同的流计算引擎。
根据不同的数据处理需求,可以选择不同的方式调用流计算引擎。对于数据量小的场景,可选择串行的方式,逻辑简单,对于数据量大的场景,可选择多线程并行的方式对数据进行并行处理,效率更高。
具体地,多个测量参数包括操作复杂程度、key值分布、key值空间、窗口操作、状态信息、多阶段报警类型和时间。
不同的应用场景(目标场景),评价流计算引擎所需要的测量参数不同,因此根据不同的应用场景,评价流计算引擎就需要选择不同的测量参数。比如,对于拉抬打压的流计算引擎评价,需要的测量参数是Key值分布、状态信息、窗口操作、业务时间和操作复杂程度,其中,时间包括业务时间和系统时间;而对于大额封涨停的流计算引擎评价,需要的测量参数是Key值分布、状态信息和操作复杂程度;对于x分钟指数振幅超标,盘中分时涨跌异常应用场景,评价流计算引擎,需要的测量参数是窗口操作、业务时间和即时响应;对于x分钟会员金额超标应用场景,评价流计算引擎,需要的测量参数是Key值分布、窗口操作和业务时间。
其中,目标场景包括x分钟指数振幅超标、x分钟会员金额超标、盘中分时涨跌异常、盘中拉抬打压、大额封涨停、实时查询和简单汇总统计、基本数据存储和查询统计、投资者历史盈亏(盈亏替换为交易金额)计算查询。
其中,在流计算引擎中,自定义的算子或自定义函数(UDF)工作在进程中,也就是说对于用户定义好的某个操作(如:UDF),同一个进程共用该操作的一个实例,那么所谓的状态信息就是该实例里存在放属性信息,所谓的状态信息就是该实例里存在放属性信息。
具体地,多个测量参数对应的测量值包括多个测量参数的支持度。
测量值反映的是在此目标场景下,流计算引擎对数据处理的不同测量参数的具体情况,可用支持度表示,比如对于测量参数中状态信息的测量值,可通过支持度“是否有状态”反映测量的这个测量值的结果,对于测量参数中Key值分布的测量值,可用过支持度“是否均匀”反映测量的这个测量值的结果。
具体地,还包括,对测试结果的处理:
包括将测试结果通过显示器进行显示,或将测试结果发送给服务器。
将测试结果可通过显示器进行显示,也可以传送给服务器进行保存或处理,测试结果反映了不同的目标场景下,选择合适的流计算引擎,提高了数据处理效率。
具体地,通过流计算引擎对样本数据进行处理采用分布式计算方式。
通过流计算引擎进行数据处理,是通过流计算引擎中的算子(窗口等)按照预先定义的数据处理逻辑进行样本数据的处理;因此,将计算逻辑分配到多个计算节点上进行,多个节点同时工作,这可以有效缩减计算时间。同样地,分布式流计算的计算引擎会将用于计算操作的算子分布到多个计算节点上,对数据进行并行处理,高效完成数据处理工作。
图2示出了本发明实施例所提供的一种流计算引擎的测试装置的示意图,如图2所示,本发明实施例一提供了一种流计算引擎的测试装置10,包括:
场景获取模块101,用于获取目标场景;
测量参数选择模块102,用于选择目标场景对应的多个测量参数,多个测量参数为预先保存的测量参数;
流计算引擎调用模块103,用于调用流计算引擎,通过流计算引擎对样本数据进行处理,得到流计算运行结果,样本数据为目标场景对应的数据;
测量值获取模块104,用于根据流计算运行结果,得到多个测量参数对应的测量值;
测试结果模块105,用于根据多个测量参数对应的测量值,经分析得到流计算引擎的测试结果。
本发明的流计算引擎的测试装置10,其技术方案为:先通过场景获取模块101,获取目标场景;不同的场景选择的测量参数不同;接着通过测量参数选择模块102,选择目标场景对应的多个测量参数,多个测量参数为预先保存的测量参数,即程序确定需要从哪几个维度对流计算引擎进行评价;其中,选择测量参数的过程在评价结束完成前完成即可;然后通过流计算引擎调用模块103,调用流计算引擎,通过流计算引擎对样本数据进行处理,得到流计算运行结果,样本数据为目标场景对应的数据;不同的目标场景选择不同的测量参数,不同的测量参数数据的处理过程不同;接着通过测量值获取模块104,根据流计算运行结果,得到多个测量参数对应的测量值;最后通过测试结果模块105,用于根据多个测量参数对应的测量值,经分析得到流计算引擎的测试结果,测量结果反映了选择流计算引擎的性能。
本发明的流计算引擎的测试装置10,通过程序自动调用不同的流计算引擎,并采集流计算引擎的运行结果,通过对运行结果进行分析,选择合适的流计算引擎,本发明中将对流计算引擎的评价抽象为若干测试参数,通过调用流计算引擎,并监控其运行过程,从而获取各个测试参数的测量值,客观反映其性能,且效率高。
具体地,通过多线程并行的方式调用流计算引擎,或通过串行的方式调用不同的流计算引擎。
根据不同的数据处理需求,可以选择不同的方式调用流计算引擎。对于数据量小的场景,可选择串行的方式,逻辑简单,对于数据量大的场景,可选择多线程并行的方式对数据进行并行处理,效率更高。
具体地,多个测量参数包括操作复杂程度、key值分布、key值空间、窗口操作、状态信息、多阶段报警类型和时间。
不同的应用场景(目标场景),评价流计算引擎所需要的测量参数不同,因此根据不同的应用场景,评价流计算引擎就需要选择不同的测量参数。比如,对于拉抬打压的流计算引擎评价,需要的测量参数是Key值分布、状态信息、窗口操作、业务时间和操作复杂程度,其中,时间包括业务时间和系统时间;而对于大额封涨停的流计算引擎评价,需要的测量参数是Key值分布、状态信息和操作复杂程度;对于x分钟指数振幅超标,盘中分时涨跌异常应用场景,评价流计算引擎,需要的测量参数是窗口操作、业务时间和即时响应;对于x分钟会员金额超标应用场景,评价流计算引擎,需要的测量参数是Key值分布、窗口操作和业务时间。
其中,目标场景包括x分钟指数振幅超标、x分钟会员金额超标、盘中分时涨跌异常、盘中拉抬打压、大额封涨停等。
其中,在流计算引擎中,自定义的算子或自定义函数(UDF)工作在进程中,也就是说对于用户定义好的某个操作(如:UDF),同一个进程共用该操作的一个实例,那么所谓的状态信息就是该实例里存在放属性信息,所谓的状态信息就是该实例里存在放属性信息。
具体地,多个测量参数对应的测量值包括多个测量参数的支持度。
测量值反映的是在此目标场景下,流计算引擎对数据处理的不同测量参数的具体情况,可用支持度表示,比如对于测量参数中状态信息的测量值,可通过支持度“是否有状态”反映测量的这个测量值的结果,对于测量参数中Key值分布的测量值,可用过支持度“是否均匀”反映测量的这个测量值的结果。
实施例二
基于实施例一中的流计算引擎的测试方法,及流计算引擎的测试装置10,结合具体的开发语言环境及应用场景,进行具体流计算引擎的测试过程说明。
本发明提供的流计算引擎的测试方法及装置,开发语言环境为Java。结合flink相关的概念对流计算的抽象逻辑进行具体表述:流计算场景的抽象内容是在计算引擎(compute engine)上对源源不断的输入数据(input stream)进行处理(operate,也可称为操作,以下混用),而处理数据的流程是可以被分解为多个操作符(operator,也可称之为算子,以下混用)和操作符之间的数据流(stream),并组合成一个复杂的处理逻辑(topology)。
然后按照操作符所处在的位置,对操作符进行分类:将接入输入数据的操作符称之为source,将对数据进行加工处理的操作符称之为transform,将把数据写出到计算引擎之外(如其他存储)的操作符称之为sink。
本发明中采用分布式计算,对于分布式计算,其加速原理在于将计算逻辑分配到多个计算节点(node)上进行,多个节点同时工作,这可以有效缩减计算时间。同样地,分布式流计算的计算引擎会将用于计算操作的算子(operator)分布到多个计算节点上,对数据进行并行处理,高效完成数据处理工作。
从抽象层面看,数据源源不断地流入到流计算引擎中,按照预定义好的数据处理逻辑,对数据进行并行地加工处理,将处理后的结果写到存储上。整个的计算过程以inputstream作为驱动,有数据流入到计算引擎中,计算引擎中的算子将对数据完成处理,没有数据流入的时候,算子处于等待状态。
由于复杂的处理逻辑已经被拆解成一个个的算子操作,所以整个计算任务最核心最耗时的是算子,只有对算子操作进行加速,才能使得处理逻辑高效完成。基于这样的认识,分布式的处理逻辑,主要是算子的并发和分布式。也就是说算子可以按照并发度(Parallelism),被拆分成多个独立的算子实例(instance),多个实例并发工作。一个具体的例子:比如完成word count工作的算子WCOP(Word Count OPerator),可以对输入流中的单词(word)进行累加(word->count),那么并行的算子就意味着可以同时存在多个WCOP(比如:10个并发)同时进行这项工作,只要输入流被切分成多份(10份)分别给到算子实例就能使得处理效率大大提升。
分布式的流计算引擎进行工作时,运算逻辑的表达能力受限于能够使用算子的能力,算子的表达能力强,则能够实现更复杂的运算逻辑,反之,算子的表达能力弱,则实现的运算逻辑就很简单。为方便开发人员顺利完成用户逻辑(业务逻辑),算子中可以加入用户自定义函数(User define function),使得算子在对数据进行逻辑操作时按照用户逻辑进行处理。
以flink为例,它提供了多种类型的UDF接口:map、flatMap、filter、reduce、fold、aggregate、window、join、cogroup、connect、split等,这些UDF接口可以方便开发人员实现业务逻辑,并在合理的位置使用,这样就可以把每个算子的单元逻辑串起来实现复杂的处理逻辑。其中常用到的几类:
map/flatMap/filter,其实现逻辑如下,输入是1条记录(tuple),按照业务逻辑(UDF)完成计算,并按需要collector出去,即为输出。
reduce/fold/aggregate,其实现逻辑如下,输入是经过keyby过的数据,该操作符将把多条记录按照业务逻辑(UDF)聚集成一个输出结果,并输出出去。
对于测量参数窗口(window),其实现逻辑如下,对于流入的每条数据,通过windowassigner可以判定其由哪个(哪些)window进行处理,每个window实例都有其各自的trigger,用于对window内的数据进行触发计算,在真正调用业务逻辑(UDF)之前使用evictor将不用于计算的数据过滤出去,这样就完成了整个计算逻辑,并在业务逻辑中决定哪些数据需要collector出去,输出给下游。在window之上可以进行单流(stream)操作如:reduce、fold等聚集操作,也可以进行双流操作如:join、cogroup。
在flink中窗口只是一种相对复杂的算子,其组件包括:assigner、trigger、evictor,其核心处理流程是当数据到来时根据assigner指定的逻辑放入到特定的window中,每个window均有其独有的trigger,按照trigger中定义的逻辑触发window的计算,在对窗口内数据进行计算前按照evictor指定的逻辑过滤特定数据。而且上述三个接口均可由用户自定义实现。
利用flink中的window相关的接口可以实现:
1、每隔固定时间t_s(slide time)对一段时间t_w(window size)内的数据进行计算,这称之为滑动时间窗口计算(slide window),如每隔30秒对此前180秒的数据进行一次拉抬打压报警计算;
2、周期(tumbling time)输出统计数据,这称之为跳动时间窗口计算(tumblingwindow),如输出每秒钟证券的最大价格、最小价格、成交股数等。
对于测量参数Key值:Flink中的key是用来对数据进行分组操作的,而并行度(Parallelism)决定的是某个算子使用的task(thread)数量,key by过的数据流流入到一个并行的算子上时,相同key的数据会由同一个算子进行处理,同一个算子上会处理多个key的数据。Key by后的数据往往会使用聚集操作(可以在窗口上进行),那么flink集群中将为所有出现的key存储一个聚集状态。因此key的取值空间大小(约等于flink集群中出现的key数量)对于flink集群将有不同的内存压力。
举例进行说明:
1、证券
证券数量在10000只左右。当使用证券进行keyby时,并行的算子会处理10000个左右的key,以及key对应的聚集状态。如果聚集状态不大(如:500KB),则flink集群压力不会太大(总体的状态数据量为500KB*2000=1000MB,还被并行计算)。
2、投资者
投资者数量在亿级左右。当使用投资者进行keyby时,并行的算子会处理1亿左右的key。按照聚集状态数据量为200B估计,则flink集群压力会达到:200B*10^8=20GB。
3、证券+投资者
证券+投资者描述的是当天活跃的投资者交易证券的行为,其数量级应该在亿级,分析与投资者情况类似,不再赘述。
当数据在Key值上分布不均匀,存在数据倾斜问题时,有可能对集群造成不同程度的影响,不过这取决于keyby后续操作是什么算子。当key by后是聚集算子时,对于每个key其缓存的是聚集状态,该聚集状态大小不随数据倾斜发生变化,因此在keyby后进行聚集操作这个场景下数据倾斜不影响集群的内存压力,但数据倾斜意味着某些key的流入数据量大,这就使得其计算开销增加,对cpu占用情况会有一定程度加重。
当keyby后是window算子时,其影响情况取决于window内进行什么形式的操作,如果在window上进行聚集操作,其对集群影响情况与上面分析类似;如果在window上进行全窗口数据计算,即window.apply(User Define Window Function),那么对于window中的每个key,都会在内存中缓存一份iterable,以方便用户处理逻辑调用,在这个情况下,数据倾斜意味着数据量大的key所在机器(thread)的内存压力会增大,又在同一个thread上,多个key值是顺序进行的,数据量大的key会延时阻塞这个thread上后续的计算。
从报警类型来说,有一阶段类的报警,也有具有事件依赖关系的多阶段报警。对于一阶段报警,实现相对容易,关注焦点主要在实现逻辑、复杂度、吞吐量、延时等;对于多阶段报警,需要当某条件成立(报警)时在进行后续监控报警。
对业务逻辑来说,窗口操作是一种很重要的操作算子,其操作流程在上述窗口介绍中进行了说明。
从多个维度(多个测量参数)对Flink上运行的任务进行分解可以得到如下表格:
针对不同的业务场景可以对其进行设计分析,大体的分析维度可以参考上面的表格,而具体的实现逻辑中给出了相关的实现细节。详情参考具体场景的设计实现。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
Claims (10)
1.流计算引擎的测试方法,其特征在于,包括:
步骤S1,获取目标场景;
步骤S2,选择所述目标场景对应的多个测量参数,所述多个测量参数为预先保存的测量参数;
步骤S3,调用流计算引擎,通过所述流计算引擎对样本数据进行处理,得到流计算运行结果,所述样本数据为所述目标场景对应的数据;
步骤S4,根据所述流计算运行结果,得到所述多个测量参数对应的测量值;
步骤S5,根据所述多个测量参数对应的测量值,经分析得到所述流计算引擎的测试结果。
2.根据权利要求1所述的流计算引擎的测试方法,其特征在于,
通过多线程并行的方式调用所述流计算引擎,或通过串行的方式调用不同的所述流计算引擎。
3.根据权利要求1所述的流计算引擎的测试方法,其特征在于,
所述多个测量参数包括操作复杂程度、key值分布、key值空间、窗口操作、状态信息、多阶段报警类型和时间。
4.根据权利要求1所述的流计算引擎的测试方法,其特征在于,
所述多个测量参数对应的测量值包括所述多个测量参数的支持度。
5.根据权利要求1所述的流计算引擎的测试方法,其特征在于,
还包括,对所述测试结果的处理:
包括将所述测试结果通过显示器进行显示,或将所述测试结果发送给服务器。
6.根据权利要求1所述的流计算引擎的测试方法,其特征在于,
通过所述流计算引擎对样本数据进行处理采用分布式计算方式。
7.流计算引擎的测试装置,其特征在于,包括:
场景获取模块,用于获取目标场景;
测量参数选择模块,用于选择所述目标场景对应的多个测量参数,所述多个测量参数为预先保存的测量参数;
流计算引擎调用模块,用于调用流计算引擎,通过所述流计算引擎对样本数据进行处理,得到流计算运行结果,所述样本数据为所述目标场景对应的数据;
测量值获取模块,用于根据所述流计算运行结果,得到所述多个测量参数对应的测量值;
测试结果模块,用于根据所述多个测量参数对应的测量值,经分析得到所述流计算引擎的测试结果。
8.根据权利要求7所述的流计算引擎的测试装置,其特征在于,
通过多线程并行的方式调用所述流计算引擎,或通过串行的方式调用不同的所述流计算引擎。
9.根据权利要求7所述的流计算引擎的测试装置,其特征在于,
所述多个测量参数包括操作复杂程度、key值分布、key值空间、窗口操作、状态信息、多阶段报警类型和时间。
10.根据权利要求7所述的流计算引擎的测试装置,其特征在于,
所述多个测量参数对应的测量值包括所述多个测量参数的支持度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611234004.1A CN106649119B (zh) | 2016-12-28 | 2016-12-28 | 流计算引擎的测试方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611234004.1A CN106649119B (zh) | 2016-12-28 | 2016-12-28 | 流计算引擎的测试方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106649119A true CN106649119A (zh) | 2017-05-10 |
CN106649119B CN106649119B (zh) | 2019-09-20 |
Family
ID=58832135
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611234004.1A Active CN106649119B (zh) | 2016-12-28 | 2016-12-28 | 流计算引擎的测试方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106649119B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108985367A (zh) * | 2018-07-06 | 2018-12-11 | 中国科学院计算技术研究所 | 计算引擎选择方法和基于该方法的多计算引擎平台 |
CN109522326A (zh) * | 2018-10-18 | 2019-03-26 | 上海达梦数据库有限公司 | 数据分发方法、装置、设备及存储介质 |
CN109710231A (zh) * | 2018-12-21 | 2019-05-03 | 成都四方伟业软件股份有限公司 | 一种可视化脚本编辑方法与装置 |
CN109871248A (zh) * | 2018-12-29 | 2019-06-11 | 天津南大通用数据技术股份有限公司 | 一种可变间隔的去除重复流数据的会话窗口设计方法 |
CN110222091A (zh) * | 2019-06-10 | 2019-09-10 | 帷幄匠心科技(杭州)有限公司 | 一种海量数据实时统计分析方法 |
CN112084016A (zh) * | 2020-07-27 | 2020-12-15 | 北京明略软件系统有限公司 | 一种基于flink的流计算性能优化系统及方法 |
CN112448861A (zh) * | 2019-08-30 | 2021-03-05 | 北京国双科技有限公司 | 边缘设备的处理方法及装置、存储介质和处理器 |
CN113010429A (zh) * | 2021-03-26 | 2021-06-22 | 北京金山云网络技术有限公司 | 一种流计算应用的测试方法、装置及设备 |
CN113220725A (zh) * | 2021-04-30 | 2021-08-06 | 中国平安人寿保险股份有限公司 | 基于批计算的流计算数据测试方法及相关设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615777A (zh) * | 2015-02-27 | 2015-05-13 | 浪潮集团有限公司 | 一种基于流式计算引擎的实时数据处理方法及装置 |
CN105205105A (zh) * | 2015-08-27 | 2015-12-30 | 浪潮集团有限公司 | 一种基于storm的数据ETL系统及处理方法 |
CN105574082A (zh) * | 2015-12-08 | 2016-05-11 | 曙光信息产业(北京)有限公司 | 基于Storm的流处理方法及系统 |
CN106021326A (zh) * | 2016-05-03 | 2016-10-12 | 无锡雅座在线科技发展有限公司 | 基于流计算的事件处理方法和装置 |
US20160364450A1 (en) * | 2015-06-12 | 2016-12-15 | International Business Machines Corporation | Tracking tuples to reduce redundancy in a graph |
-
2016
- 2016-12-28 CN CN201611234004.1A patent/CN106649119B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104615777A (zh) * | 2015-02-27 | 2015-05-13 | 浪潮集团有限公司 | 一种基于流式计算引擎的实时数据处理方法及装置 |
US20160364450A1 (en) * | 2015-06-12 | 2016-12-15 | International Business Machines Corporation | Tracking tuples to reduce redundancy in a graph |
CN105205105A (zh) * | 2015-08-27 | 2015-12-30 | 浪潮集团有限公司 | 一种基于storm的数据ETL系统及处理方法 |
CN105574082A (zh) * | 2015-12-08 | 2016-05-11 | 曙光信息产业(北京)有限公司 | 基于Storm的流处理方法及系统 |
CN106021326A (zh) * | 2016-05-03 | 2016-10-12 | 无锡雅座在线科技发展有限公司 | 基于流计算的事件处理方法和装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108985367A (zh) * | 2018-07-06 | 2018-12-11 | 中国科学院计算技术研究所 | 计算引擎选择方法和基于该方法的多计算引擎平台 |
CN109522326B (zh) * | 2018-10-18 | 2021-06-29 | 上海达梦数据库有限公司 | 数据分发方法、装置、设备及存储介质 |
CN109522326A (zh) * | 2018-10-18 | 2019-03-26 | 上海达梦数据库有限公司 | 数据分发方法、装置、设备及存储介质 |
CN109710231A (zh) * | 2018-12-21 | 2019-05-03 | 成都四方伟业软件股份有限公司 | 一种可视化脚本编辑方法与装置 |
CN109871248A (zh) * | 2018-12-29 | 2019-06-11 | 天津南大通用数据技术股份有限公司 | 一种可变间隔的去除重复流数据的会话窗口设计方法 |
CN110222091B (zh) * | 2019-06-10 | 2021-03-30 | 帷幄匠心科技(杭州)有限公司 | 一种海量数据实时统计分析方法 |
CN110222091A (zh) * | 2019-06-10 | 2019-09-10 | 帷幄匠心科技(杭州)有限公司 | 一种海量数据实时统计分析方法 |
CN112448861A (zh) * | 2019-08-30 | 2021-03-05 | 北京国双科技有限公司 | 边缘设备的处理方法及装置、存储介质和处理器 |
CN112084016A (zh) * | 2020-07-27 | 2020-12-15 | 北京明略软件系统有限公司 | 一种基于flink的流计算性能优化系统及方法 |
CN112084016B (zh) * | 2020-07-27 | 2024-02-23 | 北京明略软件系统有限公司 | 一种基于flink的流计算性能优化系统及方法 |
CN113010429A (zh) * | 2021-03-26 | 2021-06-22 | 北京金山云网络技术有限公司 | 一种流计算应用的测试方法、装置及设备 |
CN113220725A (zh) * | 2021-04-30 | 2021-08-06 | 中国平安人寿保险股份有限公司 | 基于批计算的流计算数据测试方法及相关设备 |
CN113220725B (zh) * | 2021-04-30 | 2024-04-09 | 中国平安人寿保险股份有限公司 | 基于批计算的流计算数据测试方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN106649119B (zh) | 2019-09-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106649119B (zh) | 流计算引擎的测试方法及装置 | |
Isah et al. | A survey of distributed data stream processing frameworks | |
US10831648B2 (en) | Intermittent failure metrics in technological processes | |
JP6533746B2 (ja) | データレコード選択 | |
Kotenko et al. | Parallel big data processing system for security monitoring in Internet of Things networks. | |
CN103176974B (zh) | 优化数据库中访问路径的方法和装置 | |
JP5878537B2 (ja) | データフローグラフの特性の評価 | |
US9424288B2 (en) | Analyzing database cluster behavior by transforming discrete time series measurements | |
CN106506266B (zh) | 基于GPU、Hadoop/Spark混合计算框架的网络流量分析方法 | |
Chawda et al. | Processing Interval Joins On Map-Reduce. | |
CN109697456A (zh) | 业务分析方法、装置、设备及存储介质 | |
CN105657039A (zh) | 一种基于大数据的电厂设备故障快速定位系统和方法 | |
KR101989330B1 (ko) | 데이터 처리 애플리케이션의 검사 | |
Keeton et al. | Do you know your IQ? A research agenda for information quality in systems | |
WO2015026273A1 (en) | A method and system for analyzing accesses to a data storage type and recommending a change of storage type | |
KR20150118963A (ko) | 큐 모니터링 및 시각화 | |
Egri et al. | Cross-correlation based clustering and dimension reduction of multivariate time series | |
US11768754B2 (en) | Parallel program scalability bottleneck detection method and computing device | |
KR101830936B1 (ko) | 데이터베이스와 애플리케이션을 위한 웹기반 성능개선 시스템 | |
CN105849703B (zh) | 通过上下文分区的经分类的事件监视 | |
CN112526905A (zh) | 一种针对指标异常的处理方法及系统 | |
Yang et al. | Operation anomaly monitoring of customer service data analysis platform based on improved fp-growth algorithm | |
Pelle et al. | A Comprehensive Performance Analysis of Stream Processing with Kafka in Cloud Native Deployments for IoT Use-cases | |
Wang et al. | DataNet: A data distribution-aware method for sub-dataset analysis on distributed file systems | |
Roudjane et al. | Detecting trend deviations with generic stream processing patterns |
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 | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 518000 2203/2204, Building 1, Huide Building, Beizhan Community, Minzhi Street, Longhua District, Shenzhen, Guangdong Patentee after: SHENZHEN AUDAQUE DATA TECHNOLOGY Ltd. Address before: 518000 units J and K, 12 / F, block B, building 7, Baoneng Science Park, Qinghu Industrial Zone, Qingxiang Road, Longhua New District, Shenzhen City, Guangdong Province Patentee before: SHENZHEN AUDAQUE DATA TECHNOLOGY Ltd. |