CN107066318A - 一种适用于流计算的数据调度方法 - Google Patents
一种适用于流计算的数据调度方法 Download PDFInfo
- Publication number
- CN107066318A CN107066318A CN201710023480.7A CN201710023480A CN107066318A CN 107066318 A CN107066318 A CN 107066318A CN 201710023480 A CN201710023480 A CN 201710023480A CN 107066318 A CN107066318 A CN 107066318A
- Authority
- CN
- China
- Prior art keywords
- data
- waiting task
- data flow
- dispatching method
- priority
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据调度方法,涉及数据处理技术领域,为一种适用于流计算的数据调度方法。该数据调度方法包括:实时获取数据流和待处理任务的订阅关系,建立与待处理任务一一对应的链表;逐条读取来自数据管道的数据流;根据所述订阅关系,将接收到的数据流放入对应的链表中;基于链表,传输对应的数据流。本发明应用于流计算处理。
Description
技术领域
本发明涉及数据处理技术领域,尤其涉及一种适用于流计算的数据调度方法。
背景技术
随着信息技术的飞速发展,基于数据处理和数据分析的应用受到了广泛的欢迎和关注。大量信息源带来了数据规模的爆发式增长,因此对海量数据进行复杂计算已经远远超过单台计算机的处理能力,由此推动了对分布式***及其关键技术的研究。
分布式计算中把需要进行复杂计算的海量数据切分成小块后分交由多台计算机并行处理,并将局部计算结果整合得出最终结果。在复杂、海量、异构的数据环境中,不仅包含静态的、离线的、结构化的数据,还有实时传输的、持续产生的、非结构化的数据。面对这些“无限”运动着的数据,如果不能对其进行高效率的实时处理,将错过数据流中携带的关键信息。整合来自多个异构数据源的“运动”数据,在其“运动”的过程执行复杂的逻辑处理,包括数值计算、数据挖掘和模型预测,实时地给出用户关心的结果,这是传统分布式计算模式所无法做到的。
在传统的数据调度方法中,数据往往独立于应用,由***负责将数据集中存储到磁盘上的关系表里并基于该关系表进行调度,存储的数据是静态的、固定的集合。针对这种处理模式的应用虽然可能频繁查询,但因为操作的对象是持久和稳定的,因此传统的数据调度方式并不适用于流计算。
发明内容
本发明所要解决的技术问题在于提供一种适用于流计算的数据调度方法。
为解决上述技术问题,本发明采用如下技术方案:
本发明提供了一种数据调度方法,包括:
实时获取数据流和待处理任务的订阅关系,建立与待处理任务一一对应的链表;
逐条读取来自数据管道的数据流;
根据所述订阅关系,将接收到的数据流放入对应的链表中;
基于链表,传输对应的数据流。
优选的,在实时获取数据流和待处理任务的订阅关系之前,还包括:
在特定端口监听连接请求;
当获取到预设信号,打开数据管道。
优选的,实时获取数据流和待处理任务的订阅关系包括:
获取处于就绪状态的待处理任务的优先级;
基于各处于就绪状态的待处理任务的优先级,对各处于就绪状态的待处理任务进行排位,获得优先级队列;
基于所述优先级队列,开启数个位于所述优先级队列前列的待处理任务;
实时获取数据流和所开启的待处理任务的订阅关系。
优选的,该数据调度方法还包括:
当检测到***负载负荷超出预设负荷范围或抖动幅度超出预设幅度范围时,重新计算处于就绪状态的待处理任务的优先级。
优选的,该数据调度方法还包括:
根据***负载自适应调整同时开启的待处理任务的数量。
优选的,同时开启的待处理任务的数量为T=C/P,其中,C为***所具有的处理器的数量,P为密集计算所占的时间比重,其中,P为小于或等于1的任意实数。
优选的,将输出数据流和对应的输出数据流名进行存储。
优选的,待处理任务的优先级的影响因子包括待处理任务的重要程度、***的运行状况和任务算子的类型。
本发明实施例提供了一种适用于流计算的数据调度方法,该方法根据待处理任务和数据流的实时的订阅关系,建立与待处理任务一一对应的链表,之后读取数据流,并将数据流存储入对应的链表中,最终将链表传输出去。由于链表是当需要使用时才根据待处理任务进行分配的,因此***的硬件资源可以得到充分利用,并且这样的调度是动态的、非固定的集合,每个***存储空间内的操作对象并非是持久和稳定的,这样的数据调度方法可适用于流计算。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的数据调度方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例提供了一种适用于流计算的数据调度方法,如图1所示,该数据调度方法包括:
步骤S1、实时获取数据流和待处理任务的订阅关系,建立与待处理任务一一对应的链表。
实时获取数据流和待处理任务的订阅关系,可以实时了解到各待处理任务所需的数据流的数量、名称、所需容量的大小等要素,并实时建立与待处理任务一一对应的链表。如此,可以灵活地、充分地应用处理***或处理器的硬件设备、配置,使得处理***或处理器得到充分发挥。
具体的,可通过ZooKeeper这样一个分布式***的可靠协调***实时获取数据流和外部的待处理任务的订阅关系,实际上,一个待处理任务可能会依赖于多个输入数据流,多个待处理任务之间可能需要使用同一个数据流。其中,链表可以以待处理任务的名称进行命名以进行区分,或者也可对每一个链表赋予特定的标识符、一串数字编码之类,并建立链表与待处理任务的关系,从而建立与待处理任务一一对应的链表。
步骤S2、逐条读取来自数据管道的数据流。
为了读取来自数据管道的数据流,首先需要打开数据管道。为了使得数据管道只在有需要的时候开启,节省对硬件的占用时间,从而提高硬件的利用率,本发明实施例中,可首先在特定端口监听连接请求;当获取到预设的连接请求时,打开数据管道。
具体的,可采用每线程循环(One Loop per Thread)模式,在特定端口监听连接请求,当收到来自上游的数据流名称时,代表上游已经按照数据流名称切分好一整个数据流,以读取(READ)标志打开先入先出(First Input First Output,简称FIFO)数据管道的读端,逐条读取其中的数据流。
步骤S3、根据订阅关系,将接收到的数据流放入对应的链表中。
步骤S4、基于链表,传输对应的数据流。
由于与待处理任务对应的数据流已经放入对应的链表中,因此,可以直接传输链表,相当于把对应待处理任务整合好的数据包进行传输,方便且能保证数据的完整性。
进一步的,为了防止数据包在传输的过程中出错,使得数据丢失。本发明实施例中,还可将输出的数据流和对应的数据流名进行存储,这样一旦数据流在传输的过程中丢失,可以调取存储记录,再次发送数据流,保证了数据调度的完整性。
需要说明的是,当用很小的流量使CPU满负荷或者用很小的CPU占用率使流量占满网卡时,多线程并不能带来***性能的提升,反而会带来线程间切换、CPU争用的性能损耗。但当输入/输出操作和CPU计算在时间上“重叠”时,多线程可以有效地降低***延时。如果仅靠单线程既要负责接收输入的数据流,又要负责逻辑计算,必然会因为耗时的输入/输出操作使处理任务等待,CPU闲置,增加响应延迟。
因此本发明实施例中,可同时针对多个待处理任务进行数据调度。但当待处理任务过多时,受到硬件配置的制约,无法同时处理所有的待处理任务,因此,可对所有待处理任务进行优先级的计算、排序,优先处理优先级较高的多个待处理任务。
由于每一次完成优先级的计算、排序过后,都需要重新提取优先级较高的待处理任务,即对对应的待处理任务分配处理时间片。由于每个待处理任务肚饿时间片不是一致的,这增大了处理难度。因此,本发明实施例中,对待处理任务的优先级的计算、排序不是周期性进行的。因为当***运行稳定、各项指标没有明显波动、任务算子没有变更、输入数据源的流速平稳时,没有必要周期性地重新计算待处理任务的优先级并重排优先级队列,这样做反而会给节点带来额外的负荷,此外,重新分配时间片会导致原本连续执行的任务被中断,增大了响应延时。只有当***负载负荷较重、抖动较大,预计会影响任务执行效率时,优先级的重新计算和任务的重新调度才是有必要的。
其中,优先级的影响因子包括该待处理任务的重要程度、节点的运行状况、任务算子的类型等等。
具体的,可同时处理多少个待处理任务可根据需要根据***负载自适应调整,即***在处理待处理任务时,密集计算所占的时间比重为P (0<P<=1),而***一共有C个CPU,为了让这C个CPU均参与执行而又不过载,同时开启的待处理任务的数量为T=C/P。
对这一策略进行边界条件验证:假设C=8, P=1.0,待处理任务完全是密集计算,则T=8。因为同时处理8个待处理任务就能让8个CPU饱和,CPU资源己经用尽,更多的并行处理的待处理任务并不能提高效率。假设C=8,P=0. 5,执行待处理任务时的计算一半是CPU密集型,一半是I/O密集型,则T=16。考虑操作***能灵活合理地调度睡眠(sleeping)/写磁盘(writing )/执行(running)线程,那么大概16个“50%繁忙的线程”能让8个CPU满负荷运转,启动更多的线程并不能提高吞吐量,反而因为增加上下文切换的开销而降低性能。T可以取一个固定值,比如5*C。
综上所述,本发明实施例提供了一种适用于流计算的数据调度方法,该方法根据待处理任务和数据流的实时的订阅关系,建立与待处理任务一一对应的链表,之后读取数据流,并将数据流存储入对应的链表中,最终将链表传输出去。由于链表是当需要使用时才根据待处理任务进行分配的,因此***的硬件资源可以得到充分利用,并且这样的调度是动态的、非固定的集合,每个***存储空间内的操作对象并非是持久和稳定的,这样的数据调度方法可适用于流计算。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种适用于流计算的数据调度方法,其特征在于,包括:
实时获取数据流和待处理任务的订阅关系,建立与待处理任务一一对应的链表;
逐条读取来自数据管道的数据流;
根据所述订阅关系,将接收到的数据流放入对应的链表中;
基于链表,传输对应的数据流。
2.根据权利要求1所述的数据调度方法,其特征在于,在实时获取数据流和待处理任务的订阅关系之前,还包括:
在特定端口监听连接请求;
当获取到预设信号,打开数据管道。
3.根据权利要求2所述的数据调度方法,其特征在于,实时获取数据流和待处理任务的订阅关系包括:
获取处于就绪状态的待处理任务的优先级;
基于各处于就绪状态的待处理任务的优先级,对各处于就绪状态的待处理任务进行排位,获得优先级队列;
基于所述优先级队列,开启数个位于所述优先级队列前列的待处理任务;
实时获取数据流和所开启的待处理任务的订阅关系。
4.根据权利要求3所述的数据调度方法,其特征在于,还包括:
当检测到***负载负荷超出预设负荷范围或抖动幅度超出预设幅度范围时,重新计算处于就绪状态的待处理任务的优先级。
5.根据权利要求4所述的数据调度方法,其特征在于,还包括:
根据***负载自适应调整同时开启的待处理任务的数量。
6.根据权利要求5所述的数据调度方法,其特征在于,
同时开启的待处理任务的数量为T=C/P,其中,C为***所具有的处理器的数量,P为密集计算所占的时间比重,其中,P为小于或等于1的任意实数。
7.根据权利要求1所述的数据调度方法,其特征在于,
将输出的数据流和对应的数据流名进行存储。
8.根据权利要求3所述的数据调度方法,其特征在于,待处理任务的优先级的影响因子包括待处理任务的重要程度、***的运行状况和任务算子的类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710023480.7A CN107066318A (zh) | 2017-01-13 | 2017-01-13 | 一种适用于流计算的数据调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710023480.7A CN107066318A (zh) | 2017-01-13 | 2017-01-13 | 一种适用于流计算的数据调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107066318A true CN107066318A (zh) | 2017-08-18 |
Family
ID=59598696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710023480.7A Pending CN107066318A (zh) | 2017-01-13 | 2017-01-13 | 一种适用于流计算的数据调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107066318A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110851253A (zh) * | 2019-11-06 | 2020-02-28 | 万达信息股份有限公司 | 一种远程运维的方法、***、存储介质及电子设备 |
CN111767129A (zh) * | 2020-06-30 | 2020-10-13 | 深圳职业技术学院 | 数据流任务处理装置及方法 |
CN114928644A (zh) * | 2022-07-20 | 2022-08-19 | 深圳市安科讯实业有限公司 | 一种物联网网络融合加速网关 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110107067A1 (en) * | 2000-02-17 | 2011-05-05 | Elbrus International | Single-chip multiprocessor with clock cycle-precise program scheduling of parallel execution |
CN104361296A (zh) * | 2014-11-14 | 2015-02-18 | 武汉烽火网络有限责任公司 | 一种并行的大容量访问控制列表的查找方法 |
-
2017
- 2017-01-13 CN CN201710023480.7A patent/CN107066318A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110107067A1 (en) * | 2000-02-17 | 2011-05-05 | Elbrus International | Single-chip multiprocessor with clock cycle-precise program scheduling of parallel execution |
CN104361296A (zh) * | 2014-11-14 | 2015-02-18 | 武汉烽火网络有限责任公司 | 一种并行的大容量访问控制列表的查找方法 |
Non-Patent Citations (1)
Title |
---|
顾昕: ""分布式流式计算框架关键技术的研究与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110851253A (zh) * | 2019-11-06 | 2020-02-28 | 万达信息股份有限公司 | 一种远程运维的方法、***、存储介质及电子设备 |
CN111767129A (zh) * | 2020-06-30 | 2020-10-13 | 深圳职业技术学院 | 数据流任务处理装置及方法 |
CN111767129B (zh) * | 2020-06-30 | 2021-10-29 | 深圳职业技术学院 | 数据流任务处理装置及方法 |
CN114928644A (zh) * | 2022-07-20 | 2022-08-19 | 深圳市安科讯实业有限公司 | 一种物联网网络融合加速网关 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8893145B2 (en) | Method to reduce queue synchronization of multiple work items in a system with high memory latency between processing nodes | |
US7370326B2 (en) | Prerequisite-based scheduler | |
JP4694595B2 (ja) | スリープキュー管理 | |
JP3987384B2 (ja) | 実行キュー管理 | |
US7441240B2 (en) | Process scheduling apparatus, process scheduling method, program for process scheduling, and storage medium recording a program for process scheduling | |
JP2006515690A (ja) | 複数のプロセッサを有するデータ処理システムと、複数のプロセッサを有するデータ処理システムのためのタスクスケジューラと、タスクスケジューリングの対応する方法 | |
CN102779075A (zh) | 一种在多处理器核***中进行调度的方法、装置及*** | |
US9268526B2 (en) | Dual-buffer serialization and consumption of variable-length data records produced by multiple parallel threads | |
US9158713B1 (en) | Packet processing with dynamic load balancing | |
CN109408220A (zh) | 一种任务处理方法及装置 | |
CN108549574A (zh) | 线程调度管理方法、装置、计算机设备和存储介质 | |
CN107066318A (zh) | 一种适用于流计算的数据调度方法 | |
WO2020119307A1 (zh) | 一种基于dsp的任务调度方法及装置 | |
CN109992366A (zh) | 任务调度方法及调度装置 | |
IL264794B2 (en) | Scheduling of tasks on a multi-processor device | |
CN115827250A (zh) | 一种数据存储方法、装置及设备 | |
CN114610472A (zh) | 异构计算中多进程管理方法及计算设备 | |
US8819690B2 (en) | System for reducing data transfer latency to a global queue by generating bit mask to identify selected processing nodes/units in multi-node data processing system | |
CN109947798A (zh) | 一种流事件的处理方法及装置 | |
CN102339223A (zh) | 数字数据处理*** | |
CN110515729A (zh) | 基于图形处理器的图计算节点向量负载平衡方法及装置 | |
JPH04288638A (ja) | コンピュータシステム | |
Papadimitriou et al. | Mac OS versus FreeBSD: A comparative evaluation | |
CN117421129B (zh) | 一种基于异构存储集群的业务执行方法、装置及电子设备 | |
JP5844134B2 (ja) | マルチプロセッサ装置及びマルチプロセッサ装置の制御方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170818 |