CN108259373B - 一种数据分配调度的方法及系统 - Google Patents

一种数据分配调度的方法及系统 Download PDF

Info

Publication number
CN108259373B
CN108259373B CN201611249531.XA CN201611249531A CN108259373B CN 108259373 B CN108259373 B CN 108259373B CN 201611249531 A CN201611249531 A CN 201611249531A CN 108259373 B CN108259373 B CN 108259373B
Authority
CN
China
Prior art keywords
bolt
spout
data
task
determining
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.)
Active
Application number
CN201611249531.XA
Other languages
English (en)
Other versions
CN108259373A (zh
Inventor
徐硕
马众
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Suzhou Software Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Mobile Communications Group Co Ltd, China Mobile Suzhou Software Technology Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201611249531.XA priority Critical patent/CN108259373B/zh
Publication of CN108259373A publication Critical patent/CN108259373A/zh
Application granted granted Critical
Publication of CN108259373B publication Critical patent/CN108259373B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/12Avoiding congestion; Recovering from congestion
    • H04L47/125Avoiding congestion; Recovering from congestion by balancing the load, e.g. traffic engineering
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1001Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/60Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
    • H04L67/61Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种数据分配调度的方法,所述方法包括:确定优先分配任务的数据喷发节点(spout)和数据处理节点(bolt)的集合,并根据所确定的spout和bolt的集合,在所述spout和bolt的集合中分别确定每个spout和每个bolt之间的数据传输代价和传输任务性质,以及与所述spout和bolt的集合中的每个spout和每个bolt对应的各网络处理器(NP);根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定数据传输代价最大且传输任务性质不同的第一spout和第一bolt;将所述第一spout和第一bolt分配到所述各NP中的第一NP。本发明还同时公开了一种数据分配调度的系统。

Description

一种数据分配调度的方法及系统
技术领域
本发明涉及数据分配调度技术,具体涉及一种数据分配调度的方法及系统。
背景技术
Storm系统是一个开源、免费的分布式实时计算系统,以其简单、可靠、高效地处理数据的特性而被广泛应用;Storm系统可以方便地在一个计算机集群中编写和扩展复杂的实时计算,同时保证每个消息都会得到实时可靠的处理。
图1是现有技术中Storm系统的结构示意图;如图1所示,Storm系统主要是由一个主节点(Master node)和工作节点(Worker node)组成,通过Zookeeper进行协调;其中,
主节点运行一个后台程序Nimbus,用于在Storm系统中的资源分配和任务调度,并且监控系统状态;
工作节点也运行一个后台程序Supervisor,用于接收分配的任务,根据需要管理(启动或关闭)Worker进程;
主节点和多个工作节点由服务器的集群即Storm集群实现;
Zookeeper,用于存放公有数据(如心跳信息、Storm系统的状态和配置信息);Nimbus、Supervisor和Worker都把心跳信息保存在Zookeeper;以使Nimbus根据Zookeeper上的心跳信息和系统状态,进行资源分配和任务调度。
Storm系统中的每个节点都是拓扑(Topology)中一个子集的实现,Topology为Storm系统中运行的一个实时应用程序,可以表征各个组件(Spout和Bolt)间的消息流(Stream)的传递形成的逻辑上的一个拓扑结构。具体如图2所示。
图2是Storm系统流的示意图;如图2所示,Storm系统中的数据以流的形式传递,流的基本单位为元组(Tuple),Storm中的流可以视为由元组组成的有向无界(在时间上无界)的序列。
在现有技术中,Storm系统中提供三种调度程序(Scheduler),分别为:事件调度器(Event Scheduler)、默认计划程序(Default Scheduler)和隔离程序(IsolationScheduler)。其中,Event Scheduler将系统中的可用资源相对均匀地分配给需要拓扑(topology)资源的网络处理器(NP,Network Processor);Default Scheduler在EvenetScheduler基础上引入资源再回收,先将不需要的资源重新收集,再通过Event Scheduler将系统中的可用资源相对均匀地分配给需要topology资源的NP;Isolation Scheduler允许用户定义topology的NP资源,storm分配的时候会优先将该topology分配给定义的NP,以保证分配该topology的NP只为该topology服务。但是,现有技术存在以下缺点:
1)未充分考虑各任务之间的数据传输代价;由于随着任务在各NP上的均匀分布,各任务之间的通信量也会对应增大,从而增加传输时延。
2)未充分考虑各任务之间的任务类型(IO密集型或者CPU密集型);很容易导致将同类型的任务分配到同一台NP上,从而造成NP负载不均衡。
3)T-Strom、R-Storm等调度算法只是对资源或者流量单方面进行考虑,并没有综合考虑任务之间的通信代价和处理机负载等多个方面。
发明内容
为解决现有存在的技术问题,本发明实施例期望提供一种数据分配调度的方法及系统,能够有效地降低各任务之间的通信开销。
本发明实施例的技术方案是这样实现的:
根据本发明实施例的一方面,提供一种数据分配调度的方法,所述方法包括:
确定优先分配任务的数据喷发节点spout和数据处理节点bolt的集合,并根据所确定的spout和bolt的集合,在所述spout和bolt的集合中分别确定每个spout和每个bolt之间的数据传输代价和传输任务性质,以及与所述spout和bolt的集合中的每个spout和每个bolt对应的各网络处理器NP;
根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定数据传输代价最大且传输任务性质不同的第一spout和第一bolt;
将所述第一spout和第一bolt分配到所述各NP中的第一NP。
上述方案中,所述将所述第一spout和第一bolt分配到所述各NP中的第一NP,包括:
获取所述各NP的负载值,并基于所述各NP的负载值对所述各NP进行排序,得到排序结果;
根据所述排序结果,确定负载值最小的第一NP,并将所述第一spout和第一bolt分配到所述第一NP。
上述方案中,在所述将所述第一spout和第一bolt分配到所述第一NP之后,所述方法还包括:
根据所述排序结果,确定除所述第一NP之外的负载值最小的第二NP;
根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定除所述第一spout和所述第一bolt之外的数据传输代价最大且传输任务性质不同的第二spout和第二bolt;
将所述第二spout和第二bolt分配到所述第二NP。
上述方案中,在所述将所述第一spout和第一bolt分配到所述第一NP或将所述第二spout和第二bolt分配到所述第二NP之后,所述方法还包括:
确定所述spout和bolt的集合中存在未分配的spout和bolt时,根据所述排序结果,确定除所述第一NP和/或所述第二NP之外的负载值最小的第三NP;
将所述未分配的spout和bolt分配到所述第三NP,直到所述spout和bolt的集合中的spout和bolt分配完毕。
根据本发明实施例的另一方面,提供一种数据分配调度的系统,所述系统包括:第一数据确定单元、第二数据确定单元和数据分配单元;其中,
所述第一数据确定单元,用于确定优先分配任务的spout和bolt的集合,
并根据所确定的spout和bolt的集合,在所述spout和bolt的集合中分别确定每个spout和每个bolt之间的数据传输代价和传输任务性质,以及与所述spout和bolt的集合中的每个spout和每个bolt对应的各网络处理器NP;
所述第二数据确定单元,用于根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定数据传输代价最大且传输任务性质不同的第一spout和第一bolt;
所述数据分配单元,用于将所述第一spout和第一bolt分配到所述各NP中的第一NP。
上述方案中,所述系统还包括:
数据获取单元和第三数据确定单元;其中,
所述数据获取单元,用于获取所述各NP的负载值,并基于所述各NP的负载值对所述各NP进行排序,得到排序结果;
所述第三数据确定单元,用于根据所述排序结果,确定负载值最小的第一NP;
所述数据分配单元,具体用于将所述第一spout和第一bolt分配到所述第一NP。
上述方案中,所述第三数据确定单元,还用于根据所述数据获取单元得到的所述排列结果,确定除所述第一NP之外的负载值最小的第二NP;
所述第二数据确定单元,还用于根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定除所述第一spout和所述第一bolt之外的数据传输代价最大且传输任务性质不同的第二spout和第二bolt;
所述数据分配单元,还用于将所述第二spout和第二bolt分配到所述第二NP。
上述方案中,所述第三数据确定单元,还用于确定所述spout和bolt的集合中存在未分配的spout和bolt时,根据所述排序结果,确定除所述第一NP和/或所述第二NP之外的负载值最小的第三NP;
所述数据分配单元,还用于将所述未分配的spout和bolt分配到所述第三NP,直到所述spout和bolt的集合中的spout和bolt分配完毕。
本发明实施例提供一种数据分配调度的方法及系统,确定优先分配任务的数据喷发节点spout和数据处理节点bolt的集合,并根据所确定的spout和bolt的集合,在所述spout和bolt的集合中分别确定每个spout和每个bolt之间的数据传输代价和传输任务性质,以及与所述spout和bolt的集合中的每个spout和每个bolt对应的各网络处理器NP;根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定数据传输代价最大且传输任务性质不同的第一spout和第一bolt;将所述第一spout和第一bolt分配到所述各NP中的第一NP。如此,通过获取各spout和bolt之间的数据传输代价和任务性质,以及与各任务相对应的各NP的负载值,采用先对优先分配的任务进行分配,再对非优先分配的任务进行分配,不仅实现了将各任务均衡地分配到各NP上,而且还效降低了各任务之间的数据传输代价。
附图说明
图1是现有技术中Storm系统的结构示意图;
图2是Storm系统流的示意图;
图3为本发明实施例中数据分配调度的方法流程示意图;
图4为本发明实施例中Topology的结构示意图;
图5为本发明实施例中提交Topology至Storm集群以部署Storm系统的一个结构示意图;
图6为本发明实施例中数据分配调度的系统结构示意图。
具体实施方式
下面结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
图3为本发明实施例中一种数据分配调度的方法流程示意图;如图3所示,所述方法包括:
步骤301,确定优先分配任务的数据喷发节点spout和数据处理节点bolt的集合,并根据所确定的spout和bolt的集合,在所述spout和bolt的集合中分别确定每个spout和每个bolt之间的数据传输代价和传输任务性质,以及与所述spout和bolt的集合中的每个spout和每个bolt对应的各网络处理器NP。
这里,本发明实施例的数据分配调度的方法主要应用在Storm系统,在所述Storm系统中,客户端通过所述Storm系统的后台程序Nimbus提交Topology。所述Topology具体为可执行文件,所述Topology由Bolt和Spout组成,其中,所述spout是创建topology的消息生产者;所述bolt是创建topology的数据执行者。具体地,spout会从外部数据源中读取数据,然后转换为topology内部的源数据。而所述bolt则是接收所述spout转换的所述源数据,并对所述源数据执行相应的操作。
在本发明实施例中,所述Nimbus接收到所述Topology文件后,首先将所述Topology中的任务分成若干个子任务,并根据各子任务的特征在所述Storm系统的配置文件中编辑与各子任务特征对应的配置信息,然后,所述Nimbus通过代码在所述配置文件中获取各子任务的另一种标记语言(YAML,Yet Another Markup Language)文件,并对所述YAML文件进行解析,得到各子任务相对应的spout和bolt的任务值。这里,所述各子任务相对应的spout和bolt的任务值包括:worker数目(用“W”表示),spout并发度(spout数目)、blot并发度(blot数目),supervisor个数(NP个数),每个spout和bolt之间的传输代价,优先分配的任务优先分配到哪个NP,每个spout和bolt的任务性质等。然后将所述各子任务的任务值生成任务矩阵后,根据所述任务矩阵确定出优先分配的任务,以及各spout和各bolt之间的数据传输代价和任务性质。
在本发明实施例中,具体通过以下公式计算每个spout和bolt之间的传输代价:
Cm*m={ci,j|1≤i≤m&1≤j≤m&ci,j为ti和tj之间的传输时延}
其中,Cm*m是一个二维数组,表示spout和bolt之间的数据传输代价,m、i和j均为泛指,例如,m个任务、任务i、任务j;
在本发明实施例中,具体通过以下公式计算将优先分配的任务优先分配到哪个NP:
Figure BDA0001197774720000071
其中,ti(1≤i≤m)表示任务i大于等于1且小于等于任务m,且i和m均为正整数,pj(1≤j≤n)表示网络处理器j大于等于1且小于等于网络处理器n,且j和n均为正整数。
在本发明实施例中,具体通过以下公式确定每个spout和bolt的任务性质:
Figure BDA0001197774720000072
这里,e表示任务类型,当任务ti和任务tj输出为0时,表示任务类型冲突,当任务ti和任务tj输出为1时,表示任务类型不冲突。
步骤302,根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定数据传输代价最大且传输任务性质不同的第一spout和第一bolt。
这里,在所述Storm系统中,Nimbus与Zookeeper交互,获取工作节点的心跳信息,并通过Zookeeper向工作节点中Supervisor分派任务;具体地,当所述Storm系统中的主节点获取到所述优先分配的任务后,首先Nimbus与Zookeeper交互,获取工作节点的心跳信息,根据所述心跳信息确定优先分配的任务优先分配给哪些NP;然后将优先分配的NP汇总成一个NP集合,然后依次扫描优先分配的NP集合,任选一个将需要优先分配的spout和bolt加入到该NP集合的任务分配列表中,然后依次扫描所述心跳信息中各spout和bolt,根据各spout和bolt之间的数据传输代价和任务性质,确定出数据传输代价最大且任务性质不同的第一spout和第一bolt。
步骤303,将所述第一spout和第一bolt分配到所述各NP中的第一NP。
这里,为了减小各spout和bolt之间的数据传输时延,Nimbus通过Zookeeper将所述第一spout和第一bolt分配到所述NP中的Supervisor,然后由所述NP的后台程序Supervisor根据具体的任务信息构建一个或多个Worker进程。具体地,每个worker是一个进程,在每个worker进程里包含有一个或多个executor线程,并且每个executor线程会处理一个或多个task任务,这里一个task任务就是一个节点类的实例对象,由Supervisor启动Worker中的线程来执行任务;Worker还向Zookeeper发送心跳信息。
在本发明实施例中,所述将所述第一spout和第一bolt分配到所述各NP中的第一NP,包括:
获取所述各NP的负载值,并基于所述各NP的负载值对所述各NP进行排序,得到排序结果;
根据所述排序结果,确定负载值最小的第一NP,并将所述第一spout和第一bolt分配到所述第一NP。
这里,Nimbus通过supervisor的心跳机制将各个NP的负载值同步到zookeeper上,Nimbus在分配任务前去zookeeper上获取每个NP上的负载值,构建一个小顶堆,其中,堆顶为负载值最小的NP,每次分配一个任务,所述Nimbus会根据NP的负载情况进行重新排序。
在本发明实施例中,具体建立堆的公式为:for k=1 to n;S{sk=pi,k,pi,k=0};其中,S表示优先分配的任务集合,Pi为网络处理器i的现有负载,堆顶为负载最轻的网络处理器k。通过将数据传输代价最大且任务性质不同的第一spout和第一bolt分配到负载值最小的第一NP中,可以很大程度上减小任务之间的传输时延。然后再根据所述排序结果,确定除所述第一NP之外的负载值最小的第二NP;根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定除所述第一spout和所述第一bolt之外的数据传输代价最大且传输任务性质不同的第二spout和第二bolt;并将所述第二spout和第二bolt分配到所述第二NP。如此,采用这样的方式当所述spout和bolt的集合中所有的spout和bolt都分配完毕后,进行非优先分配的任务的分配,对于非优先分配的任务的分配可以采用随机选取NP的方式进行任务分配,也可以采用与优先分配的任务相同的方法,即选取各spout和bolt中数据传输代价最大,且任务性质不冲突的加入负载最小的NP上进行任务处理。
在本发明实施例中,在所述将所述第一spout和第一bolt分配到所述第一NP或将所述第二spout和第二bolt分配到所述第二NP之后,所述方法还包括:
确定所述spout和bolt的集合中存在未分配的spout和bolt时,根据所述排序结果,确定除所述第一NP和/或所述第二NP之外的负载值最小的第三NP;
将所述未分配的spout和bolt分配到所述第三NP,直到所述spout和bolt的集合中的spout和bolt分配完毕。
这里,如果采用将各spout和bolt中数据传输代价最大,且任务性质不冲突的加入负载最小的NP上进行任务处理的方式,还有未分配的任务,则根据当前NP的负载,选择比NP集合中各NP的负载还小的NP加入到所述NP集合的分配队列里,选择加入所述NP集合中的最小负载的NP来承载未分配的任务。
图4为Topology的结构示意图;如图4所示,Topology可以视为由Bolt和Spout组成的计算拓扑,Bolt和Spout通过Worker进程中的线程运行,线程也可以称为任务(Task);Spout为Storm系统中流的源头,用于从外部数据源(如消息队列或数据库)获取流并发送至Storm;Bolt为Storm系统中的计算单元,其可以只传输流,也可以根据自身的消息处理逻辑处理来自上游(Bolt或Spout)的流,进行过滤,聚合,查询等操作,并根据处理逻辑向下游的Bolt发送处理后的流或将处理后得到的结果入库存储。
Topology中每一个计算组件(Spout和Bolt)都有一个并行执行度,在创建Topology时可以进行指定,Zookeeper会在集群内分配对应并行度个数的线程(也即Task)来同时运行组件;如图4所示,Topology中使用流(也即消息流)分组(Streaming Grouping)来指定组件之间的流的发送,即Bolt/上游Spout发送(也可以称为发射)流的目标下游Bolt、以及目标下游Blot中用于处理流的目标Task;在如图4的示出的流分组示意图中,Spout将流发送至下游的Bolt a和Bolt b中Task处理,Bolt b将处理后的结果发送至Boltc中的Task。
图5为提交Topology至Storm集群以部署Storm系统的结构示意图;如图5所示,客户端通过thrift调用主节点中的Nimbus接口触发Topology提交操作,所述Nimbus接收到所述Topology后,进行任务分配,并将相关信息同步到Zookeeper,Supervisor会定期向获取Zookeeper获取任务分配信息,如果Zookeeper中的Topology代码缺失,则会从Nimbus下载Topology代码,并将任务分配信息同步到worker进程,具体地,一个worker就是一个进程,在每个worker进程里包含有一个或多个executor线程,并且每个executor线程会处理一个或多个task任务,这里一个task任务就是一个节点类的实例对象,由Supervisor启动Worker中的线程来执行任务;Worker还向Zookeeper发送心跳信息。等待所有worker和其它机器通讯的网络连接(connections)启动完毕后,此storm-cluster即进入工作状态。除非显示调用kill topology,否则spout、bolt等组件会一直运行。
图6为本发明实施例中数据分配调度的系统结构示意图,如图6所示,所述系统包括:第一数据确定单元601、第二数据确定单元602和数据分配单元603;其中,
所述第一数据确定单元601,用于确定优先分配任务的spout和bolt的集合,
并根据所确定的spout和bolt的集合,在所述spout和bolt的集合中分别确定每个spout和每个bolt之间的数据传输代价和传输任务性质,以及与所述spout和bolt的集合中的每个spout和每个bolt对应的各网络处理器NP;
所述第二数据确定单元602,用于根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定数据传输代价最大且传输任务性质不同的第一spout和第一bolt;
所述数据分配单元603,用于将所述第一spout和第一bolt分配到所述各NP中的第一NP。
这里,所述数据分配调度系统具体可以为Storm系统,具体在所述Storm系统中,客户端通过所述Storm系统的后台程序Nimbus提交Topology。所述Topology具体为可执行文件,所述Topology由Bolt和Spout组成,其中,所述spout是创建topology的消息生产者;所述bolt是创建topology的数据执行者。具体地,spout会从外部数据源中读取数据,然后转换为topology内部的源数据。而所述bolt则是接收所述spout转换的所述源数据,并对所述源数据进行相应地执行操作。
在本发明实施例中,所述Nimbus接收到所述Topology文件后,首先由所述第一数据确定单元601将所述Topology中的任务分成若干个子任务,并根据各子任务的特征在所述Storm系统的配置文件中编辑与各子任务特征对应的配置信息,然后所述第一数据确定单元601通过代码在所述配置文件中获取各子任务的另一种标记语言(YAML)文件,并对所述YAML文件进行解析,得到各子任务相对应的spout和bolt的任务值。这里,所述各子任务相对应的spout和bolt的任务值包括:worker数目(用“W”表示),spout并发度(spout数目)、blot并发度(blot数目),supervisor个数(NP个数),每个spout和bolt之间的传输代价,优先分配的任务优先分配到哪个NP,每个spout和bolt的任务性质等。然后将所述各子任务的任务值生成任务矩阵后,根据所述任务矩阵确定出优先分配的任务,以及各spout和各bolt之间的数据传输代价和任务性质。
在本发明实施例中,具体通过以下公式计算每个spout和bolt之间的传输代价:
Cm*m={ci,j|1≤i≤m&1≤j≤m&ci,j为ti和tj之间的传输时延}
其中,Cm*m是一个二维数组,表示spout和bolt之间的数据传输代价,m、i和j是泛指,例如,m个任务、任务i、任务j;
在本发明实施例中,具体通过以下公式计算将优先分配的任务优先分配到哪个NP:
Figure BDA0001197774720000111
其中,ti(1≤i≤m)表示任务i大于等于1且小于等于任务m,且i和m均为正整数,pj(1≤j≤n)表示网络处理器j大于等于1且小于等于网络处理器n,且j和n均为正整数。
在本发明实施例中,具体通过以下公式确定每个spout和bolt的任务性质:
Figure BDA0001197774720000121
这里,e表示任务类型,当任务ti和任务tj输出为0时,表示任务类型冲突,当任务ti和任务tj输出为1时,表示任务类型不冲突。
在所述Storm系统中,Nimbus与Zookeeper交互,获取工作节点的心跳信息,并通过Zookeeper向NP中Supervisor分派任务;具体地,当所述第一数据确定单元601获取到所述优先分配的任务后,首先与Zookeeper交互,获取工作节点的心跳信息,然后根据所述心跳信息确定优先分配的任务优先分配给哪些NP;并将优先分配NP汇总成一个NP集合,然后依次扫描优先分配的NP集合,任选一个NP,并将需要优先分配的spout和bolt加入到该NP集合的任务分配列表中,然后由所述第二数据确定单元602依次扫描所述心跳信息中各spout和bolt,根据各spout和bolt之间的数据传输代价和任务性质,确定出数据传输代价最大且任务性质不同的第一spout和第一bolt。但为了减小各spout和bolt之间的数据传输时延,由所述数据分配单元603通过Zookeeper将所述第一spout和第一bolt分配到所述NP中的Supervisor,然后由所述NP的后台程序Supervisor根据具体的任务信息构建一个或多个Worker进程。具体地,每个worker是一个进程,在每个worker进程里包含有一个或多个executor线程,并且每个executor线程会处理一个或多个task任务,这里一个task任务就是一个节点类的实例对象,由Supervisor启动Worker中的线程来执行任务;Worker还向Zookeeper发送心跳信息。
在本发明实施例中,所述系统还包括数据获取单元604和第三数据确定单元605;其中,所述数据获取单元604,用于获取各NP的负载值,并基于所述各NP的负载值对所述各NP进行降序或升序排列,得到排序结果;
所述第三数据确定单元605,用于根据所述排序结果,确定负载值最小的第一NP;
所述数据分配单元603,具体用于将所述第二数据确定单元602确定的所述第一spout和第一bolt,分配到所述第三数据确定单元605确定的所述第一NP中。
这里,Nimbus通过supervisor的心跳机制将各个NP的负载值同步到zookeeper上,所述数据分配单元603在分配任务前,需要触发所述数据获取单元604去zookeeper上获取每个NP上的负载值,构建一个小顶堆,其中,堆顶为负载值最小的NP,所述数据分配单元603每次分配一个任务,所述数据获取单元604都会根据NP的负载情况进行重新排序。
在本发明实施例中,所述数据获取单元604具体建立堆的公式为:for k=1 to n;S{sk=pi,k,pi,k=0};其中,S表示优先分配的任务集合,Pi为网络处理器i的现有负载,堆顶为负载最轻的网络处理器k。所述数据分配单元603通过将数据传输代价最大且任务性质不同的第一spout和第一bolt分配到负载值最小的第一NP,可以很大程度上减小任务之间的传输时延。
在本发明实施例中,所述第三数据确定单元605,还用于根据所述数据获取单元604得到的所述排序结果,确定除所述第一NP之外的负载值最小的第二NP;
所述第二数据确定单元602,还用于根据所述第一数据确定单元601确定的所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定除所述第一spout和所述第一bolt之外的数据传输代价最大且传输任务性质不同的第二spout和第二bolt;
所述数据分配单元603,还用于将所述第二数据确定单元602确定的所述第二spout和第二bolt分配到所述第三数据确定单元605确定的所述第二NP。
通过采用这样的方式当所述spout和bolt的集合中所有spout和bolt都分配完毕后,说明当前优先分配的任务分配完成,可以进行非优先分配的任务的分配,对于非优先分配的任务的分配可以采用随机选取NP的方式进行任务分配,也可以采用分配优先分配的任务的方式进行分配,即选取各spout和bolt中数据传输代价最大,且任务性质不冲突的加入负载最小的NP上进行任务处理。
在本发明实施例中,所述第三数据确定单元605,还用于确定所述spout和bolt的集合中存在未分配的spout和bolt时,根据所述排序结果,确定除所述第一NP和/或所述第二NP之外的负载值最小的第三NP;
所述数据分配单元603,还用于将所述未分配的spout和bolt分配到所述第三NP,直到所述spout和bolt的集合中的spout和bolt分配完毕。
这里,如果所述数据分配单元603采用将数据传输代价最大,且任务性质不冲突的各spout和bolt,加入负载最小的NP上进行任务处理的方式,还有未分配的任务,则根据当前NP的负载,选择比NP集合中各NP的负载还小的NP加入到所述NP集合的分配队列里,选择加入所述NP集合中的最小负载的NP来承载未分配的任务。
图4为Topology的结构示意图;如图4所示,Topology可以视为由Bolt和Spout组成的计算拓扑,Bolt和Spout通过Worker进程中的线程运行,线程也可以称为任务(Task);Spout为Storm系统中流的源头,用于从外部数据源(如消息队列或数据库)获取流并发送至Storm;Bolt为Storm系统中的计算单元,它可以只传输流,也可以根据自身的消息处理逻辑处理来自上游(Bolt或Spout)的流,进行过滤,聚合,查询等操作,并根据处理逻辑向下游的Bolt发送处理后的流或将处理后得到的结果入库存储。
Topology中每一个计算组件(Spout和Bolt)都有一个并行执行度,在创建Topology时可以进行指定,Zookeeper会在集群内分配对应并行度个数的线程(也即Task)来同时运行组件;如图4所示,Topology中使用流(也即消息流)分组(Streaming Grouping)来指定组件之间的流的发送,即Bolt/上游Spout发送(也可以称为发射)流的目标下游Bolt、以及目标下游Blot中用于处理流的目标Task;在如图4的示出的流分组示意图中,Spout将流发送至下游的Bolt a和Bolt b中Task处理,Bolt b将处理后的结果发送至Boltc中的Task。
图5为提交Topology至Storm集群以部署Storm系统的结构示意图;如图5所示,客户端通过thrift调用主节点中的Nimbus接口触发Topology提交操作,所述Nimbus接收到所述Topology后,进行任务分配,并将相关信息同步到Zookeeper,Supervisor会定期向获取Zookeeper获取任务分配信息,如果Zookeeper中的Topology代码缺失,则会从Nimbus下载Topology代码,并将任务分配信息同步到worker进程,具体地,一个worker就是一个进程,在每个worker进程里包含有一个或多个executor线程,并且每个executor线程会处理一个或多个task任务,这里一个task任务就是一个节点类的实例对象,由Supervisor启动Worker中的线程来执行任务;Worker还向Zookeeper发送心跳信息。等待所有worker和其它机器通讯的网络连接(connections)启动完毕后,此storm-cluster即进入工作状态。除非显示调用kill topology,否则spout、bolt等组件会一直运行。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (8)

1.一种数据分配调度的方法,其特征在于,所述方法包括:
确定优先分配任务的数据喷发节点spout和数据处理节点bolt的集合,并根据所确定的spout和bolt的集合,在所述spout和bolt的集合中分别确定每个spout和每个bolt之间的数据传输代价和传输任务性质,以及与所述spout和bolt的集合中的每个spout和每个bolt对应的各网络处理器NP,其中,所述数据传输代价用于表征每个所述spout和所述bolt之间的传输时延,所述传输任务性质用于表征任务类型是否一致;
根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定数据传输代价最大且传输任务性质不同的第一spout和第一bolt;
将所述第一spout和第一bolt分配到所述各NP中的第一NP。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一spout和第一bolt分配到所述各NP中的第一NP,包括:
获取所述各NP的负载值,并基于所述各NP的负载值对所述各NP进行排序,得到排序结果;
根据所述排序结果,确定负载值最小的第一NP,并将所述第一spout和第一bolt分配到所述第一NP。
3.根据权利要求2所述的方法,其特征在于,在所述将所述第一spout和第一bolt分配到所述第一NP之后,所述方法还包括:
根据所述排序结果,确定除所述第一NP之外的负载值最小的第二NP;
根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定除所述第一spout和所述第一bolt之外的数据传输代价最大且传输任务性质不同的第二spout和第二bolt;
将所述第二spout和第二bolt分配到所述第二NP。
4.根据权利要求3所述的方法,其特征在于,在所述将所述第一spout和第一bolt分配到所述第一NP或将所述第二spout和第二bolt分配到所述第二NP之后,所述方法还包括:
确定所述spout和bolt的集合中存在未分配的spout和bolt时,根据所述排序结果,确定除所述第一NP和/或所述第二NP之外的负载值最小的第三NP;
将所述未分配的spout和bolt分配到所述第三NP,直到所述spout和bolt的集合中的spout和bolt分配完毕。
5.一种数据分配调度的系统,其特征在于,所述系统包括:第一数据确定单元、第二数据确定单元和数据分配单元;其中,
所述第一数据确定单元,用于确定优先分配任务的spout和bolt的集合,并根据所确定的spout和bolt的集合,在所述spout和bolt的集合中分别确定每个spout和每个bolt之间的数据传输代价和传输任务性质,以及与所述spout和bolt的集合中的每个spout和每个bolt对应的各网络处理器NP,其中,所述数据传输代价用于表征每个所述spout和所述bolt之间的传输时延,所述传输任务性质用于表征任务类型是否一致;
所述第二数据确定单元,用于根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定数据传输代价最大且传输任务性质不同的第一spout和第一bolt;
所述数据分配单元,用于将所述第一spout和第一bolt分配到所述各NP中的第一NP。
6.根据权利要求5所述的系统,其特征在于,所述系统还包括:
数据获取单元和第三数据确定单元;其中,
所述数据获取单元,用于获取所述各NP的负载值,并基于所述各NP的负载值对所述各NP进行排序,得到排序结果;
所述第三数据确定单元,用于根据所述排序结果,确定负载值最小的第一NP;
所述数据分配单元,具体用于将所述第一spout和第一bolt分配到所述第一NP。
7.根据权利要求6所述的系统,其特征在于,所述第三数据确定单元,还用于根据所述数据获取单元得到的所述排序结果,确定除所述第一NP之外的负载值最小的第二NP;
所述第二数据确定单元,还用于根据所述spout和bolt的集合中的每个spout和每个bolt之间的数据传输代价和传输任务性质,在所述spout和bolt的集合中确定除所述第一spout和所述第一bolt之外的数据传输代价最大且传输任务性质不同的第二spout和第二bolt;
所述数据分配单元,还用于将所述第二spout和第二bolt分配到所述第二NP。
8.根据权利要求7所述系统,其特征在于,所述第三数据确定单元,还用于确定所述spout和bolt的集合中存在未分配的spout和bolt时,根据所述排序结果,确定除所述第一NP和/或所述第二NP之外的负载值最小的第三NP;
所述数据分配单元,还用于将所述未分配的spout和bolt分配到所述第三NP,直到所述spout和bolt的集合中的spout和bolt分配完毕。
CN201611249531.XA 2016-12-29 2016-12-29 一种数据分配调度的方法及系统 Active CN108259373B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611249531.XA CN108259373B (zh) 2016-12-29 2016-12-29 一种数据分配调度的方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611249531.XA CN108259373B (zh) 2016-12-29 2016-12-29 一种数据分配调度的方法及系统

Publications (2)

Publication Number Publication Date
CN108259373A CN108259373A (zh) 2018-07-06
CN108259373B true CN108259373B (zh) 2021-11-02

Family

ID=62721751

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611249531.XA Active CN108259373B (zh) 2016-12-29 2016-12-29 一种数据分配调度的方法及系统

Country Status (1)

Country Link
CN (1) CN108259373B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110750341B (zh) * 2018-07-24 2022-08-02 深圳市优必选科技有限公司 任务调度方法、装置、系统、终端设备及存储介质
CN112202692A (zh) * 2020-09-30 2021-01-08 北京百度网讯科技有限公司 数据分发方法、装置、设备以及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468626A (zh) * 2014-09-04 2016-04-06 腾讯科技(北京)有限公司 数据处理方法及系统
CN105786626A (zh) * 2016-04-11 2016-07-20 南京邮电大学 基于K划分的Storm平台线程分配方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9081870B2 (en) * 2012-12-05 2015-07-14 Hewlett-Packard Development Company, L.P. Streaming system performance optimization

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105468626A (zh) * 2014-09-04 2016-04-06 腾讯科技(北京)有限公司 数据处理方法及系统
CN105786626A (zh) * 2016-04-11 2016-07-20 南京邮电大学 基于K划分的Storm平台线程分配方法

Also Published As

Publication number Publication date
CN108259373A (zh) 2018-07-06

Similar Documents

Publication Publication Date Title
US10031774B2 (en) Scheduling multi-phase computing jobs
US6732139B1 (en) Method to distribute programs using remote java objects
WO2016078008A1 (zh) 调度数据流任务的方法和装置
US9563474B2 (en) Methods for managing threads within an application and devices thereof
US20160371126A1 (en) Scheduling mapreduce jobs in a cluster of dynamically available servers
CN106445675B (zh) 一种b2b平台分布式应用调度与资源分配方法
CN105592110B (zh) 一种资源调度方法及装置
CN112148455B (zh) 一种任务处理方法、设备及介质
CN107515786B (zh) 资源分配方法、主装置、从装置和分布式计算系统
CN105468626B (zh) 数据处理方法及系统
CN109564528B (zh) 分布式计算中计算资源分配的系统和方法
JP2016535337A5 (zh)
CN111367630A (zh) 一种基于云计算的多用户多优先级的分布式协同处理方法
CN105354085B (zh) 一种云工作流作业调度方法
TW201929510A (zh) 支援基於數據類型將數據流分組並儲存至雲端儲存文件中的系統和電腦可執行方法
CN103761146B (zh) 一种MapReduce动态设定slots数量的方法
CN105892996A (zh) 一种批量数据处理的流水线作业方法及装置
JP2014123365A (ja) MapReduceフレームワークにおけるデータ処理の最適化のためのデバイスおよび方法
CN108123980B (zh) 一种资源调度方法及系统
CN108270805B (zh) 用于数据处理的资源分配方法及装置
CN110187960A (zh) 一种分布式资源调度方法及装置
CN104915253A (zh) 一种作业调度的方法及作业处理器
CN108259373B (zh) 一种数据分配调度的方法及系统
CN103023980A (zh) 一种云平台处理用户服务请求的方法和系统
WO2018045541A1 (zh) 一种容器分配的优化方法及处理设备

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