CN109739649B - 资源管理方法、装置、设备及计算机可读存储介质 - Google Patents
资源管理方法、装置、设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN109739649B CN109739649B CN201811629159.4A CN201811629159A CN109739649B CN 109739649 B CN109739649 B CN 109739649B CN 201811629159 A CN201811629159 A CN 201811629159A CN 109739649 B CN109739649 B CN 109739649B
- Authority
- CN
- China
- Prior art keywords
- task
- resource
- value
- data input
- data
- 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
Classifications
-
- 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
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种资源管理方法,该方法包括:当通过spark应用运行大数据任务时,向预设的集群资源管理器申请所述spark应用可使用的最大资源值;获取所述大数据任务在预设的不同计算阶段的task个数,取所述不同计算阶段的task个数的最大值;根据所述task个数的最大值计算所述spark应用的实际资源总量值;将所述实际资源总量值与所述spark应用可使用的最大资源值进行比较;若所述实际资源总量值小于所述spark应用可使用的最大资源值,则限制所述spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值。本发明还公开了一种资源管理装置、设备和一种计算机可读存储介质。本发明能够实现对全新提交的spark应用的资源配比进行合理管控。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及资源管理方法、装置、设备及计算机可读存储介质。
背景技术
资源管理一直以来都是大数据平台的核心问题,合理的资源配额和资源分配,对提高大数据平台的集群性能具有重大意义。
Dr.elephant是一款用于Hadoop(一个能够对大量数据进行分布式处理的软件框架)和Spark(一种尽量使用内存进行数据计算的分布式计算框架)的性能监控和调优工具,它会自动收集MapReduce和Spark应用的所有指标,针对指标执行分析任务,并使用简易的Web用户界面将各项指标展示出来,从而协助开发人员调优相关MapReduce或Spark任务,以更好地提高集群性能。然而,使用Dr.elephant进行性能监控和调优也存在一定缺陷:只能分析已经多次执行完成的应用,无法对全新提交的应用,给出应用的最佳资源配比;无法给出明确的资源建议,只能给出应用的性能诊断报告,告知用户应用使用的资源是否存在浪费现象;只能分析离线SparkSQL应用,无法对交互式spark应用(如Zepplien、Hue等)给出资源评估和建议。
基于上述问题,现有技术中缺乏一种对全新提交的Spark应用的资源配比进行合理管控的解决方案。
发明内容
本发明的主要目的在于提出一种资源管理方法、装置、设备及计算机可读存储介质,旨在实现对全新提交的spark应用的资源配比进行合理管控。
为实现上述目的,本发明提供一种资源管理方法,所述资源管理方法包括如下步骤:
当通过spark应用运行大数据任务时,向预设的集群资源管理器申请所述spark应用可使用的最大资源值;
获取所述大数据任务在预设的不同计算阶段的task个数,取所述不同计算阶段的task个数的最大值;
根据所述task个数的最大值计算所述spark应用的实际资源总量值;
将所述实际资源总量值与所述spark应用可使用的最大资源值进行比较;
若所述实际资源总量值小于所述spark应用可使用的最大资源值,则限制所述spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值。
优选地,所述当通过spark应用运行大数据任务时,向预设的集群资源管理器申请所述spark应用可使用的最大资源值的步骤包括:
当通过spark应用运行大数据任务时,从预设的集群资源管理器中获取预先指定的与所述spark应用对应的资源队列的资源总量值;
将所述资源队列的资源总量值减去预设的永久应用所需占用的资源总量值,将相减结果乘以预设百分比,得到所述spark应用可使用的最大资源值;
向所述集群资源管理器申请计算得到的所述spark应用可使用的最大资源值。
优选地,所述获取所述大数据任务在预设的不同计算阶段的task个数,取所述不同计算阶段的task个数的最大值的步骤包括:
读取所述大数据任务的作业Job,从所述Job中过滤出所述大数据任务的数据输入阶段和非数据输入阶段;
分别获取所述大数据任务在所述数据输入阶段和所述非数据输入阶段的task个数,取所述数据输入阶段和所述非数据输入阶段的task个数的最大值。
优选地,所述分别获取所述大数据任务在所述数据输入阶段和所述非数据输入阶段的task个数,取所述数据输入阶段和所述非数据输入阶段的task个数的最大值的步骤包括:
获取与每个数据输入阶段对应的弹性分布式数据集RDD的分区数,将与每个数据输入阶段对应的所述RDD的分区数相加,得到所述大数据任务在所述数据输入阶段的第一task个数;
获取所述非数据输入阶段的个数,以及预设的与每个非数据输入阶段对应的分区数,将所述非数据输入阶段的个数乘以所述与每个非数据输入阶段对应的分区数,得到所述大数据任务在所述非数据输入阶段的第二task个数;
按照预设规则,计算所述非数据输入阶段的数据倾斜度,根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数;
取所述第一task个数、所述第二task个数和所述第三task个数中task个数的最大值。
优选地,所述按照预设规则,计算所述非数据输入阶段的数据倾斜度,根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数的步骤包括:
从所述非数据输入阶段中过滤出需要进行笛卡尔积操作或分组操作的阶段,并随机抽样出预设条待进行笛卡尔积操作或分组操作的数据;
从抽样出的数据中获取预先定义的关键字段,并获取所述关键字段的值,对所述关键字段的值进行去重,得到一个由去重后的所述关键字段的值形成的数列;
计算所述数列的标准差,将所述标准差作为所述非数据输入阶段的数据倾斜度;
根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数task3,其中task3=y+task2/σ(r),y表示所述数列中大于所述数列平均值的数据个数,task2表示所述第二task个数,σ(r)表示所述数据倾斜度。
优选地,所述实际资源总量值包括CPU个数和内存值,所述根据所述task个数的最大值计算所述spark应用的实际资源总量值的步骤包括:
将所述task个数的最大值作为所述实际资源总量值中的CPU个数,将所述task个数的最大值与预设比值的乘积作为所述实际资源总量值中的内存值。
优选地,所述限制所述spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值的步骤包括:
修改所述spark应用的最大执行器个数的值为p/c,其中p表示所述实际资源总量值中的CPU个数,c表示预设的执行器的CPU个数。
此外,为实现上述目的,本发明还提供一种资源管理装置,所述资源管理装置包括:
申请模块,用于当通过spark应用运行大数据任务时,向预设的集群资源管理器申请所述spark应用可使用的最大资源值;
获取模块,用于获取所述大数据任务在预设的不同计算阶段的task个数,取所述不同计算阶段的task个数的最大值;
计算模块,用于根据所述task个数的最大值计算所述spark应用的实际资源总量值;
比较模块,用于将所述实际资源总量值与所述spark应用可使用的最大资源值进行比较;
限制模块,用于若所述实际资源总量值小于所述spark应用可使用的最大资源值,则限制所述spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值。
优选地,所述申请模块还用于:
当通过spark应用运行大数据任务时,从预设的集群资源管理器中获取预先指定的与所述spark应用对应的资源队列的资源总量值;
将所述资源队列的资源总量值减去预设的永久应用所需占用的资源总量值,将相减结果乘以预设百分比,得到所述spark应用可使用的最大资源值;
向所述集群资源管理器申请计算得到的所述spark应用可使用的最大资源值。
优选地,所述获取模块还用于:
读取所述大数据任务的作业Job,从所述Job中过滤出所述大数据任务的数据输入阶段和非数据输入阶段;
分别获取所述大数据任务在所述数据输入阶段和所述非数据输入阶段的task个数,取所述数据输入阶段和所述非数据输入阶段的task个数的最大值。
优选地,所述获取模块还用于:
获取与每个数据输入阶段对应的弹性分布式数据集RDD的分区数,将与每个数据输入阶段对应的所述RDD的分区数相加,得到所述大数据任务在所述数据输入阶段的第一task个数;
获取所述非数据输入阶段的个数,以及预设的与每个非数据输入阶段对应的分区数,将所述非数据输入阶段的个数乘以所述与每个非数据输入阶段对应的分区数,得到所述大数据任务在所述非数据输入阶段的第二task个数;
按照预设规则,计算所述非数据输入阶段的数据倾斜度,根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数;
取所述第一task个数、所述第二task个数和所述第三task个数中task个数的最大值。
优选地,所述获取模块还用于:
从所述非数据输入阶段中过滤出需要进行笛卡尔积操作或分组操作的阶段,并随机抽样出预设条待进行笛卡尔积操作或分组操作的数据;
从抽样出的数据中获取预先定义的关键字段,并获取所述关键字段的值,对所述关键字段的值进行去重,得到一个由去重后的所述关键字段的值形成的数列;
计算所述数列的标准差,将所述标准差作为所述非数据输入阶段的数据倾斜度;
根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数task3,其中task3=y+task2/σ(r),y表示所述数列中大于所述数列平均值的数据个数,task2表示所述第二task个数,σ(r)表示所述数据倾斜度。
优选地,所述实际资源总量值包括CPU个数和内存值,所述计算模块还用于:
将所述task个数的最大值作为所述实际资源总量值中的CPU个数,将所述task个数的最大值与预设比值的乘积作为所述实际资源总量值中的内存值。
优选地,所述限制模块还用于:
修改所述spark应用的最大执行器个数的值为p/c,其中p表示所述实际资源总量值中的CPU个数,c表示预设的执行器的CPU个数。
此外,为实现上述目的,本发明还提供一种资源管理设备,所述资源管理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的资源管理程序,所述资源管理程序被所述处理器执行时实现如上所述的资源管理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有资源管理程序,所述资源管理程序被处理器执行时实现如上所述的资源管理方法的步骤。
本发明当通过spark应用运行大数据任务时,向预设的集群资源管理器申请所述spark应用可使用的最大资源值;获取所述大数据任务在预设的不同计算阶段的task个数,取所述不同计算阶段的task个数的最大值;根据所述task个数的最大值计算所述spark应用的实际资源总量值;将所述实际资源总量值与所述spark应用可使用的最大资源值进行比较;若所述实际资源总量值小于所述spark应用可使用的最大资源值,则限制所述spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值。通过上述方式,能够实时预估出spark应用运行大数据任务所需要使用的实际资源总量值,当该实际资源总量值小于spark应用向集群资源管理器申请的可使用的最大资源值时,限制spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值,如此使得spark应用不会占用其所需之外的资源,避免了资源浪费,从而本发明实现了对全新提交的spark应用的资源配比进行合理管控。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明资源管理方法第一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例资源管理设备可以是PC机或服务器设备。
如图1所示,该资源管理设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及资源管理程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的资源管理程序,并执行下述资源管理方法实施例中的操作。
基于上述硬件结构,提出本发明资源管理方法实施例。
参照图2,图2为本发明资源管理方法第一实施例的流程示意图,所述方法包括:
步骤S10,当通过spark应用运行大数据任务时,向预设的集群资源管理器申请所述spark应用可使用的最大资源值;
spark是一种尽量使用内存进行数据计算的分布式计算框架,sparkSQL是spark用于处理结构化数据的模块。目前,用户一般通过sparkSQL提交SQL(Structured QueryLanguage,结构化查询语言)进行离线计算,或通过交互式spark应用(如Zepplien、Hue等)提交SQL、Scala或Python代码进行交互式数据计算。在这个过程中,用户很难预料一个SQL可能需要分配多少资源,才能达到最佳资源配比,极端情况下,很多数据量上T级别的计算,如果不配给足够的资源,非常容易出现Out Of Memory,即Java虚拟机内存溢出,从而导致任务执行失败,不管是由于分配的资源不足导致任务执行失败,还是资源太少导致任务执行耗时太长,都是用户所不能接受的,但是任由用户超额分配资源又会使资源存在极大的浪费,拉低集群的性能表现。为此,本发明提出一种资源管理方法。
本发明资源管理方法应用于搭载有spark应用的资源管理设备。当资源管理设备通过spark应用运行大数据任务时,首先,向预设的集群资源管理器申请spark应用可使用的最大资源值,以完成spark应用的初始化。其中,spark应用可使用的最大资源值包括CPU个数和内存值。
具体地,上述步骤S10可以包括:当通过spark应用运行大数据任务时,从预设的集群资源管理器中获取预先指定的与所述spark应用对应的资源队列的资源总量值;将所述资源队列的资源总量值减去预设的永久应用所需占用的资源总量值,将相减结果乘以预设百分比,得到所述spark应用可使用的最大资源值;向所述集群资源管理器申请计算得到的所述spark应用可使用的最大资源值。
以使用Hadoop集群处理大数据任务为例,Hadoop是一个能够对大量数据进行分布式处理的软件框架,YARN是Hadoop中提供作业调度和集群资源管理的框架,在YARN提供的资源队列中,不同的资源队列对应于不同的spark应用,用户可以预先指定spark应用在YARN中对应的资源队列。在本发明实施例中,当资源管理设备通过spark应用运行大数据任务时,首先从集群资源管理器,即YARN中获取预先指定的与该spark应用对应的资源队列的资源总量值,然后,将该资源总量值减去预设的永久应用(如Spark Streaming应用、SparkThrift Server应用等)所需占用的资源总量值,得到相减结果,即剩余可用资源,考虑到剩余可用资源有部分可能被一些非永久应用占用,因此,需要将剩余可用资源乘以预设百分比,从而得到spark应用可使用的最大资源值,其中,预设百分比的大小可灵活设置。
比如,若spark应用对应的资源队列的资源总量值为200个CPU,400G内存,从中剔除预设的永久应用所需占用的资源总量值100个CPU,200G内存,得到剩余可用资源为100个CPU,200G内存,将该剩余可用资源乘以一个预设百分比50%,即得到spark应用可使用的最大资源值为50个CPU,100G。
在计算得到spark应用可使用的最大资源值后,即向集群资源管理器申请该计算得到的所述spark应用可使用的最大资源值,进而完成spark应用的初始化。
步骤S20,获取所述大数据任务在预设的不同计算阶段的task个数,取所述不同计算阶段的task个数的最大值;
该步骤中,首先获取spark应用的大数据任务在预设的不同计算阶段的task个数,然后取不同计算阶段的task个数的最大值,其中task为所述大数据任务的最小任务单元。
在一实施方式中,该步骤S20可以包括:读取所述大数据任务的作业Job,从所述Job中过滤出所述大数据任务的数据输入阶段和非数据输入阶段;分别获取所述大数据任务在所述数据输入阶段和所述非数据输入阶段的task个数,取所述数据输入阶段和所述非数据输入阶段的task个数的最大值。
具体地,预设的不同计算阶段可以包括数据输入阶段和非数据输入阶段,这里定义数据输入阶段为:直接从Hadoop、Hive(基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能)、DB等数据源读取数据的阶段,非数据输入阶段为:对从Hadoop、Hive、DB等数据源读取的数据进行处理的阶段。本实施例中,首先读取大数据任务的作业Job,然后从Job中过滤出大数据任务的数据输入阶段和非数据输入阶段,之后分别获取大数据任务在数据输入阶段和非数据输入阶段的task个数,并将数据输入阶段的task个数与非数据输入阶段的task个数进行比较,取数据输入阶段和非数据输入阶段的task个数的最大值。
步骤S30,根据所述task个数的最大值计算所述spark应用的实际资源总量值;
在本实施例中,实际资源总量值包括CPU个数和内存值,该步骤S30可以进一步包括:将所述task个数的最大值作为所述实际资源总量值中的CPU个数,将所述task个数的最大值与预设比值的乘积作为所述实际资源总量值中的内存值。
考虑到如果两个阶段不存在串行依赖,则可以并行执行,这样资源总量应该由不同计算阶段的task个数的最大值决定,而Spark规定:一个CPU(单核)同时只能执行一个task,因此,不同计算阶段的task个数的最大值(记为R)即可以作为实际资源总量中的CPU个数,即R=max(每个阶段的task个数)=实际资源总量中的CPU个数。
另外考虑到实际资源分配中,CPU与内存为固定比值,因此可以将task个数的最大值与预设比值的乘积作为实际资源总量值中的内存值。优选地,实际生产经验为1CPU:2G内存为最佳,因此这里通过不同计算阶段的task个数的最大值可以得到实际资源总量值为(R,2R),即R个CPU,2R(G)内存。
步骤S40,将所述实际资源总量值与所述spark应用可使用的最大资源值进行比较;
该步骤中,将上述计算得到的spark应用的实际资源总量值与之前申请到的spark应用可使用的最大资源值进行比较。
步骤S50,若所述实际资源总量值小于所述spark应用可使用的最大资源值,则限制所述spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值。
若实际资源总量值小于spark应用可使用的最大资源值,说明当前申请到的spark应用可使用的最大资源值过高,实际上并不需要这么多资源,为避免资源浪费,资源管理设备需限制spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为实际资源总量值。具体限制方式可以为:修改spark应用的最大执行器个数的值为p/c,其中p表示所述实际资源总量值中的CPU个数,c表示预设的执行器的CPU个数。
反之,若实际资源总量值大于或等于spark应用可使用的最大资源值,说明当前申请到的spark应用可使用的最大资源值不会造成资源浪费,此时无需对申请到的spark应用可使用的最大资源值做任何调整。
通过上述方式,能够实时预估出spark应用运行大数据任务所需要使用的实际资源总量值,当该实际资源总量值小于spark应用向集群资源管理器申请的可使用的最大资源值时,限制spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值,如此使得spark应用不会占用其所需之外的资源,避免了资源浪费,从而本发明实现了对全新提交的spark应用的资源配比进行合理管控。
进一步地,基于上述第一实施例,提出本发明资源管理方法第二实施例。在本实施例中,所述分别获取所述大数据任务在所述数据输入阶段和所述非数据输入阶段的task个数,取所述数据输入阶段和所述非数据输入阶段的task个数的最大值的步骤可以包括:
获取与每个数据输入阶段对应的弹性分布式数据集RDD的分区数,将与每个数据输入阶段对应的所述RDD的分区数相加,得到所述大数据任务在所述数据输入阶段的第一task个数;
获取所述非数据输入阶段的个数,以及预设的与每个非数据输入阶段对应的分区数,将所述非数据输入阶段的个数乘以所述与每个非数据输入阶段对应的分区数,得到所述大数据任务在所述非数据输入阶段的第二task个数;
按照预设规则,计算所述非数据输入阶段的数据倾斜度,根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数;
取所述第一task个数、所述第二task个数和所述第三task个数中task个数的最大值。
具体地,在数据输入阶段,需要直接从Hadoop、Hive、DB等数据源读取数据,形成弹性分布式数据集RDD(Resilient Distributed Datasets)。RDD在计算的时候,每个分区都会运行一个task,所以RDD的分区数决定了总的task数,此时,获取每个数据输入阶段对应的弹性分布式数据集RDD的分区数,并将获取到的分区数相加,即可得到大数据任务在所述数据输入阶段的第一task个数,表示为:task1=Is(1)+Is(2)+…+Is(n),其中,Is(1)为第一个数据输入阶段的分区个数,IS(2)为第二个数据输入阶段的分区个数,Is(n)为第n个数据输入阶段的个数。
对于非数据输入阶段,获取非数据输入阶段的个数,以及预设的与每个非数据输入阶段对应的分区数,然后将两者相乘,得到大数据任务在所述非数据输入阶段的第二task个数,表示为:task2=I*S,其中,I为所有非数据输入阶段的个数,S为预设的与每个非数据输入阶段对应的分区数。
此外,考虑到非数据输入阶段是用户计算代码的核心逻辑,这些代码一般伴随着一些笛卡尔积操作和分组操作。笛卡尔积操作和分组操作,一般都会伴随着数据倾斜(绝大部分的相同笛卡尔积字段和分组字段的数据被分配到一个或少数几个分区里,造成这一个或少数几个分区的任务计算数据量非常庞大且繁忙,而其他的分区的任务计算数据量少且空闲),为了解决这个问题,我们定义出倾斜度的概念。倾斜度,即造成数据倾斜的严重程度,倾斜度越高,即数据倾斜越严重,少数几个处理绝大部分数据量的任务很容易因为处理的数据量大,造成Out Of Memory,即Java虚拟机内存溢出,导致整个任务执行失败,或执行时间太长而增加整个大数据任务的执行时间。
本实施例中,可以按照预设规则计算非数据输入阶段的数据倾斜度,然后根据该数据倾斜度计算大数据任务在非数据输入阶段的第三task个数,最后,取第一task个数、所述第二task个数和所述第三task个数中task个数的最大值。
进一步地,在一实施方式中,所述按照预设规则,计算所述非数据输入阶段的数据倾斜度,根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数的步骤可以包括:
从所述非数据输入阶段中过滤出需要进行笛卡尔积操作或分组操作的阶段,并随机抽样出预设条待进行笛卡尔积操作或分组操作的数据;从抽样出的数据中获取预先定义的关键字段,并获取所述关键字段的值,对所述关键字段的值进行去重,得到一个由去重后的所述关键字段的值形成的数列;计算所述数列的标准差,将所述标准差作为所述非数据输入阶段的数据倾斜度;根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数task3,其中task3=y+task2/σ(r),y表示所述数列中大于所述数列平均值的数据个数,task2表示所述第二task个数,σ(r)表示所述数据倾斜度。
具体地,首先从所述非数据输入阶段中过滤出需要进行笛卡尔积操作或分组操作的阶段,并随机抽样出预设条(如100条)待进行笛卡尔积操作或分组操作的数据;然后从抽样出的数据中获取预先定义的关键字段,并获取所述关键字段的值,对所述关键字段的值进行去重,得到一个由去重后的所述关键字段的值形成的数列,比如关键字段为“年龄”,对关键字段的值进行去重后得到一个由若干个不同岁数组成的数列:10,11,12,13,14,15;之后,计算该数列的标准差σ(r),然后将σ(r)作为非数据输入阶段的数据倾斜度,其中标准差的具体计算公式可参照现有技术。
考虑到如果出现严重的数据倾斜(倾斜度值特别大),非数据输入阶段的实际计算时间是由倾斜最严重的那些任务决定的,此时为满足资源需求,计算大数据任务在非数据输入阶段的第三task个数task3,其中task3=y+task2/σ(r),y表示数列中大于数列平均值的数据个数,task2表示第二task个数,σ(r)表示数据倾斜度。该计算方式考虑了数据倾斜对运行大数据任务所需资源的影响,是以上述第二task个数为基础的一个优化。
需要说明的是,本发明实施例计算数据倾斜度还可以采用其他算法,比如回归算法,该算法主要包括:1、数据的读入:解析出Job的所有Sparktransform算法(即Spark转换算法,可以用于执行任意的RDD到RDD的转换操作)因子;2、数据的清洗和特征提取:对采样的数据进行预处理和加工,选择特征变量;3、数据的训练:使用逻辑回归模型、决策树模型等进行训练,对模型的有效性进行评估,并将模型进行上线;4、预测Job的数据倾斜度,调用训练好的模型对新的Job进行预测,其中模型能够根据最新的变化自动更新。
在分别计算得到第一task个数task1、第二task个数task2和第三task个数task3之后,比较task1、task2和task3,取三者之中的最大值进行spark应用的实际资源总量值的预测。
本实施例通过上述方式,能够实时预估出spark应用运行大数据任务所需要使用的实际资源总量值,且由于考虑了数据倾斜对运行大数据任务所需资源的影响,因此最终得到的spark应用的实际资源总量值符合实际需求,从而有利于对全新提交的spark应用的资源配比进行合理管控。
本发明还提供一种资源管理装置。本发明资源管理装置包括:
申请模块,用于当通过spark应用运行大数据任务时,向预设的集群资源管理器申请所述spark应用可使用的最大资源值;
获取模块,用于获取所述大数据任务在预设的不同计算阶段的task个数,取所述不同计算阶段的task个数的最大值;
计算模块,用于根据所述task个数的最大值计算所述spark应用的实际资源总量值;
比较模块,用于将所述实际资源总量值与所述spark应用可使用的最大资源值进行比较;
限制模块,用于若所述实际资源总量值小于所述spark应用可使用的最大资源值,则限制所述spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值。
进一步地,所述申请模块还用于:
当通过spark应用运行大数据任务时,从预设的集群资源管理器中获取预先指定的与所述spark应用对应的资源队列的资源总量值;
将所述资源队列的资源总量值减去预设的永久应用所需占用的资源总量值,将相减结果乘以预设百分比,得到所述spark应用可使用的最大资源值;
向所述集群资源管理器申请计算得到的所述spark应用可使用的最大资源值。
进一步地,所述获取模块还用于:
读取所述大数据任务的作业Job,从所述Job中过滤出所述大数据任务的数据输入阶段和非数据输入阶段;
分别获取所述大数据任务在所述数据输入阶段和所述非数据输入阶段的task个数,取所述数据输入阶段和所述非数据输入阶段的task个数的最大值。
进一步地,所述获取模块还用于:
获取与每个数据输入阶段对应的弹性分布式数据集RDD的分区数,将与每个数据输入阶段对应的所述RDD的分区数相加,得到所述大数据任务在所述数据输入阶段的第一task个数;
获取所述非数据输入阶段的个数,以及预设的与每个非数据输入阶段对应的分区数,将所述非数据输入阶段的个数乘以所述与每个非数据输入阶段对应的分区数,得到所述大数据任务在所述非数据输入阶段的第二task个数;
按照预设规则,计算所述非数据输入阶段的数据倾斜度,根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数;
取所述第一task个数、所述第二task个数和所述第三task个数中task个数的最大值。
进一步地,所述获取模块还用于:
从所述非数据输入阶段中过滤出需要进行笛卡尔积操作或分组操作的阶段,并随机抽样出预设条待进行笛卡尔积操作或分组操作的数据;
从抽样出的数据中获取预先定义的关键字段,并获取所述关键字段的值,对所述关键字段的值进行去重,得到一个由去重后的所述关键字段的值形成的数列;
计算所述数列的标准差,将所述标准差作为所述非数据输入阶段的数据倾斜度;
根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数task3,其中task3=y+task2/σ(r),y表示所述数列中大于所述数列平均值的数据个数,task2表示所述第二task个数,σ(r)表示所述数据倾斜度。
进一步地,所述实际资源总量值包括CPU个数和内存值,所述计算模块还用于:
将所述task个数的最大值作为所述实际资源总量值中的CPU个数,将所述task个数的最大值与预设比值的乘积作为所述实际资源总量值中的内存值。
进一步地,所述限制模块还用于:
修改所述spark应用的最大执行器个数的值为p/c,其中p表示所述实际资源总量值中的CPU个数,c表示预设的执行器的CPU个数。
上述各程序模块所执行的操作可参照本发明资源管理方法实施例,此处不再赘述。
本发明还提供一种资源管理设备。
本发明资源管理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的资源管理程序,所述资源管理程序被所述处理器执行时实现如上所述的资源管理方法的步骤。
其中,在所述处理器上运行的资源管理程序被执行时所实现的方法可参照本发明资源管理方法各个实施例,此处不再赘述。
本发明还提供一种计算机可读存储介质。
本发明计算机可读存储介质上存储有资源管理程序,所述资源管理程序被处理器执行时实现如上所述的资源管理方法的步骤。
其中,在所述处理器上运行的资源管理程序被执行时所实现的方法可参照本发明资源管理方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (16)
1.一种资源管理方法,其特征在于,所述资源管理方法包括如下步骤:
当通过spark应用运行大数据任务时,向预设的集群资源管理器申请所述spark应用可使用的最大资源值;
获取所述大数据任务在预设的不同计算阶段的task个数,取所述不同计算阶段的task个数中的最大值;
根据所述task个数中的最大值计算所述spark应用的实际资源总量值;
将所述实际资源总量值与所述spark应用可使用的最大资源值进行比较;
若所述实际资源总量值小于所述spark应用可使用的最大资源值,则限制所述spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值。
2.如权利要求1所述的资源管理方法,其特征在于,所述当通过spark应用运行大数据任务时,向预设的集群资源管理器申请所述spark应用可使用的最大资源值的步骤包括:
当通过spark应用运行大数据任务时,从预设的集群资源管理器中获取预先指定的与所述spark应用对应的资源队列的资源总量值;
将所述资源队列的资源总量值减去预设的永久应用所需占用的资源总量值,将相减结果乘以预设百分比,得到所述spark应用可使用的最大资源值;
向所述集群资源管理器申请计算得到的所述spark应用可使用的最大资源值。
3.如权利要求1所述的资源管理方法,其特征在于,所述获取所述大数据任务在预设的不同计算阶段的task个数,取所述不同计算阶段的task个数中的最大值的步骤包括:
读取所述大数据任务的作业Job,从所述Job中过滤出所述大数据任务的数据输入阶段和非数据输入阶段;
分别获取所述大数据任务在所述数据输入阶段和所述非数据输入阶段的task个数,取所述数据输入阶段和所述非数据输入阶段的task个数的最大值。
4.如权利要求3所述的资源管理方法,其特征在于,所述分别获取所述大数据任务在所述数据输入阶段和所述非数据输入阶段的task个数,取所述数据输入阶段和所述非数据输入阶段的task个数的最大值的步骤包括:
获取与每个数据输入阶段对应的弹性分布式数据集RDD的分区数,将与每个数据输入阶段对应的所述RDD的分区数相加,得到所述大数据任务在所述数据输入阶段的第一task个数;
获取所述非数据输入阶段的个数,以及预设的与每个非数据输入阶段对应的分区数,将所述非数据输入阶段的个数乘以所述与每个非数据输入阶段对应的分区数,得到所述大数据任务在所述非数据输入阶段的第二task个数;
按照预设规则,计算所述非数据输入阶段的数据倾斜度,根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数;
取所述第一task个数、所述第二task个数和所述第三task个数中task个数的最大值。
5.如权利要求4所述的资源管理方法,其特征在于,所述按照预设规则,计算所述非数据输入阶段的数据倾斜度,根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数的步骤包括:
从所述非数据输入阶段中过滤出需要进行笛卡尔积操作或分组操作的阶段,并随机抽样出预设条待进行笛卡尔积操作或分组操作的数据;
从抽样出的数据中获取预先定义的关键字段,并获取所述关键字段的值,对所述关键字段的值进行去重,得到一个由去重后的所述关键字段的值形成的数列;
计算所述数列的标准差,将所述标准差作为所述非数据输入阶段的数据倾斜度;
根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数task3,其中task3=y+task2/σ(r),y表示所述数列中大于所述数列平均值的数据个数,task2表示所述第二task个数,σ(r)表示所述数据倾斜度。
6.如权利要求1至5中任一项所述的资源管理方法,其特征在于,所述实际资源总量值包括CPU个数和内存值,所述根据所述task个数的最大值计算所述spark应用的实际资源总量值的步骤包括:
将所述task个数的最大值作为所述实际资源总量值中的CPU个数,将所述task个数的最大值与预设比值的乘积作为所述实际资源总量值中的内存值。
7.如权利要求6所述的资源管理方法,其特征在于,所述限制所述spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值的步骤包括:
修改所述spark应用的最大执行器个数的值为p/c,其中p表示所述实际资源总量值中的CPU个数,c表示预设的执行器的CPU个数。
8.一种资源管理装置,其特征在于,所述资源管理装置包括:
申请模块,用于当通过spark应用运行大数据任务时,向预设的集群资源管理器申请所述spark应用可使用的最大资源值;
获取模块,用于获取所述大数据任务在预设的不同计算阶段的task个数,取所述不同计算阶段的task个数中的最大值;
计算模块,用于根据所述task个数中的最大值计算所述spark应用的实际资源总量值;
比较模块,用于将所述实际资源总量值与所述spark应用可使用的最大资源值进行比较;
限制模块,用于若所述实际资源总量值小于所述spark应用可使用的最大资源值,则限制所述spark应用能够向所述集群资源管理器申请到的可使用的最大资源值为所述实际资源总量值。
9.如权利要求8所述的资源管理装置,其特征在于,所述申请模块还用于:
当通过spark应用运行大数据任务时,从预设的集群资源管理器中获取预先指定的与所述spark应用对应的资源队列的资源总量值;
将所述资源队列的资源总量值减去预设的永久应用所需占用的资源总量值,将相减结果乘以预设百分比,得到所述spark应用可使用的最大资源值;
向所述集群资源管理器申请计算得到的所述spark应用可使用的最大资源值。
10.如权利要求8所述的资源管理装置,其特征在于,所述获取模块还用于:
读取所述大数据任务的作业Job,从所述Job中过滤出所述大数据任务的数据输入阶段和非数据输入阶段;
分别获取所述大数据任务在所述数据输入阶段和所述非数据输入阶段的task个数,取所述数据输入阶段和所述非数据输入阶段的task个数的最大值。
11.如权利要求10所述的资源管理装置,其特征在于,所述获取模块还用于:
获取与每个数据输入阶段对应的弹性分布式数据集RDD的分区数,将与每个数据输入阶段对应的所述RDD的分区数相加,得到所述大数据任务在所述数据输入阶段的第一task个数;
获取所述非数据输入阶段的个数,以及预设的与每个非数据输入阶段对应的分区数,将所述非数据输入阶段的个数乘以所述与每个非数据输入阶段对应的分区数,得到所述大数据任务在所述非数据输入阶段的第二task个数;
按照预设规则,计算所述非数据输入阶段的数据倾斜度,根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数;
取所述第一task个数、所述第二task个数和所述第三task个数中task个数的最大值。
12.如权利要求11所述的资源管理装置,其特征在于,所述获取模块还用于:
从所述非数据输入阶段中过滤出需要进行笛卡尔积操作或分组操作的阶段,并随机抽样出预设条待进行笛卡尔积操作或分组操作的数据;
从抽样出的数据中获取预先定义的关键字段,并获取所述关键字段的值,对所述关键字段的值进行去重,得到一个由去重后的所述关键字段的值形成的数列;
计算所述数列的标准差,将所述标准差作为所述非数据输入阶段的数据倾斜度;
根据所述数据倾斜度计算所述大数据任务在所述非数据输入阶段的第三task个数task3,其中task3=y+task2/σ(r),y表示所述数列中大于所述数列平均值的数据个数,task2表示所述第二task个数,σ(r)表示所述数据倾斜度。
13.如权利要求8至12中任一项所述的资源管理装置,其特征在于,所述实际资源总量值包括CPU个数和内存值,所述计算模块还用于:
将所述task个数的最大值作为所述实际资源总量值中的CPU个数,将所述task个数的最大值与预设比值的乘积作为所述实际资源总量值中的内存值。
14.如权利要求13所述的资源管理装置,其特征在于,所述限制模块还用于:
修改所述spark应用的最大执行器个数的值为p/c,其中p表示所述实际资源总量值中的CPU个数,c表示预设的执行器的CPU个数。
15.一种资源管理设备,其特征在于,所述资源管理设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的资源管理程序,所述资源管理程序被所述处理器执行时实现如权利要求1至7中任一项所述的资源管理方法的步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有资源管理程序,所述资源管理程序被处理器执行时实现如权利要求1至7中任一项所述的资源管理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811629159.4A CN109739649B (zh) | 2018-12-28 | 2018-12-28 | 资源管理方法、装置、设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811629159.4A CN109739649B (zh) | 2018-12-28 | 2018-12-28 | 资源管理方法、装置、设备及计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109739649A CN109739649A (zh) | 2019-05-10 |
CN109739649B true CN109739649B (zh) | 2023-07-18 |
Family
ID=66361945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811629159.4A Active CN109739649B (zh) | 2018-12-28 | 2018-12-28 | 资源管理方法、装置、设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109739649B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113051064B (zh) * | 2019-12-26 | 2024-05-24 | 中移(上海)信息通信科技有限公司 | 任务调度方法、装置、设备及存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR3037417A1 (fr) * | 2015-06-09 | 2016-12-16 | Orange | Procede et systeme de determination d'une configuration de serveurs cible pour un deploiement d'une application logicielle |
CN104991830B (zh) * | 2015-07-10 | 2018-01-02 | 山东大学 | 基于服务等级协议的yarn资源分配和节能调度方法及系统 |
CN105591809B (zh) * | 2015-10-12 | 2019-04-05 | 新华三技术有限公司 | 一种资源分配方法和装置 |
CN107466104A (zh) * | 2016-06-03 | 2017-12-12 | 中兴通讯股份有限公司 | 一种资源请求方法、装置和终端 |
CN107291550B (zh) * | 2017-06-22 | 2019-11-12 | 华中科技大学 | 一种针对迭代应用的Spark平台资源动态分配方法及系统 |
CN108415772B (zh) * | 2018-02-12 | 2022-02-18 | 腾讯科技(深圳)有限公司 | 一种基于容器的资源调整方法、装置和介质 |
CN108762921B (zh) * | 2018-05-18 | 2019-07-12 | 电子科技大学 | 一种Spark集群系统的在线优化分区的任务调度方法及装置 |
-
2018
- 2018-12-28 CN CN201811629159.4A patent/CN109739649B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN109739649A (zh) | 2019-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10452441B1 (en) | Determining an allocation of computing resources for a job | |
US11989647B2 (en) | Self-learning scheduler for application orchestration on shared compute cluster | |
US9715408B2 (en) | Data-aware workload scheduling and execution in heterogeneous environments | |
US8595732B2 (en) | Reducing the response time of flexible highly data parallel task by assigning task sets using dynamic combined longest processing time scheme | |
US20190325304A1 (en) | Deep Reinforcement Learning for Workflow Optimization | |
US20240036937A1 (en) | Workload placement for virtual gpu enabled systems | |
CN114072766A (zh) | 用于数字劳动力智能编排的系统和方法 | |
CN108205469B (zh) | 一种基于MapReduce的资源分配方法及服务器 | |
US20200387584A1 (en) | Dynamic Optimization of Software License Allocation Using Machine Learning-Based User Clustering | |
KR20190081306A (ko) | 빅데이터 분석 소프트웨어에 대한 자원 할당 방법, 상기 방법을 이용하는 가상화 자원 할당 장치 | |
CN114896068A (zh) | 资源分配方法、资源分配装置、电子设备及存储介质 | |
US20200150957A1 (en) | Dynamic scheduling for a scan | |
CN113485833B (zh) | 资源预测方法和装置 | |
CN109739649B (zh) | 资源管理方法、装置、设备及计算机可读存储介质 | |
CN114968567A (zh) | 用于分配计算节点的计算资源的方法、装置和介质 | |
EP3274823A1 (en) | Category based execution scheduling | |
CN112463334B (zh) | 一种训练任务排队原因分析方法、系统、设备以及介质 | |
US9378061B2 (en) | Method for prioritizing tasks queued at a server system | |
CN111625352A (zh) | 调度方法、装置及存储介质 | |
Marinho et al. | LABAREDA: a predictive and elastic load balancing service for cloud-replicated databases | |
CN109189581B (zh) | 一种作业调度方法和装置 | |
CN117349775B (zh) | 一种面向集群计算的异常子任务识别方法及装置 | |
Janardhanan et al. | Analysis and modeling of resource management overhead in Hadoop YARN Clusters | |
CN109542617A (zh) | 系统资源的处理方法及装置 | |
CN117992198B (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 |