用于数据处理的资源分配方法及装置与流程

文档序号:14898354发布日期:2018-07-10 14:24阅读:213来源:国知局

本发明涉及通讯领域,具体而言,涉及用于数据处理的资源分配方法及装置。



背景技术:

当今大数据时代,海量的数据给运营分析系统的实时性带来了新的挑战。目前运营分析系统正在逐步地向分布式大数据云计算平台演进,为了实现实时在线处理及快速响应的目标,Storm等分布式流处理系统被广泛应用于大数据云计算平台。这些分布式流处理系统能够对实时产生的大批增量的数据流提供实时快速的分析处理,具有可扩展性、低延迟、高可靠性和高容错性等优点。但是,诸如Storm之类的分布式流处理系统对工作者节点分配处理资源、内存等资源方面还存在着全部对等及不能动态调整等一些缺陷,经常导致性能不佳而难以满足生产系统的需求。



技术实现要素:

本发明实施例提供了用于数据处理的资源分配方法及装置,以至少解决相关技术中为每个工作者节点均分配相同的资源所导致的问题。

根据本发明实施例的一个方面,提供了一种用于数据处理的资源分配方法,包括:接收数据处理流程的拓扑图;根据拓扑图确定工作者节点的权重值,其中,工作者节点用于执行任务以完成数据处理流程;以及将工作者节点的权重值发送至资源分配节点。

根据本发明实施例的另一个方面,还提供了用于数据处理的资源分配装置,包括:接收单元,用于接收数据处理流程的拓扑图;确定单元,用于根据拓扑图确定工作者节点的权重值,其中,工作者节点用于执行任务以完成数据处理流程;以及发送单元,用于将工作者节点的权重值发送至资源分配节点。

根据本发明实施例的用于数据处理的资源分配方法及装置能够提高资源利用率。

附图说明

通过阅读以下参照附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显,其中,相同或相似的附图标记表示相同或相似的特征。

图1是根据相关技术的Storm集群的示意图;

图2是根据相关技术的拓扑图的示意图;

图3是根据本发明实施例的用于数据处理的资源分配方法的流程图;

图4是根据本发明实施例的Storm架构的示意图;

图5是根据本发明实施例的Storm流处理的资源动态分配方法的流程图;以及

图6是根据本发明实施例的用于数据处理的资源分配装置的结构框图

具体实施方式

下面将详细描述本发明的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本发明的全面理解。但是,对于本领域技术人员来说很明显的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明的更好的理解。本发明决不限于下面所提出的任何具体配置和算法,而是在不脱离本发明的精神的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本发明造成不必要的模糊。

作为大数据平台的核心软件之一,Storm是一种分布式的流式大数据处理系统,可以提供接近实时的复杂的流式计算功能,能够弥补Hadoop和Spark等批处理系统在分析数据时的实时性方面的不足,被广泛应用于精准营销、在线个性化推荐、持续云计算、在线机器学习和云化ETL等众多领域,能够实现大数据增值变现的目的。

图1是根据相关技术的Storm集群的示意图,如图1所示,该Storm集群主要是由一个主节点(Nimbus)和若干个工作服务监管节点(Supervisor)组成,主节点和工作服务监管节点二者之间通过Zookeeper协调工作。主节点负责在集群里面分发代码、分配任务和监控状态。工作服务监管节点监听分配给它哪台机器工作,根据任务需要启动和关闭工作者节点(Worker),每个工作者节点可以产生多个线程执行器Executor执行任务(Task)。

另外,由于为每个工作者节点分配的资源都是相同,因此不存在资源调整的问题。但是在实际运行中,每个工作者节点承担的运算量会发生变化,固定的资源分配会带来资源浪费和运行效率等方面的问题。

图2是根据相关技术的拓扑图(Topology)的示意图,如图2所示,用户通过提交拓扑图,将整个流式数据处理的逻辑关系连接起来,实现复杂的业务处理。其中拓扑图是一个有向无环图DAG(Directed Acyclic Graph),它的最小消息单位是一个元组(Tuple),发出Tuple消息源的组件被称为数据源组件Spout,使用Tuple消息进行处理的组件被称为数据处理组件Bolt。在该拓扑图中,针对每个节点Spout和Bolt分配的CPU、内存等资源是对等的。

在现有的Storm流处理中,为每个工作者节点分配资源是对等的,而事实上每个节点承载的数据量不同且计算复杂度各异,所以会出现有的节点资源过多而产生浪费但有的节点资源不足而运行失败的情况。

在本实施例中提供了一种用于数据处理的资源分配方法,图3是根据本发明实施例的用于数据处理的资源分配方法的流程图,如图3所示,该流程包括如下步骤。

在步骤S302处,接收数据处理流程的拓扑图。

在该步骤中,拓扑图可以是根据业务逻辑构建的。

在步骤S304处,根据拓扑图确定工作者节点的权重值。

在该步骤中,可以根据拓扑图中表达的业务逻辑来确定相应工作者节点的权重值,工作者节点用于执行任务以完成数据处理流程。

在步骤S306处,将工作者节点的权重值发送至资源分配节点。

通过上述步骤,确定了相应工作者节点的权重值。

在一个实施例中,资源分配节点可以根据工作者节点的权重值向工作者节点分配资源。

由此,在引入权重值之后,可以为不同权重值的工作者节点分配不同的资源。因而解决了相关技术中为每个工作者节点均分配相同的资源所导致的问题,提高了运算执行的效率。

在一个可选的实施方式中,可以接收工作者节点的资源使用情况,并且根据资源使用情况确定是否对工作者节点的资源进行调整。通过该可选实施方式可以动态的调整为工作者节点所分配的资源,从而做到了资源的优化,进一步提高了执行效率。

可以采用多种方式来调整资源。在一个可选的实施例中,可以设置两个阈值:第一阈值(例如,α)和第二阈值(例如,β),在工作者节点的剩余资源小于第一阈值的情况下,确定增加该工作者节点的资源;在工作者节点的剩余资源大于第二阈值的情况下,确定回收该工作者节点的资源。第一阈值与第二阈值可以相同,也可以不相同。

作为另一个可选的实施方式,第一阈值与第二阈值不同,当工作者节点的剩余资源处于第一阈值和第二阈值之间时,可以不对资源的分配进行调整。通过合理地设置第一阈值和第二阈值,可以使资源分配的调整更加合理。

为了进一步的节约资源,在一个可选的实施方式中,可以在某个工作者节点的任务执行完毕之后,释放该工作者节点的资源。这样可以将释放的资源分配给仍然在执行任务的其他工作者节点。

在计算权重值的时候,可以参考用来对每个工作者节点进行评估的信息,例如,根据拓扑图确定工作者节点的如下信息中的至少一项信息:工作者节点的承载数据量、工作者节点的计算复杂度、工作者节点的前驱后续依赖关系。然后可以确定工作者节点的上述至少一项信息的权重值;并且根据上述至少一项信息的权重值来确定该工作者节点的权重值。

下面以几个权重值计算为例进行说明。

可以根据如下公式确定承载数据量对应的权重值:其中,di表示第i个工作者节点承载的数据量,n表示工作者节点的总数量,工作者节点所承载的数据量分别为{d1,d2,d3,...,dn}。

可以根据如下公式确定计算复杂度对应的权重值:

其中,ci表示第i个工作者节点的计算复杂度,n表示工作者节点的总数量,工作者节点的计算复杂度分别为{c1,c2,c3,...,cn}。

可以根据如下公式获取前驱后续依赖关系对应的权重值:

其中,表示第i个工作者节点中拓扑子图数据流入边,表示数据流出边,n表示工作者节点的总数量。

在得到以上多种权重值中的一种或多种之后,可以对每个信息对应的权重值加权求和得到该工作者节点对应的权重值。

下面以Storm为例结合一个可选实施例进行说明。

本实施例中提出了一种Storm流处理的资源分配方法,即Storm在处理流式数据时,根据用户提交的业务数据处理逻辑拓扑图,分析每个工作者节点承载的数据量、计算复杂度以及前驱后续依赖关系等,进而对每个工作者节点加权,构建非对称加权拓扑逻辑关系图,再按照此非对称加权拓扑逻辑关系图对每个工作者节点分配不同合适量的资源(包括CPU、内存等资源但不限于这些资源);同时为了适应处理数据过程中对资源需求变化的情况,工作者节点运行中持续反馈当前资源情况,根据反馈的情况和配置的资源阈值,调整非对称加权拓扑逻辑关系图,实时按需给工作者节点动态分配和回收资源。

在上述基础上构建资源动态分配总控模块和子模块的分布式资源控制架构,图4是根据本发明实施例的Storm架构的示意图.

如图4所示,由总控模块负责整体协调控制资源的动态分配策略以及管理子模块,由子模块负责具体执行资源动态分配和回收动作,从而大幅度提高Storm流处理的性能。

图5是根据本发明实施例的Storm流处理的资源动态分配方法的流程图.如图5所示,Storm流处理的资源动态分配方法包括如下步骤。

在步骤1,用户根据业务逻辑定义数据处理流程的拓扑图,通过客户端提交拓扑图请求到主节点。

在步骤2,主节点接受请求后对拓扑图分片,资源动态分配总控模块(MasterResource)根据拓扑图分析每个工作者节点承载的数据量、计算复杂度以及前驱后续依赖关系等计算并赋予每个工作者节点不同的权值,构建非对称加权拓扑逻辑关系图。其中,工作者节点权重越大表明越关键且需要资源越多,需要重点保障并分配较多资源。假设当前本次要处理的数据总量为D,每个工作者节点承载的数据量分别为{d1,d2,d3,...,dn}(n表示工作者节点总数量),那么按负载数据量计算任意工作者节点权值如公式(1-1)所示:

其中,di表示第i个工作者负载的数据量。本次聚合、求和、连接、过滤、分组等一系列计算的复杂度为C,每个工作者节点的计算复杂度分别为{c1,c2,c3,...,cn},则计算第i个工作者的计算复杂度的权重为公式(1-2):

将整个拓扑图看作有向无环图,有向边表示数据流入流出和依赖关系,那么计算第i个工作者的前驱后续依赖关系的权重如公式(1-3)所示:

其中,表示第i个工作者中拓扑子图数据流入边,表示数据流出边。考虑每个工作者节点承载的数据量、计算复杂度以及前驱后续依赖关系三个方面计算综合权值如公式(1-4)所示:

其中,γ、λ和μ为调节因子可以按照实际情况动态调整参数,并且γ+λ+μ=1。

在步骤3,主节点将任务信息和工作者节点权值信息等通过外部的分布式协调服务组件Zookeeper分发给工作服务监控节点。

在步骤4,工作服务监控节点收到任务信息和工作者节点权值信息后,资源动态分配子模块(SubResource)给工作者节点按照不同的权值wi分配不同大小量的CPU、内存、网络IO等资源,工作服务监控节点启动工作者节点进程,每个工作者节点产生多个线程Executor执行任务。

在步骤5,在运行任务过程中,工作服务监控节点中的资源动态分配子模块实时收集工作者节点资源使用情况并反馈给主节点中的资源动态分配总控模块,当一个工作者节点资源剩余量小于阈值α,即资源不足时,资源动态分配总控模块发送指令给资源动态分配子模块以增加分配给该工作者模块的资源量;相反的,当在一段时间内一个工作者节点资源剩余量大于阈值β,即资源过量时,资源动态分配总控模块发送指令给资源动态分配子模块以适当回收该工作者节点的资源量。

在步骤6,当任务执行完成后,工作服务监控节点中的资源动态分配子模块收回并释放对应的工作者节点所占用的资源,工作者节点处于空闲状态等待新任务,同时,资源动态分配子模块将资源信息情况反馈给主节点中的资源动态分配总控模块,主节点输出最终运算处理结果,整个流程结束。

本实施例中提出一种Storm流处理的资源动态分配方法,即Storm在处理流式数据时,根据用户提交的业务数据处理逻辑拓扑图,分析每个工作者节点承载的数据量、计算复杂度以及前驱后续依赖关系等,进而对每个工作者节点加权,构建非对称加权拓扑逻辑关系图,再按照此非对称加权拓扑逻辑关系图对每个工作者节点分配不同合适量的资源,在运行任务过程中,工作者节点运行中持续反馈当前资源情况,根据反馈的情况和配置的资源阈值,调整非对称加权拓扑逻辑关系图,实时按需给工作者节点动态分配和回收资源。

以本实施例的Storm流处理的资源动态分配方法为核心逻辑,构建资源动态分配总控模块和子模块的分布式资源控制架构,由总控模块负责整体协调控制资源的动态分配策略以及管理子模块,由子模块负责具体执行资源动态分配和回收动作,总控模块和子模块二者通过交互给工作者节点实时动态地分配和回收资源。

本实施例弥补了现有Storm流处理技术在对工作者节点分配CPU、内存等资源方面存在着全部对等及不能动态调整资源方面的不足,提出了一种Storm流处理的资源动态分配方法,即Storm在处理流式数据时,根据用户提交的业务数据处理逻辑拓扑图,分析每个工作者节点承载的数据量、计算复杂度以及前驱后续依赖关系等,进而对每个工作者节点加权,构建非对称加权拓扑逻辑关系图,再按照此非对称加权拓扑逻辑关系图对每个工作者节点分配不同合适量的资源(包括CPU、内存等资源但不限于这些资源);同时为了适应处理数据过程中对资源需求变化的情况,工作者节点运行中持续反馈当前资源情况,根据反馈的情况和配置的资源阈值,调整非对称加权拓扑逻辑关系图,实时按需给工作者节点动态分配和回收资源;在上述基础上构建资源动态分配总控模块和子模块的分布式资源控制架构,由总控模块负责整体协调控制资源的动态分配策略以及管理子模块,由子模块负责具体执行资源动态分配和回收动作,大幅度提高Storm流处理的性能。本方案在实际应用中具有较高的实用性。

在上述实施例中,按照用户提交的业务数据处理逻辑拓扑图,分析每个工作者节点承载的数据量、计算复杂度以及前驱后续依赖关系等,进而对每个工作者节点加权,构建非对称加权拓扑逻辑关系图,再按照此非对称加权拓扑逻辑关系图对每个工作者节点分配不同合适量的资源。工作者节点运行中持续反馈当前资源情况,根据反馈的情况和配置的资源阈值,调整非对称加权拓扑逻辑关系图,实时按需给工作者节点动态分配和回收资源。构建资源动态分配总控模块和子模块的分布式资源控制架构,由总控模块负责整体协调控制资源的动态分配策略以及管理子模块,由子模块负责具体执行资源动态分配和回收动作。总控模块和子模块二者通过交互给工作者节点实时动态地分配和回收资源。

在本实施例中,还提供了一种用于数据处理的资源分配装置。该装置例如可以被实现为上述实施例中的主控模块。

图6是根据本发明实施例的用于数据处理的资源分配装置的结构框图,如图6所示,该装置可以包括:接收单元62,用于接收数据处理流程的拓扑图;确定单元64,用于根据拓扑图确定工作者节点的权重值,其中,工作者节点用于执行任务以完成所述处理流程;以及发送单元66,用于将工作者节点的权重值发送至资源分配节点。

作为一个可选的实施方式,资源分配节点可以根据工作者节点的权重值向所述工作者节点分配资源。

作为一个可选的实施方式,该装置还可以包括调整单元68。接收单元62可以接收工作者节点的资源使用情况,调整单元68可以根据资源使用情况确定是否对工作者节点的资源进行调整。

作为一个可选的实施方式,如果工作者节点的剩余资源小于第一阈值,调整单元68可以确定增加该工作者节点的资源;以及如果工作者节点的剩余资源大于第二阈值,调整单元68可以确定回收该工作者节点的资源。

作为一个可选的实施方式,确定单元64可以实现以下操作:根据拓扑图确定工作者节点的承载数据量、计算复杂度、前驱后续依赖关系中的至少一项信息;确定工作者节点的所述至少一项信息的权重值;并且根据所述至少一项信息的权重值确定工作者节点的权重值。

作为一个可选的实施方式,确定单元64可以对所述至少一项信息的权重值加权求和得到工作者节点的权重值。

上述装置中的单元还可以实现上述可选实施方式中的其他方法步骤,在此不再赘述。

本发明的实施例还提供了一种存储介质。本实施例中的存储介质保存有计算机程序或软件程序,该计算机程序或软件程序用于执行:接收数据处理流程的拓扑图;根据拓扑图确定工作者节点的权重值,其中,工作者节点用于执行任务以完成数据处理流程;以及将工作者节点的权重值发送至资源分配节点。

作为一个可选的实施方式,该计算机程序或软件程序用于执行:接收工作者节点的资源使用情况;以及根据资源使用情况确定是否对工作者节点的资源进行调整。

作为一个可选的实施方式,该计算机程序或软件程序用于执行:如果工作者节点的剩余资源小于第一阈值,则确定增加该工作者节点的资源;以及如果工作者节点的剩余资源大于第二阈值,则确定回收该工作者节点的资源。

作为一个可选的实施方式,该计算机程序或软件程序用于执行:根据拓扑图确定工作者节点的承载数据量、计算复杂度、前驱后续依赖关系中的至少一项信息:确定工作者节点的所述至少一项信息的权重值;并且根据至少一项信息的权重值确定工作者节点的权重值。

作为一个可选的实施方式,该计算机程序或软件程序用于执行:对至少一项信息的权重值加权求和得到所述工作者节点的权重值。

作为一个可选的实施方式,该计算机程序或软件程序用于执行:根据拓扑图获取每个工作者节点对应的信息,其中,每个工作者节点对应的信息包括以下至少之一:每个工作者节点的承载数据量、每个工作者节点的计算复杂度、每个工作者节点的前驱后续依赖关系;分别获取每个工作者节点对应的每个信息的权重值;根据每个信息分别对应的权重值获取每个工作者节点的权重值。

作为一个可选的实施方式,该计算机程序或软件程序用于执行:根据如下公式获取承载数据量对应的权重值:其中,每个工作者节点承载的数据量分别为{d1,d2,d3,...,dn},n表示工作者节点总数量;和/或;根据如下公式获取计算复杂度对应的权重值:

其中,每个工作者节点的计算复杂度分别为{c1,c2,c3,...,cn};和/或,根据如下公式获取前驱后续依赖关系对应的权重值:其中,表示第i个工作者中拓扑子图数据流入边,表示数据流出边。

作为一个可选的实施方式,该计算机程序或软件程序用于执行:对每个信息对应的权重值求加权和得到该工作者节点对应的权重值。

在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

上述存储介质还可以保存上述计算机程序或软件程序执行过程中使用到的或者产生的数据。上述存储介质可以只起到保存的作用,而计算机程序或软件程序的执行可以由处理器来实现。

以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。

本发明可以以其他的具体形式实现,而不脱离其精神和本质特征。例如,特定实施例中所描述的算法可以被修改,而系统体系结构并不脱离本发明的基本精神。因此,当前的实施例在所有方面都被看作是示例性的而非限定性的,本发明的范围由所附权利要求而非上述描述定义,并且,落入权利要求的含义和等同物的范围内的全部改变从而都被包括在本发明的范围之中。

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