一种面向SparkStreaming平台的数据接收通道动态分配方法与流程

文档序号:14426625阅读:170来源:国知局

本发明属于流式大数据计算领域,具体涉及批量流式数据处理平台的组件资源动态分配方法。



背景技术:

流式数据是大数据领域的一种重要的数据形态,具有规模连续无限、产生动态波动以及处理高时效性等特征。sparkstreaming批量流式计算平台是流式大数据处理领域的最新技术进展。该平台的核心特征是将流式大数据按时间顺序切分为多个数据块,并周期性地使用spark批处理计算引擎对数据块进行并行处理,以获取近实时的数据处理响应和较高的数据吞吐率。sparkstreaming已广泛运用于流量统计、日志分析等领域,成为批量流式计算平台的代表。

数据接收通道(receiver)是sparkstreaming平台的核心组件,负责接收连续到达的流式数据,并对数据进行缓存。数据接收通道中的缓存数据每隔固定的块生成间隔周期(blockinterval)将被聚集为数据块,数据块则以更大的批处理周期(batchinterval)被并行处理。既有sparkstreaming平台采用静态数据接收通道分配技术,即在应用启动时,依据用户配置参数,为应用一次性分配相应数量的数据接收通道,并在应用运行过程中维持不变。

然而,由于平台用户对流式应用的负载特征及资源需求往往缺乏充分的了解,用户级通道参数配置具有较大的盲目性。另一方面,流式数据负载往往具有较强的波动性,这与上述静态分配方法构成一对矛盾。在流式数据负载到达强度较小时,静态数据接收通道配置导致数据接收通道利用率低下;在流式数据负载到达强度增大时,静态数据接收通道配置将导致通道产生数据接收瓶颈,限制了每一个批处理周期内可处理的数据块数量与规模,无法充分利用批处理引擎的并行计算能力。实验测试表明,当sparkstreaming应用的数据接收通道产生瓶颈时,批处理周期内数据有效计算时间仅占25%。



技术实现要素:

针对上述问题,本文提出了sparkstreaming数据接收通道动态分配方法。该方法的核心思想是依据sparkstreaming应用的数据接收能力及流式数据到达速率变化状态的预测,为流式应用在线自动化地增加和减少数据通道的分配部署,确保数据处理的时效性以及通道组件资源和批处理引擎计算能力的有效利用。

在本发明中,依据sparkstreaming数据接收通道工作原理,选取数据接收通道组件中数据缓存区的空间利用率作为数据通道接收能力的量化表征。本发明中,选取马尔可夫链模型作为理论工具,对流式数据到达速率状态变化进行预测。马尔可夫链模型是一种经典的概率模型,它研究的是某一状态到另一状态转移的规律。由马尔可夫链的无后效性可知,系统未来所处的状态与过去状态无关,而只与当前的状态有关。sparkstreaming流式应用的数据到达速率变化具有很大的随机性,下一秒数据到达速率的状态变化往往和当前的状态有较强的相关性。因此,利用马尔可夫链模型预测流式数据到达速率的变化趋势具有较好的可行性。

本发明所述的数据接收通道动态分配方法主要分为六个步骤:初始化、数据接收通道接收能力评估、基于马尔可夫链模型的流式数据到达速率变化状态预测、数据接收通道动态分配决策、数据接收通道组件回收与追增和回溯。在本方法中,有四个基本参数:数据块生成周期tblockinterval,批处理周期tbatchinterval,应用数据接收能力的上限阈值ulimit,应用数据接收能力的下限阈值llimit。ulimit一般取值在0.8-1之间,llimit一般取值在0.5-0.7之间,tbatchinterval取值在1-2s之间,tblockinterval取值在0.1-0.2s之间。

上述方法按以下步骤实现:

(1)初始化。sparkstreaming应用启动后,利用平台既有组件收集当前sparkstreaming应用对应的数据源编号inputstream。令sparkstreaming应用当前分配的数据接收通道集合c,c={c1,c2,…cn},利用平台既有数据接收通道管理组件收集应用数据接收通道集合c信息。

(2)数据接收通道接收能力评估。

2.1)令当前时刻为i,应用的数据接收通道缓存区空间使用量集合ei表示为其中,n表示应用当前分配的数据接收通道总数,表示应用分配的第j个数据接收通道在i时刻的缓存区空间使用量。

2.2)对于每一个数据接收通道cj,cj∈c,利用公式(1)计算其接收能力。其中,et表示数据缓存区空间总量(依据用户当前硬件配置设置)。

2.3)综合当前应用已分配的所有数据接收通道的接收能力,利用公式(2)计算当前时刻i应用的数据接收能力。

2.4)若εi>ulimit或εi<llimit,则执行步骤(3);否则,执行步骤(6)。

(3)基于马尔可夫链模型的流式数据到达速率变化状态预测。

3.1)令当前时刻为i,流式数据到达速率历史记录集r表示为r={ri-1,ri-2,ri-3…ri-m}。

3.2)定义数据到达速率变化的状态空间k,k={k1,k2,k3},其中,k1为增强状态、k2为持平状态,k3为减弱状态。对于任一rl∈r,若rl-1<rl,则l时刻数据到达速率变化状态为k1;若rl-1=rl,则l时刻数据到达速率变化状态为k2;若rl-1>rl,则l时刻数据到达速率变化状态为k3。

3.3)状态转移概率计算。

3.3.1)令i时刻流式数据到达速率变化状态历史记录集psi表示为psi={si-1,si-2…,si-m}。对于任一sj∈psi,依据步骤3.2)中的方法计算其值。

3.3.2)计算状态转移判定因子。状态转移判定因子表示相邻时刻点间,sparkstreaming应用数据到达速率变化状态的转移。令为k时刻应用数据到达速率变化状态转移判定因子,其中,sk∈psi,j,l∈{1,2,3}。的计算方法为,若sk=kj且sk+1=kl,则否则,

3.3.3)统计状态转移计数表示在psi中,满足起始状态为kj且下一时刻的目标状态为kl的状态转移总数。统计方法如公式(3)。

3.3.4)根据公式(4)计算状态转移概率。

3.4)根据步骤3.3)得到的状态转移概率构建状态转移矩阵pi

3.5)依据步骤3.2)计算当前时刻i的数据到达速率变化状态si。若si=kl,kl∈k,则遍历状态转移矩阵pi中起始状态为kl的相应行(例如,若si=k1,则遍历pi中状态转移概率所在行。),选择其中取值最大的状态转移概率设置i+1时刻的数据到达速率变化状态si+1=kd。

(4)数据接收通道动态分配决策。

4.1)令θ为通道动态分配决策因子。若εi>ulimit且si+1=k3,转至步骤4.2);若εi<llimit且si+1=k1,转至步骤4.3);其余情况转至步骤(6)。

4.2)设置θ←-1,表示回收一个数据接收通道。

4.3)设置θ←1,表示追增一个数据接收通道。

(5)数据接收通道组件回收与追增。

5.1)判断动态分配决策因子,若θ=-1,则转至步骤5.2);若θ=1,则转至步骤5.3)。

5.2)数据接收通道组件回收。

5.2.1)在sparkstreaming应用当前分配的数据接收通道集合c中随机选取一个数据接收通道cj。

5.2.2)在数据接收通道管理组件中,撤销该数据接收通道的注册信息,并将该接收通道从应用当前分配的数据接收通道集合c中删除。

5.2.3)停止该数据接收通道的数据接收功能。

5.3)数据接收通道组件追增。

5.3.1)将新追增的数据接收通道对应的数据源编号设置为inputstream,并将该数据接收通道加入应用当前分配的数据接收通道集合c中。

5.3.2)向sparkstreaming既有的资源管理器申请数据接收通道运行资源,用于新增数据接收通道的启动。

5.3.3)在分配的运行资源所在的节点上启动新增数据接收通道组件。

5.3.4)启动新增数据接收通道的数据接收功能。

(6)回溯:一个动态分配周期结束后,判断应用程序是否结束,是则转至步骤(7),否则转至步骤(2)。

(7)结束:终止对数据接收通道动态分配功能。

为实现上述方法,本发明在每个计算节点上新增监控器,用于周期性收集数据接收通道缓存区空间的使用量信息和流式数据到达速率信息。其中,数据接收通道缓存区空间的使用量信息构成步骤(2)中所需的应用数据接收通道缓存区空间使用量集合,流式数据到达速率信息构成步骤(3)中所需的流式数据到达速率历史记录集。为实现上述方法,本发明在sparkstreaming系统中新增预测器,依据流式数据到达速率历史记录对未来流式数据到达速率变化状态进行预测(步骤(4))。为实现上述方法,本发明在sparkstreaming系统中新增执行器,用于根据预测器提供的预测结果和当前应用的数据接收能力,完成数据接收通道组件的回收与追增(步骤(5))。

附图说明

图1为本发明方法所依附的批量流式计算平台的部署图。

图2为采用本发明方法的批量流式计算平台中新增软件模块与平台既有模块间的交互关系图。

图3为本发明方法的总体流程图。

图4为未来流式数据到达速率变化状态预测流程图。

图5为数据接收通道动态分配策略流程图。

具体实施方式

下面结合附图和具体实施方式对本发明加以说明。

本发明所提出的数据接收通道动态分配方法可依附于现有sparkstreaming平台,通过修改和新增相应的功能模块实现。图1是本方法所依附的sparkstreaming平台的部署图。该平台由多个计算机服务器(平台节点)组成,服务器间通过网络连接。平台节点分为两类:包括一个管理节点(master)和多个计算节点(slave)。本发明方法所依附的sparkstreaming平台包含三类核心软件模块:资源管理模块(resourcemanager)、数据接收通道管理模块(receiversupervisor)、数据接收管理模块(receivertracker)。其中,resourcemanager负责为数据接收通道调度分配硬件资源,仅在管理节点上部署;receiversupervisor负责启动和停止数据接收通道,需要在每个启动数据接收通道的计算节点上部署。receivertracker负责管理数据的接收和数据块的构建,该模块在计算节点上部署。上述三类软件模块中,resourcemanager模块和receivertracker模块在sparkstreaming平台启动时即部署运行,receiversupervisor模块在启动数据接收通道时触发部署运行。

图2是为实施本发明方法在所依附的sparkstreaming平台中需增加的软件模块及其交互关系图。阴影模块是为实现本发明方法须在既有sparkstreaming平台中新增的软件模块,包括监控模块(monitor)、预测模块(predictor)、执行模块(allocator)。其中,monitor负责收集数据接收通道缓存区空间的使用量信息和流式数据到达速率信息,部署于管理节点上。predictor负责根据monitor模块收集汇总的信息对数据到达速率状态变化做出预测,allocator负责根据predictor模块提供的预测信息和当前应用的数据接收能力进行动态分配决策。上述两个模块可作为receivertracker模块的子模块部署于计算节点上。上述新增模块中,隶属于同一软件模块的子模块间采用共享变量和方法调用的通信方式,隶属于不同软件模子模块线程间采用远程过程调用(rpc)的网络通信方式。

下面结合图3发明内容总流程说明本发明方法的具体实施方法。在本实施方法中,基本参数设置如下:数据块生成周期tblockinterval=0.1s,批处理周期tbatchinterval=2s,应用数据接收能力的上限阈值ulimit=0.8,应用数据接收能力的下限阈值llimit=0.5。具体实施方法可分为以下步骤:

(1)初始化。sparkstreaming应用启动后,通过计算节点既有的receivertracker模块获取当前sparkstreaming应用对应的数据源编号inputstream以及应用当前分配的数据接收通道集合c,令集合c={c1,c2}。

(2)数据接收通道接收能力评估。

2.1)令当前时刻为i,依据receivertracker模块获取到的应用当前分配的数据接收通道集合c可知,应用当前分配的数据接收通道总数n=2;应用的数据接收通道缓存区空间使用量集合ei通过对应数据接收通道所在计算节点上的monitor模块周期性获取,令集合ei={15,13}(gb)。

2.2)对于每一个数据接收通道cj,cj∈c,根据发明内容2.2)中的方法计算其接收能力。其中,数据缓存区空间总量et在本发明的实验环境中选取16gb。

计算得到:

2.3)综合当前应用已分配的所有数据接收通道的接收能力,根据发明内容2.3)中的方法计算当前时刻i应用的数据接收能力。

计算得到:εi=0.094。

2.4)若εi>0.8或εi<0.5,则执行步骤(3);否则,执行步骤(6)。

(3)基于马尔可夫链模型的流式数据到达速率变化状态预测。

3.1)令当前时刻为i,通过每个数据接收通道收集并按照时间戳统计可得流式数据到达速率历史记录集r,令集合r={38000,36000,36000,38000,38000,40000,38000,38000}(records)。

3.2)根据发明内容3.2)中的方法,定义状态空间k={k1,k2,k3},其中,k1为增强状态、k2为持平状态,k3为减弱状态。

3.3)状态转移概率计算。

3.3.1)predictor模块根据发明内容3.3.1)中的方法,针对集合r计算流式数据到达速率变化状态历史记录集psi={k3,k2,k1,k2,k1,k3,k2}。

3.3.2)predictor模块根据发明内容3.3.2)中的方法,依据流式数据到达速率变化状态历史记录集psi计算状态转移判定因子,可得其余情况为0。

3.3.3)predictor模块根据发明内容3.3.3)中的方法,统计状态转移计数,可得,其余情况为0。

3.3.4)predictor模块根据发明内容3.3.4)中的方法,计算状态转移概率其余情况为0。

3.4)predictor模块根据发明内容3.4)中的方法,构建状态转移矩阵pi,可得:

3.5)predictor模块根据发明内容3.5)中的方法,计算当前时刻i的数据到达速率变化状态,可得si=k2,遍历状态转移矩阵第二行,选择其中取值最大的状态转移概率则i+1时刻的数据到达速率变化状态si+1=k1。

(4)数据接收通道动态分配决策。

4.1)allocator模块设置动态分配决策因子θ的初始值为0,根据发明内容4.1)中的方法判断,若εi>0.8且si+1=k3,转至步骤4.2);若εi<0.5且si+1=k1,转至步骤4.3);其余情况转至步骤(6)。

4.2)allocator模块设置θ←-1。

4.3)allocator模块设置θ←1。

(5)数据接收通道组件回收与追增。

5.1)allocator模块根据发明内容5.1)中的方法判断,若θ=-1,则转至步骤5.2);若θ=1,则转至步骤5.3)。

5.2)数据接收通道组件回收。

5.2.1)allocator模块在sparkstreaming应用当前分配的数据接收通道集合c中随机选取一个数据接收通道cj。

5.2.2)receivertracker模块撤销该数据接收通道的注册信息,并将该接收通道从应用当前分配的数据接收通道集合c中删除。

5.2.3)receiversupervisor模块停止该数据接收通道的数据接收功能。

5.3)数据接收通道组件追增。

5.3.1)allocator模块将新追增的数据接收通道对应的数据源编号设置为inputstream,并将该数据接收通道加入应用当前分配的数据接收通道集合c中,可得c={c1,c2,c3}。

5.3.2)allocator模块向sparkstreaming既有的资源管理器申请数据接收通道运行资源,用于新增数据接收通道的启动。

5.3.3)receivertracker模块启动新增数据接收通道。

5.3.4)receiversupervisor模块启动新增数据接收通道的数据接收功能。

(6)回溯:一个动态分配周期结束后,判断应用程序是否结束,是则转至步骤(7),否则转至步骤(2)。

(7)结束:终止对数据接收通道动态分配功能。

根据本发明所提出的数据接收通道动态分配方法,发明人进行了相关的性能测试。测试结果表明,本发明方法可适用于典型的流式应用负载。采用本方法的批量流式计算平台,如sparkstreaming,可较好地提升平台的处理效率和资源利用率。

性能测试将依据既有的sparkstreaming2.1.0版本平台与本发明方案实现的具有数据接收通道动态分配功能的sparkstreaming平台进行性能比较。性能测试选取数据吞吐率、有效计算时间比例作为性能指标,以体现本发明提出的方法在提升sparkstreaming平台处理效率和计算资源利用率方面的优势。另外,本次测试也对本发明方法对sparkstreaming平台的性能入侵进行了测试。其中,数据吞吐率表示测试负载从提交到运行结束的时间区间内,每单位时间(秒)处理完成的数据条数,用于衡量应用的数据处理效率;有效计算时间比例表示计算节点在每个批处理间隔中实际用来计算的时间,该指标用来衡量计算资源的利用率。性能测试运行于由7个计算节点构成的集群系统,计算节点的硬件配置包括:intel(r)xeon(r)cpue5-26600@2.20ghz的cpu、16gbddr3ram、1tbsata硬盘,节点间采用千兆以太网互连,操作系统为centos6.5。实验选用hibench作为负载发生器,选取其中的典型流式应用wordcount进行测试。实验相关参数设置:batchinterval=2s,blockinterval=0.1s。

针对数据接收通道动态分配的测试:

本次测试选取的数据到达强度从弱到强共分为5组,如表1所示。

表1数据到达强度分组

表2数据吞吐率测试结果

表3有效计算时间比例测试结果

表2给出了在不同的数据到达强度下,原sparkstreaming平台和采用数据接收通道动态分配方法的sparkstreaming平台的数据吞吐率测试结果。由实验结果可知,与既有静态分配方法相比,在5组数据到达强度下,采用数据接收通道动态分配方法均获得较高的数据吞吐率,平均提升比例为25%,且随着数据到达强度的增强,数据吞吐率的提升比例不断增大。在数据到达强度为160000record/s时,吞吐率性能最大提升了44.7%。表3给出了在不同的数据到达强度下,原sparkstreaming平台和采用数据接收通道动态分配方法的sparkstreaming平台的有效计算时间比例测试结果。由实验结果可知,采用静态分配方法获得的有效计算时间比例并未随着数据到达强度的增强而增加,保持在30%。然而采用动态分配方法,随着数据到达强度的增大,采用动态分配方法可获得的有效计算时间比例平均提升了29%,且随着数据到达强度的增强,提升比例不断增大。当数据到达强度为160000record/s时,有效计算时间比例最大提升了45%。分析其中原因可知,批次数据规模是决定sparkstreaming应用数据处理效率的关键。在批处理间隔确定的情况下,有效计算时间比例是批次数据规模的直观体现。采用静态分配方法,数据接收通道的缓存规模固定,可形成的批次数据规模受限于缓存规模。而通过采取动态分配方法,随着数据到达强度的增大,数据接收通道的数量自适应地增加,可提供更多的数据缓存空间存储外部流式数据,从而在批处理间隔内可形成更大的批次数据规模。与既有sparkstreaming平台相比,采用本发明方法的sparkstreaming平台通过对应用数据接收能力的监控和对未来数据到达速率变化的预测实现了数据接收通道动态分配。在相同的数据到达强度下,动态分配方法可形成更大规模的批次数据,在批处理间隔内充分利用计算资源进行数据处理,减少了数据批次的形成,因此获得了更高的数据吞吐率。同时,随着数据到达强度的增强,静态方法导致的数据接收停止日益恶化。因此,采用自适应的动态分配方法可获得更大的的性能收益提升比例。

表4动态分配方法对cpu资源利用率的影响

表5动态分配方法对内存资源利用率的影响

由表4和表5可知,在部署了数据接收通道动态分配系统后,计算节点的cpu利用率最大增加了1.6%,平均增加了0.98%;内存利用率最大增加了3.1%,平均增加了2.1%。可见,本文所提出的数据接收通道动态分配方法对sparkstreaming平台产生的性能开销较小。

最后应说明的是:以上示例仅用以说明本发明而并非限制本发明所描述的技术,而一切不脱离发明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1