一种流式数据处理自适应速率控制方法技术

技术编号:15297755 阅读:91 留言:0更新日期:2017-05-11 20:25
本发明专利技术属于计算机应用技术领域,一种流式数据处理自适应速率控制方法。该方法基于常用的数据接收消息队列和大数据分布式计算框架,根据当前计算集群的情况,通过预分片的方式调整数据处理的并行度,并通过自适应实时速率控制方法动态调整集群当前处理数据的数量,保证计算集群的稳定性,降低数据流式处理的延迟。随着“大数据”逐步深入到各个行业中,海量数据实时处理的应用范围逐步扩大。海量数据处理系统的实时性和稳定性是十分重要的。该方法在不增加计算集群硬件数量和任务编程复杂度的情况下,在一定程度上提升了计算集群的稳定性和处理效率。

Adaptive rate control method for flow data processing

The invention belongs to the technical field of computer application, and an adaptive rate control method for flow data processing. This method is based on the computational framework of common data receiving message queue and data distributed computing cluster, according to the current situation, through the pre sheet adjustment data parallelism, and through real-time adaptive rate control method of the dynamic adjustment of cluster data quantity, to ensure the stability of cluster computing, reduce data stream processing delay. With the gradual deepening of big data into various industries, the application of mass data real-time processing gradually expanded. The real-time and stability of mass data processing system is very important. This method improves the stability and efficiency of computing cluster to some extent without increasing the number of hardware and the complexity of task programming.

【技术实现步骤摘要】

本专利技术属于计算机应用
,涉及一种流式数据处理自适应速率控制方法
技术介绍
当前,随着技术的发展,数据量日益增加,“大数据”技术已经渗透到各行各业。目前,许多设备都会收集大量的数据,并希望对数据及时处理从而发掘其中的价值。例如智能手机、传感器、物联网设备、社交网络和在线事务系统产生的数据都需要不断的收集,通过实时的对数据进行分析,从而实现快速响应。因此,如何提升数据实时分析处理的能力也成为一个十分重要的问题。当前一些主流的大数据实时处理框架有Spark,Storm,Flink等。SparkStreaming是对Spark核心API的扩展,它是按照一定的时间间隔将任务分成一系列短小的批处理作业进行处理。Storm是以单条记录为粒度进行处理的流式处理系统,拥有良好的实时性。Flink和Spark类似,其核心是流式数据流引擎,为数据流上的分布式计算提供了数据分发、通信和容错。但是和SparkStreaming相比,Storm的吞吐量较低,且实现复杂的统计需求较为困难。Flink的批处理和流式处理是两个独立的模块,无法进行结合。SparkStreaming因为使用Micro-batch处理数据,可以达到较高的吞吐率,在满足秒级的实时性要求同时可以达到较高的效率。流式处理系统需要良好的实时性,并且在处理突发任务时能保证系统的稳定。通常,流式处理架构通过以下几种方式保证系统的实时性和稳定性:1.当处理的负载超过系统处理能力上限时,通过丢弃部分数据降低工作负载;2.动态资源管理;3.动态批次大小。但是丢弃数据通常会造成计算结果不准确,动态资源管理为了针对数据处理洪峰需要更多的硬件资源,动态批次大小使得运行延迟变得不确定。集群的状态不是一成不变的,因而人为设置的静态数据处理速率上限可能是不准确的,太小可能造成在处理突发的速率增加时无法充分利用计算资源,太大则可能导致系统接收过多的数据,造成计算集群的高延迟,从而导致系统不稳定。
技术实现思路
针对现有技术中存在的问题,本专利技术提供了一种海量数据的流式处理自适速率控制方法。该方法基于常用的数据汇总消息队列和流式数据分布式计算框架,根据当前计算集群的情况,通过预分片的方式调整数据处理的并行度,并通过自适应实时速率控制方法动态调整集群当前处理数据的数量,使得每一批输入数据的处理时间和批次间隔保持一致,保证计算集群的稳定性,降低数据流式处理的延迟。用户可以利用本技术提供的方法实现如下功能:海量数据的实时接收和预处理;数据的实时处理;数据预分片及数据处理的并行化调整;实时处理数据数量的动态调整;处理结果输出到数据库中。本专利技术的技术方案:一种流式数据处理自适应速率控制方法,步骤如下:第一步,数据接收和分区缓存流式数据处理系统接收的数据,其格式由用户定义。要求一条完整的数据为一行,或者使用无歧义的特殊分隔符对数据进行分割。使用通用的消息队列作为数据源对数据进行汇总,并对数据按照分区规则将数据保存到消息队列中的某个分区中。本步骤使得消息队列中各个分片中的数据数量较为均匀,消息队列中的数据供之后的步骤读取计算。第二步,数据预分片从消息队列中读取数据前,将消息队列中单个数据分片映射到多个流式数据处理集群的分片中,映射的数量根据集群虚拟核心数量进行设置;避免了之后在计算集群中对数据进行重新分片以及task发送到工作节点的消耗。预分片方式在将数据获取推迟到计算时进行,从而将原来的数据读取、重新分片、task连同分片发送到工作节点进行计算,这三个步骤整合为在计算时对按照分片规则分片的数据进行读取并计算。分片的数量决定了系统能达到的最大的并行度,从而影响端到端延迟。方法在任务开始时确定了分片的数量,当集群的各个工作节点的性能差距不大时,可以设置分片数量为集群可用虚拟核心的整数倍,这样可以保证任务可以平均分配到每一个CPU核心上,避免正常运行过程中出现某个节点空闲的情况,从而充分利用硬件资源。通过本步骤,系统得到了消息队列和流式数据处理集群之间分片的映射关系,之后数据读取按照该映射关系确定每一条数据的流向。第三步,处理速率实时反馈控制从消息队列中读取数据,并根据当前的数据处理速率上限确定最多可以从消息队列中读取的数据数量,避免读取的数据数量超过计算集群的最大处理能力;实时速率控制器的处理速率上限计算方法如下:3.1)通过慢启动的方式开始进行调整,初始的数据处理速率上限设置为消息队列的每个分片每秒获取n条数据,50<n<1000;3.2)第一批完成后,对以后每一批按照以下的步骤对数据处理速率上限进行计算;3.2.1)在批次开始时,提交当前批次的开始时间t_batchst给速率控制器;3.2.2)在批次完成时,提交当前批次的处理结束时间t_batched,处理该批次用时t_proclast,,该批次在批次队列中的等待时间t_waitlast,该批次处理数据的数量elemnumlast;3.2.3)在当前批次提交时,对当前批次的数据处理速率上限进行计算,分为以下三种情况:第一种情况,在当前批次提交时,上一批次执行完成,且上一批次数据的处理时间与流式数据批处理集群的批次间隔t_interval相差大于松弛参数prelx;第二种情况,当前批次提交时,上一批次执行完成,且上一批次数据的处理时间位于t_interval-prelx和t_interval之间,prelx=min(50,t_interval×0.05);第三种情况,当前批次提交时,上一批次尚未完成。第一种情况和第三种情况都基于PID控制算法对数据处理速率上限计算:newRate=latesRate-Kp×error-Ki×historicaiError-Kd×dError(1)其中,latestRate为最新处理完成批次的数据处理速率上限;Kp为比例系数,取值为1;error为数据处理速率的估计误差;Ki为积分系数,取值为0.2;historicalError为数据处理速率的累积误差;Kd为微分系数,为了减小噪声数据对系统的影响,取值为0;dError为偏差速率变化率;数据处理速率的估计误差error为:其中,elemnumlast为最新处理完成的批次处理数据的数量;t_proclast为最新处理完成的批次处理的时间;Kblock为阻塞系数,阻塞系数取值0.3;blockTime为估计的处理时间增加值;当为第一种情况时,blockTime取值为0,此时由公式(2)计算得到的结果为数据处理速率的估计误差;当为第三种情况时,blockTime计算如公式(3)所示:blockTime=max(t_interval-(submit_time-t_batchst),brelx)(3)其中,t_interval为批次提交的间隔;submit_time为任务的提交时间;在批次间隔大于1000ms时,brelx=50ms,当批次间隔小于1000ms时,brelx=t_interval×0.05;数据处理速率的累积误差historicalError的计算如公式(4)所示:其中,t_waitlast为最新处理完成的批次在批次队列中等待的时间;当为第一种情况时,blockTime取值为0;当为第三种情况时,blockTime计算如公式(3)所本文档来自技高网
...
一种流式数据处理自适应速率控制方法

【技术保护点】
一种流式数据处理自适应速率控制方法,其特征在于,包括如下步骤:第一步,数据接收和分区缓存流式数据处理系统接收的数据,将一条完整的数据为一行,或者使用无歧义的特殊分隔符对数据进行分割;使用消息队列作为数据源对数据进行汇总,并对数据按照分区规则将数据保存到消息队列中的某个分区中;第二步,数据预分片从消息队列中读取数据前,将消息队列中单个数据分片映射到多个流式数据处理集群的分片中,映射的数量根据集群虚拟核心数量进行设置;第三步,处理速率实时反馈控制从消息队列中读取数据,并根据当前的数据处理速率上限确定最多可以从消息队列中读取的数据数量,避免读取的数据数量超过计算集群的最大处理能力;实时速率控制器的处理速率上限计算方法如下:3.1)通过慢启动的方式开始进行调整,初始的数据处理速率上限设置为消息队列的每个分片每秒获读取n条数据,50<n<1000;3.2)第一批完成后,对以后每一批按照以下的步骤对数据处理速率上限进行计算;3.2.1)在批次开始时,提交当前批次的开始时间t_batchst给速率控制器;3.2.2)在批次完成时,提交当前批次的处理结束时间t_batched,处理该批次用时t_proclast,,该批次在批次队列中的等待时间t_waitlast,该批次处理数据的数量elemnumlast;3.2.3)在当前批次提交时,对当前批次的数据处理速率上限进行计算,分为以下三种情况:第一种情况,在当前批次提交时,上一批次执行完成,且上一批次数据的处理时间与流式数据批处理集群的批次间隔t_interval相差大于松弛参数prelx;第二种情况,当前批次提交时,上一批次执行完成,且上一批次数据的处理时间位于t_interval‑prelx和t_interval之间;prelx=min(50,t_interval×0.05);第三种情况,当前批次提交时,上一批次尚未完成;第一种情况和第三种情况都基于PID控制算法对数据处理速率上限计算:newRate=latestRate‑Kp×error‑Ki×historicalError‑Kd×dError   (1)其中,latestRate为最新处理完成批次的数据处理速率上限;Kp为比例系数,取值为1;error为数据处理速率的估计误差;Ki为积分系数,取值为0.2;historicalError为数据处理速率的累积误差;Kd为微分系数,为了减小噪声数据对系统的影响,取值为0;dError为偏差速率变化率;数据处理速率的估计误差error为:error=latestRate-elemnumlastt_proclast+Kblock×blockTime---(2)]]>其中,elemnumlast为最新处理完成的批次处理数据的数量;t_proclast为最新处理完成的批次处理的时间;Kblock为阻塞系数,阻塞系数取值0.3;blockTime为估计的处理时间增加值;当为第一种情况时,blockTime取值为0,此时由公式(2)计算得到的结果为数据处理速率的估计误差;当为第三种情况时,blockTime计算如公式(3)所示:blockTime=max(t_interval‑(submit_time‑t_batchst),brelx)       (3)其中,t_interval为批次提交的间隔;submit_time为任务的提交时间;在批次间隔大于1000ms时,brelx=50ms,当批次间隔小于1000ms时,brelx=t_interval×0.05;数据处理速率的累积误差historicalError的计算如公式(4)所示:historicalError=(t_waitlast+Kblock×blockTime)×processingRatet_interval---(4)]]>其中,t_waitlast为最新处理完成的批次在批次队列中等待的时间;当为第一种情况时,blockTime取值为0;当为第三种情况时,blockTime计算如公式(3)所示;processingRate表示最新处理完成批次的数据处理速率,其计算如公式(5)所示:processingRate=elemnumlastt_proclast---(5)]]>偏差速率变化率dError的计算如公式(6)所示:dError=error-latestErrordelaySinceUpdate---(6)]]>其中,latestError表示前一个处理完成批次的速率估计误差,delaySinceUpdate表示前一个处理完成批次和最近完成批次之间经过的时间,其计算方式如公式(7)所示:delaySinceUpdate=lastProcessingEndTime‑latestTime  ...

【技术特征摘要】
1.一种流式数据处理自适应速率控制方法,其特征在于,包括如下步骤:第一步,数据接收和分区缓存流式数据处理系统接收的数据,将一条完整的数据为一行,或者使用无歧义的特殊分隔符对数据进行分割;使用消息队列作为数据源对数据进行汇总,并对数据按照分区规则将数据保存到消息队列中的某个分区中;第二步,数据预分片从消息队列中读取数据前,将消息队列中单个数据分片映射到多个流式数据处理集群的分片中,映射的数量根据集群虚拟核心数量进行设置;第三步,处理速率实时反馈控制从消息队列中读取数据,并根据当前的数据处理速率上限确定最多可以从消息队列中读取的数据数量,避免读取的数据数量超过计算集群的最大处理能力;实时速率控制器的处理速率上限计算方法如下:3.1)通过慢启动的方式开始进行调整,初始的数据处理速率上限设置为消息队列的每个分片每秒获读取n条数据,50<n<1000;3.2)第一批完成后,对以后每一批按照以下的步骤对数据处理速率上限进行计算;3.2.1)在批次开始时,提交当前批次的开始时间t_batchst给速率控制器;3.2.2)在批次完成时,提交当前批次的处理结束时间t_batched,处理该批次用时t_proclast,,该批次在批次队列中的等待时间t_waitlast,该批次处理数据的数量elemnumlast;3.2.3)在当前批次提交时,对当前批次的数据处理速率上限进行计算,分为以下三种情况:第一种情况,在当前批次提交时,上一批次执行完成,且上一批次数据的处理时间与流式数据批处理集群的批次间隔t_interval相差大于松弛参数prelx;第二种情况,当前批次提交时,上一批次执行完成,且上一批次数据的处理时间位于t_interval-prelx和t_interval之间;prelx=min(50,t_interval×0.05);第三种情况,当前批次提交时,上一批次尚未完成;第一种情况和第三种情况都基于PID控制算法对数据处理速率上限计算:newRate=latestRate-Kp×error-Ki×historicalError-Kd×dError(1)其中,latestRate为最新处理完成批次的数据处理速率上限;Kp为比例系数,取值为1;error为数据处理速率的估计误差;Ki为积分系数,取值为0.2;historicalError为数据处理速率的累积误差;Kd为微分系数,为了减小噪声数据对系统的影响,取值为0;dError为偏差速率变化率;数据处理速率的估计误差error为:error=latestRate-elemnumlastt_proclast+Kblock×blockTime---(2)]]>其中,elemnumlast为最新处理完成的批次处理数据的数量;t_proclast为最新处理完成的批次处理的时间;Kblock为阻塞系数,阻塞系数取值0.3;blockTime为估计的处理时间增加值;当为第一种情况时,blockTime取值为0,此时由公式(2)计算得到的结果为数据处理速率的估计误差;当为第三种情况时,blockTime计算如公式(3)所示:blockTime=max(t_interval-(submit_time-t_batchst),brelx)(3)其中,t_interval为批次提交的间隔;submit_time为任务的提交时间;在批次间隔大于1000ms时,brelx=50ms,当批次间隔小于1000ms时,brelx=t_interval×0.05;数据处理速率的累积误差historicalError的计算如公式(4)所示:historicalError=(t_waitlast+Kblock×blockTime)×processingRatet_interval---(4)]]>其中,t_waitlast为最新处理完成的批次在批次队列中等待的时间;当为第一种情况时,blockTime取值为0;当为第三种情况时,blockTime计算如公式(3)所示;processingRate表示最新处理完成批次的数据处理速率,其计算如公式(5)所示:processingRate=elemnumlastt_proclast---(5)]]>偏差速率变化率dError的计算如公式(6)所示:dError=error-latestErrordelaySinceUpdate---(6)]]>其中,latestError表示前一个处理完成批次的速率估计误差,delaySinceUpdate表示前一个处理完成批次和最近完成批次之间经过的时间,其计算方式如公式(7)所示:delaySinceUpdate=lastProcessingEndTime-latestTime(7)第二种情况,使用最新处理完成批次的数据处理速率上限latestRate作为当前批次的数据处理速率上限newRate;第四步,数据的读取和实时处理;流式数据批处理集群按照第三步计算的数据处理速率上限和第二步预分片规则对数据进行读取;在本批次数据处理完成之后,将结果实时输出到数据库中。2.根据权利要求1所述的一种流式数据处理自适应速率控制方法,其特征在于,所述的第二步的数据预分片的具体方法为:1)流式数据处理集群以批次的时间间隔为周期,获取消息队列的分片信息;对于每一个批次,计算集群都需要获取消息队列中的n个数据分片,则消息队列中数据分片信息表示为s_partition=(s_partitioni|i=1...n);对于当前批次,消息队列每一个分片s_partitioni的信息包括:分片所属的主题topic、消息队列分片的唯一ID、当前批次需要获取的数据在消息队列指定分片中的起始位置start_of...

【专利技术属性】
技术研发人员:申彦明李晓东
申请(专利权)人:大连理工大学
类型:发明
国别省市:辽宁;21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1