对并行运算进行性能消耗优化分析的方法及装置
技术领域
本申请涉及大数据技术领域,尤其涉及一种对并行运算进行性能消耗优化分析的方法及装置。
背景技术
在目前大数据应用的环境下,如何降本增效成了企业日益关系的议题,每一台物理机的成本都比较高昂,在动辄几个亿的研发成本中,设备的成本费用,往往是居高不下,并且随着业务方面的迭代更新,设备需求量也在不断的扩大,针对这方面的成本管控,成了唯一能有效抑制成本的特殊手段,但是如何降低机器成本,满足当前的业务计算需求,是当今企业都共同面临的一大困难。
现阶段,针对计算资源的使用管控,目前都是人工干预,简单粗暴的进行作业计算资源最大值限制,对申请资源进行限制,对参数限制,对使用时段进行限制,然而往往部分重要核心的计算任务,因为不满足当前的特殊限制,导致错过了为业务决策提供重要参考的时机。
现有的人工干预计算作业执行的方法,由于平台计算作业数量较多,无法做到每日、每时的实时监控,并且无法将计算作业进行系统性的性能消耗分析,并且提供针对每个任务量身定制化的优化服务。往往针对个别任务进行优化,无法从平台整体上进行计算作业性能上的提升,无法为企业做到真正的降本增效。
针对相关技术中存在的诸多技术问题,目前尚未提供有效的解决方案。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请提供了一种对并行运算进行性能消耗优化分析的方法及装置。
第一方面,本申请提供了一种对并行运算进行性能消耗优化分析的方法,包括:
对并行运算任务数据执行数据切分操作,得到至少两个子数据块;
确定对所述子数据块执行的并行处理操作所对应的性能消耗信息;
根据所述性能消耗信息分析得到所述并行运算任务数据对应的目标性能信息;
根据所述目标性能信息确定并行运算对应的性能优化策略。
可选的,如前述的方法,所述根据所述目标性能信息确定并行运算对应的性能优化策略,包括:
确定所述数据切分操作对应的物理内存使用信息;
根据所述物理内存使用信息确定物理内存目标值;
根据所述物理内存目标值与所述目标性能信息确定并行运算对应的性能优化策略。
可选的,如前述的方法,所述确定所述数据切分操作对应的物理内存使用信息,包括:
确定与每个所述子数据块对应的所述数据切分操作对物理内存进行使用时的内存使用峰值,最小内存使用值以及平均内存使用值;
根据所有所述内存使用峰值中数值最大的内存使用峰值,得到分配给所述数据切分操作的切分内存使用值。
可选的,如前述的方法,在所述确定对所述子数据块执行的并行处理操作所对应的性能消耗信息之前,还包括:
确定所述子数据块将数据形式转换后的中间数据进行暂存时溢出缓存区的最大溢出数据量;其中,所述缓存区为物理内存中用于缓存所述转换后子数据块的区域;
根据所述最大溢出数据量以及所述缓存区的大小得到对应的实际溢出比例;
根据所述实际溢出比例以及预设的缓冲区设置策略,确定所述缓冲区的使用上限阈值;以在所述缓冲区中缓存的数据量超过所述使用上限阈值后,将所述缓冲区中缓存的数据写入磁盘中。
可选的,如前述的方法,所述确定对所述子数据块执行的并行处理操作所对应的性能消耗信息,包括:
确定各个所述子数据块执行存储操作时采用的处理线程;其中,所述处理线程至少包括两个;
分别确定各个所述处理线程在对所述子数据块执行所述存储操作时的数据处理信息;
根据所述数据处理信息得到所述性能消耗信息。
可选的,如前述的方法,所述分别确定各个所述处理线程在对所述子数据块执行所述存储操作时的数据处理信息,包括:
获取各个所述处理线程执行所述存储操作时的线程数据处理量;
确定各个所述线程数据处理量与所述子数据块之间的数据量关系;
当存在超过预设的差量阈值的所述数据量关系时,判断所述处理线程存在数据倾斜,并得到数据倾斜信息。
可选的,如前述的方法,
所述分别确定各个所述处理线程在对所述子数据块执行所述存储操作时的数据处理信息,还包括:
获取各个所述处理线程进行所述存储操作时对应的处理时长;
所述根据所述目标性能信息确定并行运算对应的性能优化策略,包括:
获取各个所述处理线程在完成所述存储操作之后,进行数据清空时对应的垃圾回收耗时;
在所述垃圾回收耗时与所述处理时长之间的差值满足预设要求时,生成对垃圾收集器进行增加内存的内存增加信息;其中,所述垃圾收集器用于执行数据清空操作。
可选的,如前述的方法,
所述分别确定各个所述处理线程在对所述子数据块执行所述存储操作时的数据处理信息,包括:
获取各个所述处理线程进行所述存储操作时的第一时长信息;
所述根据所述目标性能信息确定并行运算对应的性能优化策略,包括:
在所述第一时长信息超过预设的第一时长上限时,获取所述处理线程拉取得到所有中间数据的第二时长信息;所述中间数据为所述子数据块中的数据进行数据形式转换后得到;
在所述第二时长信息超过预设的第二时长上限时,根据所述子数据块单位时间进行数据形式转换的单位数据量以及所述处理线程单位时长数据拉取量,确定开始对所述中间数据进行拉取时所述子数据块中的数据完成数据形式转换的转换进度。
可选的,如前述的方法,所述对并行运算任务数据执行数据切分操作,得到至少两个子数据块,包括:
采集得到计算作业任务日志;
根据预设的关键字,对所述计算作业任务日志进行拆解得到多个SQL执行逻辑;
对所述SQL执行逻辑进行解析,得到对应的至少一个SQL可执行内容;
根据所有所述SQL可执行内容得到并行运算任务数据;
确定所述并行运算任务数据的数据总量;
根据所述数据总量以及预设的切分策略,对所述并行运算任务数据执行数据切分操作,得到至少两个所述子数据块。
第二方面,本申请提供了一种对并行运算作业进行性能消耗优化的数据处理装置,其特征在于,包括:
切分模块,用于对并行运算任务数据执行数据切分操作,得到至少两个子数据块;
确定模块,用于确定对所述子数据块执行的并行处理操作所对应的性能消耗信息;
分析模块,用于根据所述性能消耗信息分析得到所述并行运算任务数据对应的目标性能信息;
策略获取模块,用于根据所述目标性能信息确定并行运算对应的性能优化策略。
第三方面,本申请提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,所述处理器、通信接口和存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行所述计算机程序时,实现如前述任一项所述的处理方法。
第四方面,本申请提供了一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如前述任一项所述的处理方法。
本申请实施例提供了一种对并行运算进行性能消耗优化分析的方法及装置,其中方法包括:对并行运算任务数据执行数据切分操作,得到至少两个子数据块;确定对所述子数据块执行的并行处理操作所对应的性能消耗信息;根据所述性能消耗信息分析得到所述并行运算任务数据对应的目标性能信息;根据所述目标性能信息确定并行运算对应的性能优化策略。本申请实施例提供的上述技术方案与现有技术相比具有如下优点:可以通过实时对并行运算任务数据进行数据分析,能够深入的了解该数据对应任务的执行运行情况,进行给出合理的、规范化的性能优化策略提示;同时,当存在多个任务,可以分别对每个任务进行分析,确保每一个任务都能进行有效的优化;进而为企业做到真正的降本增效。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种对并行运算进行性能消耗优化分析的方法的流程图;
图2为本申请另一实施例提供的一种对并行运算进行性能消耗优化分析的方法的流程图;
图3为本申请另一实施例提供的一种对并行运算进行性能消耗优化分析的方法的流程图;
图4为本申请另一实施例提供的一种对并行运算进行性能消耗优化分析的方法的流程图;
图5为本申请另一实施例提供的一种对并行运算进行性能消耗优化分析的方法的流程图;
图6为本申请实施例提供的一种对并行运算进行性能消耗优化分析的装置的框图;
图7为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的一种对并行运算进行性能消耗优化分析的方法,包括如下所述步骤S1至S4:
步骤S1.对并行运算任务数据执行数据切分操作,得到至少两个子数据块。
具体的,并行运算任务数据可以是用于进行作业的数据,作业(job)是计算机操作者(或是一个叫做作业调度器的程序)交给操作系统的执行单位。作业包括程序、相应的数据和作业说明书。可选的,并行运算任务数据可以是通过日志文件进行解析得到,在计算机中,日志文件是记录在操作系统或其他软件运行中发生的事件或在通信软件的不同用户之间的消息的文件。记录是保持日志的行为。在最简单的情况下,消息被写入单个日志文件。
子数据块,则是根据并行运算任务数据切分得到的部分数据;且一般的,并行运算任务数据等于所有子数据块的总和。
并行运算任务数据进行切分,进一步的,在切分时,可以通过一个进行切分,也可以通过多个进程同时进行切分;通过切分得到多个子数据块可以便于对不同的数据进行同步处理,以提高处理效率。
可选的,可以是通过MapReduce操作的map阶段实现切分处理;其中,MapReduce操作分为两个阶段,即map阶段和reduce阶段。
map阶段即映射阶段,该阶段主要负责对数据进行切分处理,reduce阶段即归约阶段,也就是在map阶段的处理结果上进行汇总。
步骤S2.确定对子数据块执行的并行处理操作所对应的性能消耗信息。
具体的,并行处理操作为对子数据块进行处理对应的操作,可选的,当进行MapReduce操作时,在reduce阶段对各个子数据并行处理操作;可选的,可以是每个子数据块都单独通过一线程(即一个reduce)进行处理,也可以是设置多个线程,每个线程对其中的一个或多个子数据块依次进行处理。
只要是通过计算设备进行数据处理,都会占用计算资源,因此可以得到并行处理操作所对应的性能消耗信息;性能消耗信息可以包括对计算资源的占用情况,例如:CPU资源、内存资源、硬盘资源和网络资源。
步骤S3.根据性能消耗信息分析得到并行运算任务数据对应的目标性能信息。
具体的,目标性能信息是根据性能消耗信息得到的适用于并行运算任务数据的计算资源配置的信息。当性能消耗信息表征存在性能过剩时,则可降低对应的计算资源配置,当性能不足以支撑数据处理时,则需要对其分配更多的计算资源;据此得到目标性能信息。
步骤S4.根据目标性能信息确定并行运算对应的性能优化策略。
具体的,性能优化策略可以为根据目标性能信息以及当前性能信息得到的需要进行优化的项目(举例的:内存)以及具体参数(举例的:需要在当前基础上增加一倍等等);进行同一任务的作业时,由于任务的类型都是相似的,因此作业产生的日志内容也都是大致相同的,因此只要对一个日志内容进行性能优化后,再通过该优化后的资源配置,也可以稳定处理该类任务作业产生的其它日志内容。
可选的,实现本实施例方法的装置可以根据目标性能信息,自动进行优化,并且将目标性能信息及需要进行优化涉及的内容,在系统中通知该计算作业负责人,并且将该作业相关优化内容,进行指导性的建议提示,如该计算作业负责人同意,此计算作业内容将变更至上线状态,如不同同意该作业优化升级至上线,系统将提供计算作业执行的map、reduce阶段的执行情况及性能日志进行展示,让用户自行判断处理。
此外,还可以自动生成计算作业性能消耗分析结果报告,包括优化项及目标性能信息等等,用户通过最终计算作业性能分析报告也可看到计算作业的性能消耗结果及待优化项。
同时,采用本实施例中的方法,可以通过实时分析日志得到的并行运算任务数据进行数据分析,能够深入的了解该任务的执行运行情况,进行给出合理的、规范化的性能优化策略提示;同时,当平台中存在多个任务,可以分别对每个任务进行分析,确保每一个任务都能进行有效的优化;进而为企业做到真正的降本增效。
如图2所示,在一些实施例中,如前述的方法,所述步骤S4根据目标性能信息确定并行运算对应的性能优化策略,包括如下所述步骤S411至S413:
步骤S411.确定数据切分操作对应的物理内存使用信息。
具体的,可以通过map阶段中的Hadoop实现该数据切分操作,一般的,该数据切分操作也可称为输入分片(input split)或简称“分片”。Hadoop为每一个分片构建一个map任务,并由该任务来运行用户自定义的map函数从而处理分片中的每条记录。在进行切分时,会得到进行切分的日志,一般的,日志中会记录对物理内存的使用信息,因此可以通过该日志得到在执行数据切分操作时对应的物理内存使用信息。
步骤S412.根据物理内存使用信息确定物理内存目标值。
具体的,根据物理内存使用信息中可以包括:内存使用的变化情况;因此,可以得到是否存在物理内存是被完全使用或者物理内存空闲过多的情况;物理内存目标值,则是根据物理内存使用信息进行分析得到的适用于该任务的数值;举例来说:当物理内存被完全使用时,则物理内存目标值可以是现有的两倍;当物理内存空闲过多,则将最大的使用值作为物理内存目标值。
步骤S413.根据物理内存目标值与目标性能信息确定并行运算对应的性能优化策略。
具体的,在得到物理内存目标值之后,即可结合目标性能信息确定并行运算对应的性能优化策略。
如图3所示,在一些实施例中,如前述的方法,步骤S41确定数据切分操作对应的物理内存使用信息,包括如下所述步骤S4111和S4112:
步骤S4111.确定与每个子数据块对应的数据切分操作对物理内存进行使用时的内存使用峰值,最小内存使用值以及平均内存使用值。
具体的,在每次切分得到一个子数据块对应的数据切分操作,都会得到一个物理内存使用信息,且该物理内存使用信息可以是内存使用变化值,因此可以从中获取对物理内存进行使用时的内存使用峰值,最小内存使用值以及平均内存使用值。
步骤S4112.根据所有内存使用峰值中数值最大的内存使用峰值,得到分配给数据切分操作的切分内存使用值。
具体的,在确定切分得到每个子数据块的切分操作所对应的内存使用峰值,最小内存使用值以及平均内存使用值之后,即可在所有的内存使用峰值中确定内存使用量最大的内存使用峰值,并根据最大的内存使用峰值作为切分内存使用值。
如图4所示,在一些实施例中,如前述的方法,所述步骤S2确定对子数据块执行的并行处理操作所对应的性能消耗信息之前,还包括如下所述步骤S211至S213:
步骤S211.确定子数据块将数据形式转换后的中间数据进行暂存时溢出缓存区的最大溢出数据量;其中,缓存区为物理内存中用于缓存转换后子数据块的区域。
具体的,以MapReduce模型中的map阶段为例:map阶段对子数据块将数据形式转换后得到的数据即为中间数据,并且该中间数据会被发送到reduce端做后续处理。因此,在被发送至reduce端之前,需要对其进行暂存;缓存区是内存中分配的一部分用于暂存中间区域的共享内存。
进一步的,由于缓存区也是有固定大小的,因此,当缓存区被占用达到一定比例之后,就需要缓存区中的数据写入磁盘中,以使缓存区中空闲出的存储空间能够继续读取中间数据。
步骤S212.根据最大溢出数据量以及缓存区的大小得到对应的实际溢出比例。
具体的,假设最大溢出数据量为D1以及缓存区的大小为D2,则实际溢出比例即为:D1/D2。
步骤S213.根据实际溢出比例以及预设的缓冲区设置策略,确定缓冲区的使用上限阈值,以在缓冲区中缓存的数据量超过使用上限阈值后,将缓冲区中缓存的数据写入磁盘中。
具体的,缓冲区设置策略是用于根据实际溢出比例确定缓冲区的使用上限阈值的策略,使用上限阈值可以是缓冲区的使用比例(例如:70%,80%等等);仍以MapReduce模型为例,可以通过指令mapreduce.map.sort.spill.percent对使用上限阈值进行设定。
举例的,缓冲区设置策略可以是:溢出比例大于等于1时,将使用上限阈值设置为0.8。因此,当获取得到对中间数据进行缓存时,出现数据溢出的情况,且溢出比例大于等于1,则将使用上限阈值设为0.8,以免缓冲区被完全占用,影响计算设备处理效率,确保之后再对该任务执行计算处理时,可以保证计算资源的合理使用。
其中,在缓冲区中缓存的数据量超过使用上限阈值后,将缓冲区中缓存的数据写入磁盘中,举例的:当缓冲区(例如:100MB)的数据值达到阈值(例如:80%)之后,溢出写线程启动,锁定这80MB的内存,执行溢出写过程。map阶段的输出的中间数据还可以往剩下的20MB内存中写,互不影响。
如图5所示,在一些实施例中,如前述的方法,所述步骤S2确定对子数据块执行的并行处理操作所对应的性能消耗信息,包括如下所述步骤S221至S223:
步骤S221.确定各个子数据块执行存储操作时采用的处理线程;其中,处理线程至少包括两个。
具体的,处理线程是用于对子数据块执行存储操作的,此处存储操作可以是对子数据块对应的原数据进行存储,也可以是对由子数据块转换得到的数据进行存储;且存储包括但不限于:存储至磁盘,写入特定文件中等等。
进一步的,处理线程处理的子数据块可以是一个或多个,且各个处理线程可以同时进行。在一些可选的实现方法中,处理线程可以是MapReduce模型中的reduce分组计算线程。
步骤S222.分别确定各个处理线程在对子数据块执行存储操作时的数据处理信息。
具体的,数据处理信息可以包括:数据处理量,计算资源使用量等等。
进一步的,步骤S222分别确定各个处理线程在对子数据块执行存储操作时的数据处理信息,还可以包括如下所述步骤S2221至S2223:
步骤S2221.获取各个处理线程执行存储操作时的线程数据处理量。
具体的,线程数据处理量为:各个处理线程在对其负责的子数据块进行存储操作时处理的总的数据量;一般的,不同的处理线程所对应的线程数据处理量各不相同。因此,通过获取线程数据处理量可以判断不同处理线程之间数据处理量的差异,以便于进行处理任务的均衡操作。
步骤S2222.确定各个线程数据处理量与子数据块之间的数据量关系。
具体的,在一般情况下,为了保障并行处理的效率,每个处理线程对接的子数据块都是小于预设数量(例如:3个)。当某个处理线程对接的子数据块的数量(例如:20个)远超过预设数量(例如:前述中3个)时,则判定该处理线程处理的数据量过多,因此数据量关系可以是线程数据处理量与子数据块的数据量之间的比值。
步骤S2223.当存在超过预设的差量阈值的数据量关系时,判断处理线程存在数据倾斜,并得到数据倾斜信息。
具体的,差量阈值表征的数值关系与数据量关系表征的数值关系是一致的;当数据量关系表征的数值关系是比值时与差量阈值表征的数值关系同样也需为比值;并且在数据量关系超过差量阈值时,则说明某一处理线程处理的数据量过大(即:数据倾斜)。对于数据倾斜的情况,可以通过关键字on判断的SQL部分字段,进行关联字段为空查询(其中一种实现方法可以是:把SQL有关联的逻辑通过SQL语句中on关键字把关联条件去掉,变为笛卡尔关联),如果查询的关联字段为空值大于等于总查询记录的10%,可以生成通知信息,并发送至该作业负责人,该关联字段存在数据倾斜为空的情况,需要该作业负责人进行业务逻辑确认,重新上传计算作业执行SQL内容,如果判断该字段分组求和前十位各自的值大于等于该字段分组平均值的50倍,则可以根据该关联字段取末尾两个字符进行打散出来,确保数据均匀分散,处理时,也可以生成对应的通知信息通知该计算作业负责人,将内容告知该作业负责人。可选的,得到的数据倾斜信息可以包括:发生数据倾斜的处理线程的标识信息、数据量关系、空值所占比例等等。
步骤S223.根据数据处理信息得到性能消耗信息。
具体的,由于通过数据处理信息可以得到数据倾斜信息,因此,根据数据倾斜信息即可以是性能消耗信息中的一种信息。
在一些实施例中,如前述的方法,
步骤S222分别确定各个处理线程在对子数据块执行存储操作时的数据处理信息,还包括如下所述步骤:
获取各个处理线程进行存储操作时对应的处理时长;
具体的,可以通过MapReduce模型得到各个获取各个处理线程进行存储操作时对应的处理时长;且该处理时长可以是处理线程对所有由其进行处理的子数据块进行存储操作时所耗费的总时长。
所述步骤S4根据目标性能信息确定并行运算对应的性能优化策略,包括如下所述步骤S421和S422:
步骤S421.获取各个处理线程在完成存储操作之后,进行数据清空时对应的垃圾回收耗时;
具体的,在Java技术中,正在各个处理线程完成存储操作之前,进程执行的数据被存放在特定的内存区域。当该数据不再被引用时,满足条件就会从特定的内存移除。在垃圾回收进程中,这些数据将会从堆内存移除并且内存空间被回收。垃圾回收耗时则是对处理线程完成存储操作之后,对存储在特定内存区域中的数据进行清空的时长。
步骤S422.在垃圾回收耗时与处理时长之间的差值满足预设要求时,生成对垃圾收集器进行增加内存的内存增加信息;其中,垃圾收集器用于执行数据清空操作。
具体的,在垃圾回收耗时与处理时长之间的差值满足预设要求时,可以是,垃圾回收耗时与处理时长的比值大于预设回收占比时长(例如当时间比>=2等等),则判定整个任务中,垃圾回收的耗时过长,因此需要对执行数据清空操作的垃圾收集器进行内存增加,以提高其执行数据清空操作的速度;内存增加信息可以是,增加的内存的大小;例如:加大GC(Java垃圾回收)内存数,可以每次增加数都默认为当前设置的参数两倍。
在一些实施例中,如前述的方法,
步骤S222分别确定各个处理线程在对子数据块执行存储操作时的数据处理信息,包括:
获取各个处理线程进行数据拉取得到所有中间数据时的第一时长信息。
具体的,当处理线程是reduce阶段的处理线程时,数据拉取的第一时长信息为shuffle过程的时长信息。
所述步骤S4根据目标性能信息确定并行运算对应的性能优化策略,包括如下所述步骤S431和S432:
步骤S431.在第一时长信息超过预设的第一时长上限时,获取处理线程拉取得到所有中间数据的第二时长信息;中间数据为子数据块中的数据进行数据形式转换后得到;
具体的,由于MapReduce中的shuffle主要是进行数据拉取,因此第二时长信息可以为过程所耗费的时长。
步骤S432.在第二时长信息超过预设的第二时长上限时,根据子数据块单位时间进行数据形式转换的单位数据量以及处理线程单位时长数据拉取量,确定开始对中间数据进行拉取时子数据块中的数据完成数据形式转换的转换进度。
具体的,当第二时长信息超过预设的第二时长上限可以是:shuffle过程的时长过长,例如超过N秒。
根据子数据块单位时间进行数据形式转换的单位数据量以及处理线程单位时长数据拉取量,可以是:当子数据块单位时间的进行数据形式转换完成的比例达到多少值后才会为处理线程进行数据拉取申请计算资源;由于一般情况下两个过程是串行执行的,因此默认情况下都是在数据形式完全转化完之后才进行数据拉取;采用本实施例中的方法,可以在部分数据完成转化之后即开始进行数据拉取,以减少总耗时,提升效率。在其中一种可选的实现方式中,可以通过指令mapreduce.job.reduce.slowstart.completedmaps参数值(一般在0.8~1),每次调整系统自动增大特定数值(例如:0.1)调试,系统通过计算reduce执行Shuffle的时间长短,来判断最优参数时间,并选择运行时间最短的参数。
在一些实施例中,如前述的方法,所述步骤S1对并行运算任务数据执行数据切分操作,得到至少两个子数据块,包括如下所述步骤S11至S16:
步骤S11.采集得到计算作业任务日志。
具体的,计算作业任务日志一般是每个任务都会对应有一个日志,此外,该日志对应的时长周期可以根据任务的实际需求进行选择,例如:任务运行一天的日志,任务运行一周的日志等等。
可选的,计算作业任务日志可以是通过日志采集系统进行自动采集得到。
步骤S12.根据预设的关键字,对计算作业任务日志进行拆解得到多个SQL执行逻辑。
具体的,关键字可以是根据填写的关键字,例如:HIVE、select,进行内容拆解,除此之外,还可以是其它关键字,在此不再一一进行列举。即,根据关键字,对SQL执行逻辑一段一段地从计算作业任务日志中拆分出来。一般的,每个日志中包括多个SQL执行逻辑。
步骤S13.对SQL执行逻辑进行解析,得到对应的至少一个SQL可执行内容。
具体的,SQL可执行内容为可以通过计算设备进行运行的代码。对SQL执行逻辑进行解析的方法可以是:通过MySQL数据库下的explain命令对SQL执行逻辑进行解析得到对应的SQL可执行内容。
步骤S14.根据所有SQL可执行内容得到并行运算任务数据。
具体的,当得到所有SQL可执行内容之后,即可以得到所有可以通过计算设备处理的任务数据,即并行运算任务数据。
步骤S15.确定并行运算任务数据的数据总量。
具体的,当得到并行运算任务数据之后,即可获取其对应的数据总量,且此处,数据总量可以包括:字节数以及数据的条数;以便于后期可以通过字节数以及数据的条数两种规则进行数据的切分;在此不再对此进行赘述。
步骤S16.根据数据总量以及预设的切分策略,对并行运算任务数据执行数据切分操作,得到至少两个子数据块。
具体的,切分策略可以包括:切分得到每个子数据块的大小,数据总量达到多大之后才进行切分。举例的:在MapReduce系统中,当数据总量统计大于千万条且小于一亿条的时候,map切分(数据切分操作)按集群存储块大小进行切分,一般情况下集群默认按照256G块大小进行存储;如果大于一亿条时,map切分则按照512G进行切分;一般的,当数据量大的时候,切分为多个子数据块以便于进行并行处理,以提高后期的处理效率。具体的,当每个子数据块的数据量比较小,那么整个处理过程将获得更好的负载平衡,因为一台较快的计算机能够处理的数据分片(即:子数据块)比一台较慢的计算机更多,且成一定的比例。即使使用相同的机器,失败的进程或其他并发运行的作业能够实现满意的负载平衡,并且随着数据块被切分得更细,负载平衡的质量会更高。另一方面,如果分片切分得太小,那么管理分片中得总时间和构建map任务得总时间将决定作业的整个执行时间。
通过本实施例中的方法,可以根据日志解析得到可以执行的内容,并且可以根据不同的切分策略对并行运算任务数据进行切分,得到符合需求大小的子数据块。
如图6所示,第二方面,本申请提供了一种对并行运算作业进行性能消耗优化的数据处理装置,其特征在于,包括:
切分模块1,用于对并行运算任务数据执行数据切分操作,得到至少两个子数据块;
确定模块2,用于确定对子数据块执行的并行处理操作所对应的性能消耗信息;
分析模块3,用于根据性能消耗信息分析得到并行运算任务数据对应的目标性能信息;
策略获取模块4,用于根据目标性能信息确定并行运算对应的性能优化策略。
具体的,本发明实施例的装置中各模块实现其功能的具体过程可参见方法实施例中的相关描述,此处不再赘述。
根据本申请的另一个实施例,还提供一种电子设备,包括:如图7所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的程序时,实现上述方法实施例的步骤。
上述电子设备提到的总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请实施例还提供一种非暂态计算机可读存储介质,非暂态计算机可读存储介质存储计算机指令,计算机指令使计算机执行上述方法实施例的步骤。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。