CN114168354B - 基于数据驱动的数据集群并行计算的调配方法和装置 - Google Patents
基于数据驱动的数据集群并行计算的调配方法和装置 Download PDFInfo
- Publication number
- CN114168354B CN114168354B CN202210126920.2A CN202210126920A CN114168354B CN 114168354 B CN114168354 B CN 114168354B CN 202210126920 A CN202210126920 A CN 202210126920A CN 114168354 B CN114168354 B CN 114168354B
- Authority
- CN
- China
- Prior art keywords
- data
- container
- thread
- task
- computing
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 60
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 90
- 238000001514 detection method Methods 0.000 claims abstract description 14
- 230000011218 segmentation Effects 0.000 claims abstract description 13
- 238000004364 calculation method Methods 0.000 claims description 71
- 238000013500 data storage Methods 0.000 claims description 20
- 238000012545 processing Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000013468 resource allocation Methods 0.000 claims description 3
- 238000000638 solvent extraction Methods 0.000 claims 1
- 238000004891 communication Methods 0.000 abstract description 11
- 238000013461 design Methods 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000013523 data management Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012827 research and development Methods 0.000 description 1
Images
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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multi Processors (AREA)
Abstract
本发明涉及地震勘探领域,尤其涉及一种基于数据驱动的数据集群并行计算的调配方法和装置,通过依据资源数据实时变化计算出可用节点的资源数据列表,驱动计算数据块的切分以形成任务列表,列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点,集群层通过任务块的检测,判断执行状况,即用数据驱动的方式代替消息通信的方式,用线程代替进程,彻底解决了现有技术中调度方法的通信冗余和资源利用不充分导致的低效率问题;通过模块化容器结构的设计提升整体调度的灵活性和并行度,提升了调度的灵活度和可操作性,适用于常规和各种复杂的作业环境,提高了对集群资源的利用率,有效提高了作业运行的效率。
Description
技术领域
本发明涉及地震勘探领域,尤其涉及一种基于数据驱动的数据集群并行计算的调配方法和装置。
背景技术
随着石油勘探采集技术的不断进步,采集到的数据体也不断增大,作为石油勘探地震资料处理系统,需要计算的数据体也就逐渐增大,随着集群并行机的发展,各领域都通过分布式计算解决大量计算造成的效率问题。地震资料处理系统,也通过使用集群并行机的分布式计算方式,计算效率有所提高,如何最大化的利用计算资源提升数据计算的效率是提升数据分布式计算效率需要解决的主要问题,即处理系统的调度框架问题。当前商业软件对于并行调度的通常做法是基于作业的调度方法:通过数据处理人员将数据分组,手动创建多个作业,通过多个作业并行的方式,完成数据的分布式并行计算,但存在着以下问题:
用户操作复杂:用户需要通过对数据的理解,进行手动的数据分组,且构建多个作业,对于一个大数据,构建的作业个数达到上千个,大大增加了工作量和工作时间;
作业进程内资源应用不均匀,不可控:地震资料数据处理的作业,是由多个数据计算算法组成,各个算法的计算时间不同,而以作业为进程的串行计算,整体时间由最耗时的算法阻塞,降低单一进程对资源的利用率从而影响计算效率;
消息通信复杂:基于消息通信控制节点和进程的数据传输和信息同步,存在进程间大量的消息交换,影响整体作业的计算效率;且易造成通信阻塞、通信数据丢失等问题,影响软件稳定性;
算法模块兼容性低:基于作业的单进程并行,对于一些复杂数据计算算法是无法兼容的,对于处理系统来说,这类复杂算法无法使用系统内部的调度流程,需要单独设计流程,以插件的形式存在于系统中,这就导致了复杂算法研发过程的困难性,算法开发人员需要完成数据I/O、算法并行调度和算法部分,增加了工作量,降低了开发效率。
针对上述问题,目前尚未提出有效的解决方案。
发明内容
本发明的目的在于针对现有技术的缺陷和不足,提供一种基于数据驱动的数据集群并行计算的调配方法和装置,通过依据资源数据实时变化计算出可用节点的资源数据列表,再结合计算数据驱动计算数据块切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点,集群层通过任务块的检测,判断任务层是否在正常执行,即用数据驱动的方式代替消息通信的方式,用线程代替进程,彻底解决了现有技术中调度方法的通信冗余和资源利用不充分导致的低效率问题;通过模块化容器结构的设计提升整体调度的灵活性和并行度,提升了调度的灵活度和可操作性,适用于常规和各种复杂的作业环境,提高了对集群资源的利用率,有效提高了作业运行的效率。
为实现上述目的,本发明采用的技术方案:
一种基于数据驱动的数据集群并行计算的调配方法,步骤包括:
采集预设集群内若干节点的资源数据信息,依据数据实时变化计算出可用节点的资源数据列表;
节点任务器驱动计算数据块切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点;
所述节点设置有若干个模块化容器结构,以接收任务数据,根据作业流程的组成实例化线程,分配数据容器,线程自动进行数据计算,实现作业流计算的分层和并行。
在一些实施例中,依据资源数据实时变化计算出可用节点的列表,包括如下步骤:
计算节点资源可用内存量百分比:F = FM*100/TM,
其中, FM表示可用内存量,TM表示总内存量;
计算可应用核数:FC=TC*FCP,
其中, TC表示总核数,FCP表示可用CPU百分比;
由于常规数据计算需要占用百分之5的内存,和至少一个空闲可应用核心,因此,作为可应用节点的判断为:F>5 且 FC≥1;
计算后形成可应用的节点资源数据列表包括节点名称、节点IP、可用内存量、可用本地磁盘量。
在一些实施例中,所述节点任务器驱动计算数据块切分以获取任务列表包括如下步骤:
数据切分算法:通过预设集群节点的内存量M的百分之5,获得预设任务块体积为META1;再通过分配到的计算节点数N和数据D,计算任务块的实际体积:
预设任务数量:B=D/META1;
若B小于N,则取B为N,重新计算任务块体积META2:
META2=D/N;
根据计算后任务块体积,切分数据,获得任务列表,所述任务列表包括任务序号、任务道集数、目标道集索引、任务状态。
在一些实施例中,所述节点设置有若干个模块化容器结构,以接收任务数据,根据作业流程的组成实例化线程,分配数据容器,线程自动进行数据计算,实现作业流计算的分层和并行,包括如下步骤:
生成所述模块化容器结构,所述模块化容器结构包括线程池、连接两个相邻的线程的数据容器及位于数据容器内的容器管理器;所述模块化容器结构作为一个工作单元,基于作业进程串行设有若干个;
其中,所述线程池由若个空线程组成,在作业处理过程中,每个线程被具体的数据计算算法实例化为一个对应的计算线程,同一个数据计算算法可启动多个线程并行,不同数据计算算法间也通过线程实现并行;
所述数据容器由连接模块id、数据存储指针和计数器组成;
所述容器管理器包括读写锁和逻辑运算池,用于控制数据的流向、容器读写控制、数据流中间的格式转换、关键字抽取与数据存储相关的逻辑层数据运算。
在一些实施例中,分配数据容器及数据容器检测包括如下步骤:
数据容器分配算法:数据容器内可存放道集的组数GROUP,GROUP = M/MAX;
其中,MAX表示目标数据的最大道集所需的内存空间;M表示内存的百分之五;
获取计算算法数量为N个,得出数据容器数量为N+1个,每个数据容器内可存储的道集组数为BGROUP,BGROUP = GROUP/(N+1);
数据容器检测算法:计算线程通过检测数据容器内的数据存储情况驱动执行计算:当输入端的数据容器内存在数据时,计算线程获取数据进行计算;当输出端的数据容器内有空闲位置时,计算线程将计算后数据输出,再进入输入数据容器以获取下一组可计算数据。
在一些实施例中,所述数据容器检测算法的具体步骤包括:
检查作为输入端的数据容器中是否有数据,如果有,则所述计算线程从数据容器中读出一个数据;如果没有,则休眠等待;
调用所述计算线程处理数据,如果所述计算线程报错,则依据预计程序进行错误处理:主线程接收到某一线程报错后,反馈到监控界面,由数据处理人员做出继续数据计算,或结束任务以等待调整参数后重新启动任务的指令;
检查作为输出端的数据容器是否有剩余的空间,如果有,所述计算线程将处理后的数据写入数据容器;如果没有,则休眠等待。
在一些实施例中,两个相邻的计算线程对数据容器的使用步骤包括:
输入的计算线程向数据容器写数据,输出的计算线程从数据容器读数据,两个计算线程通过计数器实现数据读写的同步。
在一些实施例中,所述空线程被数据计算算法实例化为计算线程,同一个数据计算算法启动多个线程并行,不同数据计算算法间也通过线程实现并行,高效的资源配置方法包括:
通过基于线性规划的动态均衡调配线程池内的线程给各个算法,启动的线程数量单位时间内处理的数据总数接近一致,使得每个数据在到达数据容器5秒内被读出;
在不超出系统资源cpu核数和内存的总数的限制下,实现高效的线程调度与内存资源利用。
在一些实施例中,在不超出系统资源CPU核数和内存的总数的限制下,实现高效的线程调度与内存资源利用,步骤包括:
首先,系统启动时为每个算法分配的线程数S,S=T/C,
其中;T为根据系统CPU空闲核数计算出线程池内的空线程总数;
C为作业流程内的算法数;
若S<1或S=1时,则设置S为1,且终止后续的均衡算法;
若S>1,则启动基于数据容器内存储数据的线程均衡判断算法,若某一数据容器长时间处于满数据状态,即输入线程的计算速度大于输出线程的计算速度,则减少输入线程个数,增加输出线程个数;
若某一数据容器长时间出于数据空的状态,即输出线程的计算速度大于输入线程的计算速度,则减少输入线程个数,增加输入线程个数,直到各数据容器内的数据存储量达到均衡;
在线程均衡的基础上,再对数据容器优化,计算每个数据容器存储数据量的峰值,逐渐缩小数据容器预设的数据存储组数,从而降低整个流程对内存的使用量。
本发明还公开一种基于数据驱动的数据集群并行计算的调配装置,包括,
获取模块,用于获取集群内的节点的资源数据。
计算模块,依据资源数据实时变化计算出可用节点的资源数据列表,计算节点数据切分,获取任务列表数据,计算数据容器分配算法及数据容器检测算法。
节点任务器,驱动数据切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点。
存储器,用于储存数据信息及计算机程序指令。
处理器,执行所述计算机程序指令时实现:依据资源数据实时变化计算出可用节点的资源列表数据;节点任务器驱动计算数据块切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点。
所述节点设置有若干个模块化容器结构,以接收任务数据,根据作业流程的组成实例化线程,分配数据容器,线程自动进行数据计算,实现作业流计算的分层和并行。
有益效果
本发明提供一种基于数据驱动的地震数据集群并行计算的调配方法和装置,通过依据资源数据实时变化计算出可用节点的资源数据列表,再结合计算数据驱动计算数据块切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点,集群层通过任务块的检测,判断任务层是否在正常执行,即用数据驱动的方式代替消息通信的方式,用线程代替进程,彻底解决了现有技术中调度方法的通信冗余和资源利用不充分导致的低效率问题;通过模块化容器结构的设计提升整体调度的灵活性和并行度,提升了调度的灵活度和可操作性,适用于常规和各种复杂的作业环境,提高了对集群资源的利用率,有效提高了作业运行的效率。
附图说明
图1为现有技术中地震数据资料调度流程;
图2为本发明实施例提供的基于数据驱动的数据集群并行计算的调配方法流程图;
图3为本发明实施例提供的模块化容器结构技术方案结构示意图;
图4为本发明实施例提供的线程对数据容器的使用状态技术方案结构示意图;
图5为本发明实施例提供的线程执行的检测流程图;
图6为本发明实施例提供的数据管理容器内部逻辑关系结构示意图;
图7为本发明实施例提供的线程间负载均衡结构示意图;
图8为本发明实施例提供的集群层通信流程图;
图9为本发明实施例提供的任务动态分配算法流程图;
图10为本发明实施例提供的基于数据驱动的地震数据集群并行计算的调配装置结构示意图。
其中,附图标记说明:
获取模块1;计算模块2;节点任务器3;储存器4;处理器5。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例;如在通篇说明书及权利要求当中所提及的“包含”为一开放式用语,故应解释成“包含但不限定于”。术语“第一”、“第二”、仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量;“多个”指等于或多于两个;基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图10,本发明提供一种基于数据驱动的数据集群并行计算的调配装置,包括获取模块1;计算模块2;节点任务器3;储存器4;处理器5;
其中,
获取模块1,用于获取集群内的节点的资源数据。
计算模块2,依据资源数据实时变化计算出可用节点的资源数据列表,计算节点数据切分,获取任务列表数据,计算数据容器分配算法及数据容器检测算法。
节点任务器3,驱动数据切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点。
存储器4,用于储存数据信息及计算机程序指令。
处理器5,执行所述计算机程序指令时实现:依据资源数据实时变化计算出可用节点的资源列表数据;节点任务器驱动计算数据块切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点。
所述节点设置有若干个模块化容器结构,以接收任务数据,根据作业流程的组成实例化线程,分配数据容器,线程自动进行数据计算,实现作业流计算的分层和并行。
如图1-图10所示,本发明采用如下技术方案:
一种基于数据驱动的数据集群并行计算的调配方法,步骤包括:
获取模块1采集预设集群内若干节点的资源数据信息,计算模块2依据数据实时变化计算出可用节点的资源数据列表;
节点任务器3驱动计算数据块切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点;
所述节点设置有若干个模块化容器结构,以接收任务数据,根据作业流程的组成实例化线程,分配数据容器,线程自动进行数据计算,实现作业流计算的分层和并行。
本发明提供的优选实施例,如图1-图10所示:
一种基于数据驱动的数据集群并行计算的调配方法,步骤包括:
在集群层获取模块1采集预设集群内若干节点的资源数据信息,形成节点资源列表,数据储存在存储器4内,计算模块2通过资源计算算法依据资源数据实时变化计算出可用节点的资源数据列表,为任务的启动准备节点数据,如图8所示
节点资源列表如下表:
计算模块2依据资源数据实时变化计算出可用节点的资源数据列表,包括如下步骤:
计算节点资源可用内存量百分比:F = FM*100/TM,
其中, FM表示可用内存量,TM表示总内存量;
计算可应用核数:FC=TC*FCP,
其中, TC表示总核数,FCP表示可用CPU百分比;
由于常规数据计算需要占用百分之5的内存,和至少一个空闲可应用核心,因此,作为可应用节点的判断为:F>5 且 FC≥1;
计算后形成可用节点列表如下表所示:
并储存在存储器4内。
节点的节点任务器3驱动数据切分以获取任务列表,数据储存在存储器4内,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点;
在一些实施例中,所述节点的节点任务器3驱动数据切分以获取任务列表,步骤如下:
数据切分算法:通过预设集群节点的内存量M的百分之5,获得预设任务块体积为META1;再通过分配到的计算节点数N和数据D,计算模块2计算任务块的实际体积:
预设任务数量:B=D/META;
若B小于N,则取B为N,重新计算任务块体积META2:
META2=D/N;
根据计算后任务块体积,切分数据,获得任务列表,所述任务列表如下表:
形成任务列表后,由列表内任务数据驱动分布式执行,通过动态任务分配算法,循环分配任务到各个空闲的目标节点,如图9所示。
所述节点设置有若干个模块化容器框架下的模块化结构,以接收任务数据,根据作业流程的组成实例化线程,分配数据容器,线程自动进行数据计算,实现作业流计算的分层和并行,包括如下步骤:
生成所述模块化容器结构,所述模块化容器结构包括线程池、连接两个相邻的线程的数据容器及位于数据容器内的容器管理器,如图3所示;所述模块化容器结构作为一个工作单元,基于作业进程串行设有若干个;
其中,所述线程池由若个空线程组成,在作业处理过程中,每个线程被具体的数据计算算法实例化为一个对应的数据计算线程,同一个数据计算算法可启动多个线程并行,不同数据计算算法间也通过线程实现并行。
所述数据容器由连接模块id、数据存储指针和计数器组成,至少包括输入模块id、输出模块id、数据池id、数据池存在id、头指针、尾指针、输入计数器、输出计数器。
所述容器管理器包括读写锁和逻辑运算池,用于控制数据的流向、容器读写控制、数据流中间的格式转换、关键字抽取与数据存储相关的逻辑层数据运算,通过读写锁控制容器间数据传输的一致性,计算模块2通过逻辑运算池实现数据转换、数据拆分、关键字抽取等数据操作的算法,参见图4,图6。
在一些实施例中,分配数据容器及数据容器检测包括如下步骤:
数据容器分配算法:数据容器内可存放道集的组数GROUP,GROUP = M/MAX;
其中,MAX表示目标数据的最大道集;M表示内存的百分之五;
获取算法数量为N个,得出数据容器数量为N+1个,每组算法每个容器连接道集的组数BGROUP,BGROUP = GROUP/(N+1)。
数据容器检测算法:计算线程通过检测数据容器内的数据存储情况驱动执行计算:当输入端的数据容器内存在数据时,计算线程获取数据进行计算;当输出端的数据容器内有空闲位置时,计算线程将计算后数据输出,再进入输入端的数据容器以获取下一组可计算数据。
在一些实施例中,所述数据容器检测算法的具体步骤包括:
处理器5检查作为输入端的数据容器中是否有数据,如果有,则所述计算线程从数据容器中读出一个数据;如果没有,则休眠等待。
调用所述计算线程处理数据,如果所述计算线程报错,则依据预计程序进行错误处理:主线程接收到某一线程报错后,反馈到监控界面,由数据处理人员做出继续数据计算,或结束任务以等待调整参数后重新启动任务的指令。
检查作为输出端的数据容器是否有剩余的空间,如果有,所述计算线程将处理后的数据写入数据容器;如果没有,则休眠等待。
在一些实施例中,两个相邻的数据计算线程对数据容器的使用步骤包括:
输入的计算线程向数据容器写数据,输出的计算线程从数据容器读数据,两个数据计算线程通过计数器实现数据读写的同步,具体流程参见图5。
在一些实施例中,所述空线程被数据计算算法实例化为数据计算线程,同一个数据计算算法启动多个线程并行,不同数据计算算法间也通过线程实现并行,高效的资源配置方法包括:
通过基于线性规划的动态均衡调配线程池内的线程给各个算法,确保每个算法启动的线程数量对于作业和资源最优,启动的线程数量单位时间内处理的数据总数接近一致,使得每个数据在到达数据容器5秒内被读出。
在不超出系统资源cpu核数和内存的总数的限制下,实现线程调度与内存资源利用的最优化。
在一些实施例中,在不超出系统资源CPU核数和内存的总数的限制下,实现高效的线程调度与内存资源利用,步骤包括:
首先,系统启动时为每个算法分配的线程数S,S=T/C,
其中;T为根据系统CPU空闲核数计算出线程池内的空线程总数;
C为作业流程内的算法数。
若S<1或S=1时,则设置S为1,且终止后续的均衡算法。
若S>1,则启动基于数据容器内存储数据的线程均衡判断算法,若某一数据容器长时间处于满数据状态,即输入线程的计算速度大于输出线程的计算速度,则减少输入线程个数,增加输出线程个数。
若某一数据容器长时间出于数据空的状态,即输出线程的计算速度大于输入线程的计算速度,则减少输入线程个数,增加输入线程个数,直到各数据容器内的数据存储量达到均衡。
在线程均衡的基础上,再对数据容器优化,计算每个数据容器存储数据量的峰值,逐渐缩小数据容器预设的数据存储组数,从而降低整个流程对内存的使用量。
在一个示例中,具体方法如下:
处理器5预设:有n个算法,n+1个数据池,线程池内有t个线程;
第i个算法所需的线程个数为Xi,每个线程处理一个数据所需的时间为Ti,每个线程所需的最大内存为Mi;
系统内存的可用总量为M,CPU的核数为C;
计算模块2则列方程如下:
X1/T1 = X2/T2 = ...... = Xn/Tn;
X1 * M1 + X2 *M2 + ...... + Xn*Mn ≤M;
(X1 + X2 + ...... + Xn) ≤t;
求:使X1/T1 + X2/T2 + ...... + Xn/Tn的值最大的Xi的值,可在计算过程中实时的调整Xi的值,直到得到最优解,参见图7所示,在计算过程中,通过计算将算法1的线程数减少1,算法2的线程数加1,以确保作业计算时间最短。
Claims (8)
1.一种基于数据驱动的数据集群并行计算的调配方法,其特征在于,步骤包括:
采集预设集群内若干节点的资源数据信息,依据数据实时变化计算出可用节点的资源数据列表,节点任务器驱动计算数据块切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点;
所述节点设置有若干个模块化容器结构,以接收任务数据,根据作业流程的组成实例化线程,分配数据容器,线程自动进行数据计算,实现作业流计算的分层和并行,包括:
生成所述模块化容器结构,所述模块化容器结构包括线程池、连接两个相邻的线程的数据容器及位于数据容器内的容器管理器;所述模块化容器结构作为一个工作单元,基于作业进程,若干所述工作单元串联设置;其中,
所述线程池由若干个空线程组成,在作业处理过程中,每个线程被具体的数据计算算法实例化为一个对应的计算线程,同一个数据计算算法可启动多个线程并行,不同数据计算算法间也通过线程实现并行;
所述数据容器包括输入模块id、输出模块id、数据存储指针和计数器;数据容器检测算法:计算线程通过检测数据容器内的数据存储情况驱动执行计算:当输入端的数据容器内存在数据时,计算线程获取数据进行计算,当输出端的数据容器内有空闲位置时,计算线程将计算后数据输出,再进入输入端的数据容器以获取下一组可计算数据;输入的计算线程向数据容器写数据,输出的计算线程从数据容器读数据,两个数据计算线程通过计数器实现数据读写的同步;
所述容器管理器包括读写锁和逻辑运算池,用于控制数据的流向、容器读写控制、数据流中间的格式转换、关键字抽取与数据存储相关的逻辑层数据运算。
2.根据权利要求1所述的基于数据驱动的数据集群并行计算的调配方法,其特征在于,依据资源数据实时变化计算出可用节点的列表,包括如下步骤:
计算节点资源可用内存量百分比:F = FM*100/TM,
其中, FM表示可用内存量,TM表示总内存量;
计算可应用核数:FC=TC*FCP,
其中, TC表示总核数;FCP表示可用CPU百分比;
由于常规数据计算需要占用百分之5的内存,和至少一个空闲可应用核心,因此,作为可应用节点的判断为:F>5 且 FC≥1;
计算后形成可应用的节点资源数据列表括节点名称、节点IP、可用内存量、可用本地磁盘量。
3.根据权利要求2所述的基于数据驱动的数据集群并行计算的调配方法,其特征在于,所述节点任务器驱动计算数据块切分以获取任务列表包括如下步骤:
数据切分算法:通过预设集群节点的内存量M的百分之5,获得预设任务块体积为META1;再通过分配到的计算节点数N和数据D,计算任务块的实际体积:
预设任务数量:B=D/META1;
若B小于N,则取B为N,重新计算任务块体积META2:
META2=D/N;
根据计算后任务块体积,切分数据,获得任务列表,所述任务列表包括任务序号、任务道集数、目标道集索引、任务状态。
4.根据权利要求3所述的基于数据驱动的数据集群并行计算的调配方法,其特征在于,分配数据容器包括如下步骤:
数据容器分配算法:数据容器内可存放道集的组数GROUP,GROUP = M/MAX;
其中,MAX表示目标数据的最大道集所需的内存空间;M表示内存的百分之五;
获取计算算法数量为N个,得出数据容器数量为N+1个,每个数据容器内可存储的道集组数为BGROUP,BGROUP = GROUP/(N+1)。
5.根据权利要求1所述的基于数据驱动的数据集群并行计算的调配方法,其特征在于,所述数据容器检测算法的具体步骤包括:
检查作为输入端的数据容器中是否有数据,如果有,则所述计算线程从数据容器中读出一个数据;如果没有,则休眠等待;
调用所述计算线程处理数据,如果所述计算线程报错,则依据预计程序进行错误处理:主线程接收到某一线程报错后,反馈到监控界面,由数据处理人员做出继续数据计算,或结束任务以等待调整参数后重新启动任务的指令;
检查作为输出端的数据容器是否有剩余的空间,如果有,所述计算线程将处理后的数据写入数据容器;如果没有,则休眠等待。
6.根据权利要求1所述的基于数据驱动的数据集群并行计算的调配方法,其特征在于,所述空线程被具体数据计算算法实例化为计算线程,同一个数据计算算法启动多个线程并行,不同数据计算算法间也通过线程实现并行,高效的资源配置方法包括:
通过基于线性规划的动态均衡调配线程池内的线程给各个算法,启动的线程数量单位时间内处理的数据总数接近一致,使得每个数据在数据容器5秒内被读出;
在不超出系统资源cpu核数和内存的总数的限制下,实现高效的线程调度与内存资源利用。
7.根据权利要求6 所述的基于数据驱动的数据集群并行计算的调配方法,其特征在于,在不超出系统资源CPU核数和内存的总数的限制下,实现高效的线程调度与内存资源利用,步骤包括:
首先,系统启动时为每个算法分配的线程数S,S=T/C,
其中;T为根据系统CPU空闲核数计算出线程池内的空线程总数;
C为作业流程内的算法数;
若S<1或S=1时,则设置S为1,且终止后续的均衡算法;
若S>1,则启动基于数据容器内存储数据的线程均衡判断算法,若某一数据容器长时间处于满数据状态,即输入线程的计算速度大于输出线程的计算速度,则减少输入线程个数,增加输出线程个数;
若某一数据容器长时间出于数据空的状态,即输出线程的计算速度大于输入线程的计算速度,则减少输入线程个数,增加输入线程个数,直到各数据容器内的数据存储量达到均衡;
在线程均衡的基础上,再对数据容器优化,计算每个数据容器存储数据量的峰值,逐渐缩小数据容器预设的数据存储组数,从而降低整个流程对内存的使用量。
8.一种基于数据驱动的数据集群并行计算的调配装置,其特征在于,包括,
获取模块,用于获取集群内的节点的资源数据;
计算模块,依据资源数据实时变化计算出可用节点的资源数据列表,计算节点数据切分,获取任务列表数据,计算数据容器分配算法及数据容器检测算法;所述数据容器包括输入模块id、输出模块id、数据存储指针和计数器;数据容器检测算法:计算线程通过检测数据容器内的数据存储情况驱动执行计算:当输入端的数据容器内存在数据时,计算线程获取数据进行计算,当输出端的数据容器内有空闲位置时,计算线程将计算后数据输出,再进入输入端的数据容器以获取下一组可计算数据;输入的计算线程向数据容器写数据,输出的计算线程从数据容器读数据,两个数据计算线程通过计数器实现数据读写的同步;
节点任务器,驱动数据切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点;
存储器,用于储存数据信息及计算机程序指令;
处理器,执行所述计算机程序指令时实现:依据资源数据实时变化计算出可用节点的资源列表数据;节点任务器驱动计算数据块切分以获取任务列表,所述列表内任务数据驱动分布式执行,通过动态任务分配算法循环分配任务至各空闲的节点;所述节点设置有若干个模块化容器结构,以接收任务数据,根据作业流程的组成实例化线程,分配数据容器,线程自动进行数据计算,实现作业流计算的分层和并行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210126920.2A CN114168354B (zh) | 2022-02-11 | 2022-02-11 | 基于数据驱动的数据集群并行计算的调配方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210126920.2A CN114168354B (zh) | 2022-02-11 | 2022-02-11 | 基于数据驱动的数据集群并行计算的调配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114168354A CN114168354A (zh) | 2022-03-11 |
CN114168354B true CN114168354B (zh) | 2022-05-03 |
Family
ID=80489705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210126920.2A Active CN114168354B (zh) | 2022-02-11 | 2022-02-11 | 基于数据驱动的数据集群并行计算的调配方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114168354B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279390A (zh) * | 2012-08-21 | 2013-09-04 | 中国科学院信息工程研究所 | 一种面向小作业优化的并行处理系统 |
CN106708622A (zh) * | 2016-07-18 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 集群资源处理方法和系统、资源处理集群 |
CN110287000A (zh) * | 2019-05-29 | 2019-09-27 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10990502B2 (en) * | 2019-01-29 | 2021-04-27 | EMC IP Holding Company LLC | Detailed performance analysis by flow aware marker mechanism |
US11106495B2 (en) * | 2019-06-13 | 2021-08-31 | Intel Corporation | Techniques to dynamically partition tasks |
-
2022
- 2022-02-11 CN CN202210126920.2A patent/CN114168354B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103279390A (zh) * | 2012-08-21 | 2013-09-04 | 中国科学院信息工程研究所 | 一种面向小作业优化的并行处理系统 |
CN106708622A (zh) * | 2016-07-18 | 2017-05-24 | 腾讯科技(深圳)有限公司 | 集群资源处理方法和系统、资源处理集群 |
CN110287000A (zh) * | 2019-05-29 | 2019-09-27 | 北京达佳互联信息技术有限公司 | 数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114168354A (zh) | 2022-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104298550B (zh) | 一种面向Hadoop的动态调度方法 | |
CN109034396B (zh) | 用于处理分布式集群中的深度学习作业的方法和装置 | |
CN100489789C (zh) | 响应分区工作负荷动态再分区计算机系统的装置和方法 | |
CN102360310B (zh) | 一种分布式系统环境下的多任务进程监视方法 | |
US20210224110A1 (en) | Task scheduling simulation system | |
CN102043675A (zh) | 一种基于任务处理请求任务量大小的线程池管理方法 | |
CN111190691A (zh) | 适用于虚拟机的自动迁移方法、系统、装置及存储介质 | |
CN110347489B (zh) | 一种基于Spark的多中心数据协同计算的流处理方法 | |
CN107577534A (zh) | 一种资源调度方法及装置 | |
CN112231098A (zh) | 任务处理方法、装置、设备及存储介质 | |
CN103503412A (zh) | 用于调度资源的方法及装置 | |
CN106897136A (zh) | 一种任务调度方法及装置 | |
CN112862098A (zh) | 一种集群训练任务处理的方法及系统 | |
CN111666158A (zh) | 一种基于Kubernetes的容器调度方法、装置、存储介质及电子设备 | |
CN110084507B (zh) | 云计算环境下分级感知的科学工作流调度优化方法 | |
CN114168354B (zh) | 基于数据驱动的数据集群并行计算的调配方法和装置 | |
WO2024088026A1 (zh) | 一种云数据迁移的优化方法及系统 | |
CN111506407B (zh) | Pull模式与Push模式相结合的资源管理与作业调度方法、系统 | |
CN104794000B (zh) | 一种作业调度方法及系统 | |
CN116700966A (zh) | 一种K8S集群的pod资源分配方法 | |
CN111125070A (zh) | 一种数据交换方法及平台 | |
CN115952054A (zh) | 一种仿真任务资源管理方法、装置、设备及介质 | |
CN115033389A (zh) | 一种电网信息系统节能型任务资源调度方法和装置 | |
CN112506640B (zh) | 一种用于加密运算芯片的多处理器架构及调配方法 | |
CN112905351B (zh) | 一种gpu和cpu负载调度方法、装置、设备和介质 |
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 |