CN111708799B - Spark任务处理方法、装置、电子设备及存储介质 - Google Patents
Spark任务处理方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN111708799B CN111708799B CN202010366884.8A CN202010366884A CN111708799B CN 111708799 B CN111708799 B CN 111708799B CN 202010366884 A CN202010366884 A CN 202010366884A CN 111708799 B CN111708799 B CN 111708799B
- Authority
- CN
- China
- Prior art keywords
- processed
- task
- spark
- cluster system
- tasks
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 19
- 230000015654 memory Effects 0.000 claims description 40
- 238000004590 computer program Methods 0.000 claims description 11
- 238000000034 method Methods 0.000 abstract description 28
- 101150083764 KCNK9 gene Proteins 0.000 description 24
- 101150039208 KCNK3 gene Proteins 0.000 description 13
- 238000012423 maintenance Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000004364 calculation method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 238000012790 confirmation Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2462—Approximate or statistical queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Probability & Statistics with Applications (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例公开了一种Spark任务处理方法、装置、电子设备及存储介质,方法包括:根据各待处理任务的优先级依次读取待处理任务;针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断。本发明根据Spark集群***的运行状态和当前可用资源以及当前待处理任务所需的资源,确定是否执行当前待处理任务,从而可以避免因排序在先的任务耗时过长、占用资源过多而导致排序在后但是需要较少资源的任务无法执行的问题,进而可以实现资源的优化分配。
Description
技术领域
本发明涉及计算机技术领域,具体涉及一种Spark任务处理方法、装置、电子设备及存储介质。
背景技术
Spark是一个通用引擎,可用它来完成各种各样的运算,包括SQL查询、文本处理、机器学习等。在大数据***中,经常采用Spark来完成各种大数据处理的需求。例如通过Spark来进行多个SQL查询统计任务,此时一般采取的措施是:在有多个任务待处理的情况下,spark-submit(Spark应用程序部署工具)会通过一个统一的main方法创建sparkcontext,在spark context中通过多线程同时提交多个任务运行,然后spark context接到这所有的任务之后,通过中央调度依次分配资源来执行各个任务,最终任务完成程序退出。或者是,通过增加多个main方法的方式,将多个任务分散在这些main方法中,这样可以同时创建多个spark context,由spark context自行调度分配任务的执行。
然而,这两种方案均存在相应的缺点:
对于通过一个统一的main方法创建spark context,在spark context中通过多线程同时提交多个任务运行的处理方式,在某些任务耗时长、占用资源多的情况下,或者是临时紧急需要某些任务的统计结果的情况下,无法动态调度,优先分配资源、优先执行该任务得到数据。只能按照原先设计的main方法中的任务顺序,依次申请资源、排队执行任务,不够灵活,无法满足实际需求。例如,当排序在先的某个任务耗时过长、占用资源过多的情况下,会导致排序在后但是需要较少资源的任务无法执行,因而无法实现资源的优化分配。又如,当需要临时执行某一紧急任务时,无法动态调度,优先执行该任务,因而不够灵活,无法满足实际需求。
而对于通过增加多个main方法,将多个任务分散在多个main方法的处理方式,由于一个任务对应一个main方法,因此会因为任务过多,分配过细,从而增加运维人员的维护成本。
发明内容
由于现有方法存在上述问题,本发明实施例提出一种Spark任务处理方法、装置、电子设备及存储介质。
第一方面,本发明实施例提供了一种Spark任务处理方法,包括:
根据各待处理任务的优先级依次读取待处理任务;
针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断。
进一步地,所述的Spark任务处理方法,还包括:
若根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断不执行当前读取的待处理任务,则直接针对下一个待处理任务进行判断。
进一步地,针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断,具体包括:
针对当前读取的待处理任务,判断Spark集群***当前的运行状态是否正常,若正常,则判断Spark集群***当前可用资源是否满足当前读取的待处理任务所需的资源,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断。
进一步地,若根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断不执行当前读取的待处理任务,则直接针对下一个待处理任务进行判断,具体包括:
若判断Spark集群***当前可用资源不满足当前读取的待处理任务所需的资源,则针对下一个待处理任务进行判断。
进一步地,所述针对下一个待处理任务进行判断,具体包括:
判断Spark集群***当前的运行状态是否正常,若正常,则判断Spark集群***当前可用资源是否满足下一个待处理任务所需的资源,若是,则执行下一个待处理任务,若否,则直接针对下下一个待处理任务进行判断,直至所有的待处理任务均被遍历完毕。
进一步地,所述的Spark任务处理方法,还包括:
当每检测一项任务执行完毕后,判断是否存在未被执行的待处理任务,若是,则根据未被执行的待处理任务的优先级,对未被执行的待处理任务进行相同逻辑的判断。
进一步地,判断Spark集群***当前的运行状态是否正常,具体包括:
判断Spark集群***的磁盘读写速度是否大于第一阈值以及***吞吐量是否大于第二阈值,若均为是,则确定Spark集群***当前的运行状态正常。
进一步地,所述的Spark任务处理方法,还包括:
当有待处理任务需要临时调整执行顺序时,修改对应任务的优先级。
第二方面,本发明实施例还提供了一种Spark任务处理装置,包括:
读取模块,用于根据各待处理任务的优先级依次读取待处理任务;
处理模块,用于针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第一方面所述的Spark任务处理方法。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所述的Spark任务处理方法。
由上述技术方案可知,本发明实施例提供的Spark任务处理方法、装置、电子设备及存储介质,根据Spark集群***的运行状态和当前可用资源以及当前待处理任务所需的资源,确定是否执行当前待处理任务,从而可以避免因排序在先的任务耗时过长、占用资源过多而导致排序在后但是需要较少资源的任务无法执行的问题,进而可以实现资源的优化分配。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。
图1是本发明一实施例提供的Spark任务处理方法的流程图;
图2是本发明一实施例提供的Spark任务处理装置的结构示意图;
图3是本发明一实施例提供的电子设备的结构示意图。
具体实施方式
下面结合附图,对本发明的具体实施方式作进一步描述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
图1示出了本发明一实施例提供的Spark任务处理方法的流程图,如图1所示,本发明实施例提供的Spark任务处理方法,应用于Spark任务处理装置,具体包括如下内容:
步骤101:根据各待处理任务的优先级依次读取待处理任务。
步骤102:针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断。
在本实施例中,各待处理任务的优先级可以根据各待处理任务的重要性进行确定。也可以根据各待处理任务的常用性进行确定,本实施例对此不做限定。例如,假设根据3个待处理任务的重要性,确定的任务优先级由高到低依次为:Task3>Task2>Task1。
在本实施例中,Spark集群***当前的运行状态可以指Spark集群***当前的磁盘读写速度,也可以指Spark集群***的***吞吐量,也可以同时指Spark集群***当前的磁盘读写速度和Spark集群***的***吞吐量。
在本实施例中,Spark集群***当前可用资源可以指Spark集群***当前可用内存。Spark集群***当前可用内存为:Spark集群***总可用内存与当前已运行的所有任务占用的内存的差值。例如,Spark集群***总可用内存为mem_origin*90%(mem_origin是***的初始内存,一般认为***内存使用率在90%以下可正常运行,因此***总可用内存为mem_origin*90%),假设当前已运行的任务为Task2和Task3,则Spark集群***当前可用内存为mem_origin*90%-mem2-mem3。其中,mem2和mem3分别为Task2和Task3在运行时占用的内存。
在本实施例中,各待处理任务所需的资源是指各待处理任务被执行时需要占用的资源,如运行时需要占用的内存。
在本实施例中,不再仅仅根据各任务的固有顺序进行各任务的执行,而是综合考虑了Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的任务所需的资源,动态确定是否执行当前读取的任务,因此,本实施例可以更为灵活地实现多任务的执行,能够在确保***正常运行以及各任务正常执行的情况下,高效的完成多任务执行,避免因排序在先的任务耗时过长、占用资源过多而导致排序在后但是需要较少资源的任务无法执行的问题,进而可以实现资源的优化分配,从而可以有效提高spark集群的执行效率。由此可见,本实施例在不需要维护多个main方法,增加人员维护成本的情况下,实现一个main方法中的多任务动态调整,最小化维护成本的同时,以最短的时间完成多任务执行,实现资源利用最大化。
由上述技术方案可知,本发明实施例提供的Spark任务处理方法,根据Spark集群***的运行状态和当前可用资源以及当前待处理任务所需的资源,确定是否执行当前待处理任务,从而可以避免因排序在先的任务耗时过长、占用资源过多而导致排序在后但是需要较少资源的任务无法执行的问题,进而可以实现资源的优化分配。
基于上述实施例的内容,在本实施例中,所述Spark任务处理方法,还包括:当有待处理任务需要临时调整执行顺序时,修改对应任务的优先级。
在本实施例中,当有待处理任务需要临时调整执行顺序时,例如,当有临时紧急任务需要加急处理时,可以通过修改对应任务的优先级的方式进行执行顺序的协助调整,该处理方式简单方便,支持临时调整任务的执行顺序,满足了实际业务场景的需要。
由上述技术方案可知,本发明实施例提供的Spark任务处理方法,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及各待处理任务所需的资源,动态确定各待处理任务的执行顺序和各待处理任务的并发执行情况,同时当有任务临时需要调整执行顺序时,修改对应任务的优先级即可。由此可见,本发明实施例根据***可用资源情况、各任务的资源需求情况以及运行任务后***的运行状态,动态调度任务,最有效的完成多任务执行,同时兼顾临时调整任务执行顺序问题,支持临时调整任务优先级,满足实际的业务场景。本发明实施例在不需要维护多个main方法,增加人员维护成本的情况下,实现一个main方法中的多任务动态调整,最小化维护成本的同时,以最短的时间完成多任务执行,实现资源利用最大化。
基于上述实施例的内容,在本实施例中,所述的Spark任务处理方法,还包括:
若根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断不执行当前读取的待处理任务,则直接针对下一个待处理任务进行判断。
在本实施例中,针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断,否则直接针对下一个待处理任务进行判断。举例来说,假设3个任务的优先级由高到低依次为:Task3>Task2>Task1,由于Task3的优先级最高,因此,首先读取Task3,然后针对读取到的Task3,先判断Spark集群***当前的运行状态是否正常,若正常,则继续判断Spark集群***当前可用资源是否满足Task3所需的资源,若满足,则执行Task3(需要说明的是,若不满足,则判断Spark集群***当前可用资源是否满足Task2所需的资源)。假设Task3被执行后,通过判断确认***的运行状态正常,此时会继续判断Spark集群***当前可用资源是否满足Task2所需的资源,若满足,则继续执行Task2(这种情况下***同时执行Task3和Task2,需要说明的是,在Task2被执行后继续判断***当前可用资源是否满足Task1所需的资源),若Spark集群***当前可用资源不满足Task2所需的资源,则继续判断Spark集群***当前可用资源是否满足Task1所需的资源,若满足,则继续执行Task1(这种情况下***同时执行Task3和Task1)。由此可见,本实施例根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及各待处理任务所需的资源,动态确定各待处理任务的执行顺序和各待处理任务的并发执行情况,因此,本实施例可以实现待执行任务的动态调度,最有效的完成多任务执行,避免出现一些较为耗费资源的任务长时间占用***资源,进而导致***磁盘读写速率下降或吞吐量降低,同时使得一些需要资源较少的任务无法被尽早的正常执行。
基于上述实施例的内容,在本实施例中,针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断,具体包括:
针对当前读取的待处理任务,判断Spark集群***当前的运行状态是否正常,若正常,则判断Spark集群***当前可用资源是否满足当前读取的待处理任务所需的资源,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断。
若根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断不执行当前读取的待处理任务,则直接针对下一个待处理任务进行判断,具体包括:
若判断Spark集群***当前可用资源不满足当前读取的待处理任务所需的资源,则针对下一个待处理任务进行判断。
在本实施例中,针对下一个待处理任务进行判断,具体包括:
判断Spark集群***当前的运行状态是否正常,若正常,则判断Spark集群***当前可用资源是否满足下一个待处理任务所需的资源,若是,则执行下一个待处理任务,若否,则直接针对下下一个待处理任务进行判断,直至所有的待处理任务均被遍历完毕。
在本实施例中,假设3个任务的优先级由高到低依次为:Task3>Task2>Task1,假设Task3在执行前,通过判断确认Spark集群***当前的运行状态正常,此时,会判断Spark集群***当前可用资源是否满足Task3所需的资源,若满足,则执行Task3,假设Task3被执行后,通过判断确认***的运行状态正常,且通过判断确认***剩余的资源不满足执行Task2所需的资源,则不执行Task2,并进一步判断***剩余的资源是否满足Task1所需的资源,若经判断确认***剩余的资源满足执行Task1所需的资源,则执行Task1。此外,当Task1执行完毕后,重新判断***剩余的资源是否满足Task2所需的资源,若满足,则执行Task2。
在本实施例中,需要说明的是,当判断获知Spark集群***的运行状态不正常时,不再执行当前读取的待处理任务,以避免当前读取的待处理任务无法被正常执行。
基于上述实施例的内容,在本实施例中,判断Spark集群***当前的运行状态是否正常,具体包括:
判断Spark集群***的磁盘读写速度是否大于第一阈值以及***吞吐量是否大于第二阈值,若均为是,则确定Spark集群***当前的运行状态正常。
在本实施例中,磁盘读写速度大于第一阈值可以为磁盘读写速度大于iostat_origin*80%。***吞吐量大于第二阈值可以为***吞吐量大于tps_origin*90%。这里的iostat_origin表示spark集群***的标准磁盘读写速度,该值为预设值,不同的***对应的值不同。这里的tps_origin表示spark集群***的标准吞吐量,该值为预设值,不同的***对应的值不同。
在本实施例中,***吞吐量可以通过任务启动的executor数量、每个executor的核数和任务执行的时长确定。例如,所述任务执行的***吞吐量通过第一关系模型获取;其中,所述第一关系模型为:
tps=num_executors*executor_core/dur
其中,tps表示***吞吐量;num_executors表示任务启动的executor数量;executor_core表示每个executor的核数;dur表示任务执行的时长。
在本实施例中,需要说明的是,已知影响Spark任务执行效率的主要因素有以下三个:内存mem,磁盘读写速度iostat以及***吞吐量tps,因此首先收集spark集群环境的相关参数,分别记为mem_origin,iostat_origin,tps_origin。
假设一共3个数据统计任务,那么前期先收集这3个任务在指定spark集群上运行时的内存指标数据的平均值,如下表1所示。
表1
另外,假设根据数据结果的常用性,以及根据业务判断得出的数据重要性,确定这3个任务的优先级为:Task3>Task2>Task1,据此默认设置Task3的level3=3,Task2的level2=2,Task1的level1=1。
一般***内存使用率在90%以下可正常运行,高于90%则有异常风险,可能延时甚至宕机。因此在任务执行过程中,计算***的可用内存mem_unuse:
mem_unuse=mem_origin*90%-mem
其中,mem为任务运行时的占用内存,例如Task1运行时的可用内存,将上述公式中的mem替换为mem1,即可计算得出。依次替换mem,即可得出Task2和Task3的可用内存mem_unuse2、mem_unuse3。
在本实施例中,根据3个任务的优先级排名,优先运行Task3,当Task3运行时,可得到mem_unuse3,其中,mem_unuse3=mem_origin*90%-mem3。当mem_unuse3同时大于Task2和Task 1所需的内存时,根据3个任务的优先级排名,优先运行Task2。
此时计算运行Task2之后的可用内存mem_unuse2:
mem_unuse2=mem_unuse3-mem2
此时的mem_unuse2如果大于mem1,那么就可以执行Task1;如果mem_unuse2小于mem1,那么***只可同时运行Task2和Task3,Task1只能排队,等到***资源空闲,才可以继续执行。
上述讲述的为与内存相关的内容,与此同时,需要说明的是,还需要进一步考虑磁盘读写速度这一因素。已知该大数据***采用的硬件设备,其磁盘读写速度为iostat_origin,一般情况下,任务执行过程中的iostat要达到iostat_origin的80%,才算***在良好运行范围内。根据3个任务的优先级排名,优先运行Task3,当Task3运行时,可得到iostat3,如果iostat3>=iostat_origin*80%,则继续运行Task2。当同时运行Task2和Task3的时候,如果iostat3>=iostat_origin*80%,并且如果iostat2>=iostat_origin*80%,则继续运行Task1,依次类推。
上述讲述的为与磁盘读写速度相关的内容,与此同时,需要说明的是,还需要进一步考虑***吞吐量这一因素。在本实施例中,spark-submit在提交任务到Spark集群执行时,一般会指定该任务启动的executor数量num_executors以及每个executor的核数executor_core。根据***吞吐量计算公式:
tps=num_executors*executor_core/dur
其中,tps表示***吞吐量;num_executors表示任务启动的executor数量;executor_core表示每个executor的核数;dur表示任务执行的时长。当tps>=tps_origin*90%时,判断***在良好运行范围内。
假设当spark-submit提交任务到Spark集群执行时,根据3个任务的优先级排名,优先运行Task3。此时根据上面的计算公式mem_unuse3=mem_origin*90%-mem3,可得mem_unuse3,如果mem_unuse3大于0,说明***内存使用率在90%以下。同时假设获取磁盘读写速度后得到iostat3>=iostat_origin*80%,说明此时读写速度大于正常值的80%;同时根据***吞吐量计算公式,得出tps3>=tps_origin*90%,说明***吞吐量在正常值范围内。当内存、磁盘读写速度和***吞吐量这三个条件均满足时,表明***运行Task3时状态正常。
在上述基础上,再根据3个任务的优先级排名,继续运行Task2,重复上面处理过程,得出***状态正常的结果,则表示可同时运行Task2和Task3。
当有任务需要临时调整执行顺序,优先运行时,只需要将level值设置为最大即可。例如,Task1要优先执行,那么将level1设置为4,即level1>level3>level2,***检测到level值变化,就按照新的优先级顺序,优先执行level1。
综上,建立一张数据库表spark_data并初始化数据如下面表2。
表2
在本实施例中,可以新增配置文件spark_origin_data.properties,其中配置***性能参考值:内存mem_origin,磁盘读写速度iostat_origin以及***吞吐量tps_origin。
当spark-submit准备提交任务到Spark集群执行时,首先读取spark_data表,获取到level值最大的数据准备执行。此时是即将执行的第一个任务,这时候从spark_origin_data.properties中读取得来mem_origin、iostat_origin、tps_origin等值,其他值从spark_data表中获取。当内存这一条件满足时,可以记录mem_unuse_realtime、iostat_realtime、tps_realtime,此时***根据task_name来实例化level值最大的任务,并将任务提交到Spark集群开始执行。
接下来继续遍历spark_data表,获取到level值排第二的任务准备执行。若当前的可用内存满足Task2执行时所需内存、且Task3执行时的磁盘读写速度大于第二阈值,以及,Task3执行时的***吞吐量大于第三阈值时,说明***可继续运行Task2。此时可根据level值第二大的task_name来实例化任务,将提交到Spark集群开始执行。
后续继续循环遍历,当出现内存、磁盘读写速度和***吞吐量三个条件无法全部满足时,不实例化对应的任务,而是直接进入下一次循环,继续判断是否有满足条件可执行的任务。直到循环结束,且没有可满足内存、磁盘读写速度和***吞吐量三个条件的任务时,循环结束。等当前已启动任务有完成的时候,再重新循环,提交新的任务执行。
当有任务要临时调整执行顺序的时候,修改level即可。在下次循环开始的时候,会按照spark_data表最新的level排名来提取数据,进行计算和循环判断。
根据上面的描述可知,本实施例在监控***可用内存、磁盘读写速度和***吞吐量指标正常情况下,可同时启动多个任务运行,还支持临时调整任务执行顺序,提升***资源利用率。采用本实施例提供的Spark任务处理方法,可以同时运行多任务,提升***资源利用率。还支持临时调整任务执行顺序,减少人工维护操作成本,更加灵活,符合实际场景需要。
图2示出了本发明一实施例提供的Spark任务处理装置的结构示意图,如图2所示,本发明实施例提供的Spark任务处理装置,包括:
读取模块21,用于根据各待处理任务的优先级依次读取待处理任务;
处理模块22,用于针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断。
由于本实施例提供的Spark任务处理装置可以用于执行上述实施例提供的Spark任务处理方法,其工作原理和有益效果类似,此处不再详述。
基于相同的发明构思,本发明又一实施例提供了一种电子设备,参见图3,所述电子设备具体包括如下内容:处理器301、存储器302、通信接口303和通信总线304;
其中,所述处理器301、存储器302、通信接口303通过所述通信总线304完成相互间的通信;所述通信接口303用于实现各设备之间的信息传输;
所述处理器301用于调用所述存储器302中的计算机程序,所述处理器执行所述计算机程序时实现上述Spark任务处理方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:根据各待处理任务的优先级依次读取待处理任务;针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断。
基于相同的发明构思,本发明又一实施例提供了一种非暂态计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现上述Spark任务处理方法的全部步骤,例如,所述处理器执行所述计算机程序时实现下述步骤:根据各待处理任务的优先级依次读取待处理任务;针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断。
此外,上述的存储器中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,Spark任务处理装置,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,Spark任务处理装置,或者网络设备等)执行各个实施例或者实施例的某些部分所述的Spark任务处理方法。
此外,在本发明中,诸如“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。
此外,在本发明中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
此外,在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (8)
1.一种Spark任务处理方法,其特征在于,包括:
根据各待处理任务的优先级依次读取待处理任务;
针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断;
当每检测一项任务执行完毕后,判断是否存在未被执行的待处理任务,若是,则根据未被执行的待处理任务的优先级,对未被执行的待处理任务进行相同逻辑的判断;
当有待处理任务需要临时调整执行顺序时,修改对应任务的优先级;
所述针对下一个待处理任务进行判断,具体包括:
判断Spark集群***当前的运行状态是否正常,若正常,则判断Spark集群***当前可用资源是否满足下一个待处理任务所需的资源,若是,则执行下一个待处理任务,若否,则直接针对下下一个待处理任务进行判断,直至所有的待处理任务均被遍历完毕。
2.根据权利要求1所述的Spark任务处理方法,其特征在于,还包括:
若根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断不执行当前读取的待处理任务,则直接针对下一个待处理任务进行判断。
3.根据权利要求1所述的Spark任务处理方法,其特征在于,针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断,具体包括:
针对当前读取的待处理任务,判断Spark集群***当前的运行状态是否正常,若正常,则判断Spark集群***当前可用资源是否满足当前读取的待处理任务所需的资源,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断。
4.根据权利要求2所述的Spark任务处理方法,其特征在于,若根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断不执行当前读取的待处理任务,则直接针对下一个待处理任务进行判断,具体包括:
若判断Spark集群***当前可用资源不满足当前读取的待处理任务所需的资源,则针对下一个待处理任务进行判断。
5.根据权利要求3所述的Spark任务处理方法,其特征在于,判断Spark集群***当前的运行状态是否正常,具体包括:
判断Spark集群***的磁盘读写速度是否大于第一阈值以及***吞吐量是否大于第二阈值,若均为是,则确定Spark集群***当前的运行状态正常。
6.一种Spark任务处理装置,其特征在于,包括:
读取模块,用于根据各待处理任务的优先级依次读取待处理任务;
处理模块,用于针对每个当前读取的待处理任务,根据Spark集群***当前的运行状态、Spark集群***当前可用资源以及当前读取的待处理任务所需的资源,判断是否执行当前读取的待处理任务,若是,则执行当前读取的待处理任务,并针对下一个待处理任务进行判断;
当每检测一项任务执行完毕后,判断是否存在未被执行的待处理任务,若是,则根据未被执行的待处理任务的优先级,对未被执行的待处理任务进行相同逻辑的判断;
当有待处理任务需要临时调整执行顺序时,修改对应任务的优先级;
所述针对下一个待处理任务进行判断,具体包括:
判断Spark集群***当前的运行状态是否正常,若正常,则判断Spark集群***当前可用资源是否满足下一个待处理任务所需的资源,若是,则执行下一个待处理任务,若否,则直接针对下下一个待处理任务进行判断,直至所有的待处理任务均被遍历完毕。
7.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至5任一所述的Spark任务处理方法。
8.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至5任一所述的Spark任务处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010366884.8A CN111708799B (zh) | 2020-04-30 | 2020-04-30 | Spark任务处理方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010366884.8A CN111708799B (zh) | 2020-04-30 | 2020-04-30 | Spark任务处理方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111708799A CN111708799A (zh) | 2020-09-25 |
CN111708799B true CN111708799B (zh) | 2023-09-05 |
Family
ID=72536834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010366884.8A Active CN111708799B (zh) | 2020-04-30 | 2020-04-30 | Spark任务处理方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111708799B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113342493B (zh) * | 2021-06-15 | 2022-09-20 | 上海哔哩哔哩科技有限公司 | 任务执行方法、装置及计算机设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022670A (zh) * | 2015-07-17 | 2015-11-04 | 中国海洋大学 | 一种云计算平台中的异构分布式任务处理***及其处理方法 |
CN108711007A (zh) * | 2018-05-16 | 2018-10-26 | 国电南瑞南京控制***有限公司 | 一种能源一体化采集***的多任务实时调度方法 |
CN110413412A (zh) * | 2019-07-19 | 2019-11-05 | 苏州浪潮智能科技有限公司 | 一种基于gpu集群资源分配的方法和装置 |
CN110704186A (zh) * | 2019-09-25 | 2020-01-17 | 国家计算机网络与信息安全管理中心 | 基于混合分布架构的计算资源分配方法、装置和存储介质 |
-
2020
- 2020-04-30 CN CN202010366884.8A patent/CN111708799B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105022670A (zh) * | 2015-07-17 | 2015-11-04 | 中国海洋大学 | 一种云计算平台中的异构分布式任务处理***及其处理方法 |
CN108711007A (zh) * | 2018-05-16 | 2018-10-26 | 国电南瑞南京控制***有限公司 | 一种能源一体化采集***的多任务实时调度方法 |
CN110413412A (zh) * | 2019-07-19 | 2019-11-05 | 苏州浪潮智能科技有限公司 | 一种基于gpu集群资源分配的方法和装置 |
CN110704186A (zh) * | 2019-09-25 | 2020-01-17 | 国家计算机网络与信息安全管理中心 | 基于混合分布架构的计算资源分配方法、装置和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111708799A (zh) | 2020-09-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113238838B (zh) | 一种任务调度方法、装置及计算机可读存储介质 | |
CN107038069B (zh) | Hadoop平台下动态标签匹配DLMS调度方法 | |
US8458712B2 (en) | System and method for multi-level preemption scheduling in high performance processing | |
US8959515B2 (en) | Task scheduling policy for limited memory systems | |
US8020161B2 (en) | Method and system for the dynamic scheduling of a stream of computing jobs based on priority and trigger threshold | |
US7441240B2 (en) | Process scheduling apparatus, process scheduling method, program for process scheduling, and storage medium recording a program for process scheduling | |
US8713573B2 (en) | Synchronization scheduling apparatus and method in real-time multi-core system | |
US20160210174A1 (en) | Hybrid Scheduler and Power Manager | |
CN107273200B (zh) | 一种针对异构存储的任务调度方法 | |
US8799913B2 (en) | Computing system, method and computer-readable medium for managing a processing of tasks | |
CN102541460B (zh) | 一种多磁盘场景下的磁盘管理方法和设备 | |
US20070195356A1 (en) | Job preempt set generation for resource management | |
CN112764904A (zh) | 基于多任务***中防止低优先级任务饿死的方法 | |
CN114968566A (zh) | 一种面向共享式gpu集群下的容器调度方法及装置 | |
CN108509280A (zh) | 一种基于推送模型的分布式计算集群本地性调度方法 | |
CN111190691A (zh) | 适用于虚拟机的自动迁移方法、***、装置及存储介质 | |
CN107977275B (zh) | 基于消息队列的任务处理方法及相关设备 | |
CN113032102A (zh) | 资源重调度方法、装置、设备和介质 | |
CN111708799B (zh) | Spark任务处理方法、装置、电子设备及存储介质 | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN113961353A (zh) | 一种ai任务的任务处理方法和分布式*** | |
CN116860723B (zh) | 跨计算中心数据迁移方法 | |
CN111930485B (zh) | 一种基于性能表现的作业调度方法 | |
WO2024032783A1 (zh) | 任务调度的方法和电子设备 | |
CN111143063A (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 |