CN108153587B - 一种针对大数据平台的慢任务原因检测方法 - Google Patents
一种针对大数据平台的慢任务原因检测方法 Download PDFInfo
- Publication number
- CN108153587B CN108153587B CN201711436008.2A CN201711436008A CN108153587B CN 108153587 B CN108153587 B CN 108153587B CN 201711436008 A CN201711436008 A CN 201711436008A CN 108153587 B CN108153587 B CN 108153587B
- Authority
- CN
- China
- Prior art keywords
- task
- time
- slow
- tasks
- feature
- 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
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/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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3433—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment for load management
-
- 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
- G06F9/505—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 considering the load
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
大数据的应用程序处理过程一般会划分为多个阶段,每个阶段划分多个任务在多个节点上并行执行,这些任务一般执行相同的代码,当一个阶段所有任务全部完成才能进入下一个阶段执行。在处理过程中,很多因素会导致某些任务执行时间过长,这些任务大幅拖慢了程序的执行时间,检测导致这些慢任务的原因(故障诊断)有助于大数据应用开发人员改善大数据应用性能。本发明提出的针对大数据平台的慢任务原因检测方法,通过周期性的硬件信息采样和运行日志分析的方法获取相关特征并运用统计学方法得出导致慢任务的原因。
Description
技术领域
本发明涉及大数据应用性能分析,资源监控,性能瓶颈诊断和可视化。
背景技术
过去十几年里,互联网的发展使得数据成指数积累,大数据已经越来越广泛地应用在各个领域。大数据处理问题的方式基本可以简化为把数据划分为小数据块,然后每台机器处理一个小数据块,被称为一个任务,当有些机器处理任务过慢就会拖慢整个程序的执行速度,这些任务被称为慢任务(straggler task)。在微软必应的云计算环境下,10%的慢任务执行时间长度为任务执行时间中位数的10倍。针对谷歌云计算环境的研究也发现,最慢的5%的任务导致了99%的延迟。还有类似的生产环境下日志分析,都一致验证了慢任务会造成很大的延迟。
目前已有的方法主要集中在如何用投机执行去消除慢任务的影响,在程序运行时检测到慢任务,然后把这些任务分发到空闲机器上执行。这种方法的缺点在于慢任务的产生是由很多种因素引起的,如果是由于网络拥堵造成执行时间过长,那么将任务迁移到别的机器会引起更大的拥堵;如果是由于数据倾斜(任务处理的数据量太大)造成执行时间过长,将任务迁移到别的机器同样不能让程序执行地更快。此外,投机执行会占用额外的资源,这将导致整个集群处于高负载状态,不便多个用户共享计算资源。现有的慢任务原因定位主要有以下几种方法:
1.相关性分析
这种方法主要是判断慢任务的出现是否伴随着某些特征的出现,这种方法有很大的弊端,这些伴随慢任务出现的特征不一定是导致慢任务出现的原因,比如高资源占用率有时候可能是任务本身引起的,这种情况下就是高资源占用率导致了慢任务;
2.插桩
这种方法主要是向大数据平台插桩,获取详细的调度信息,计算出任务执行每一个步骤所用的时间,从而找出慢任务原因。这种方法的弊端在于需要插桩才能获取需要的信息,在生产环境不便部署;而且,很多可能导致慢任务产生的特征无法测量时间,这种方法得出的慢任务原因不够全面;
3.自顶向下分析
这种方法主要是指定一个按照优先级排列的特征序列,然后依次检查慢任务在执行过程中是否出现这些特征,一旦发现有特征满足条件就停止查找,这种方法的缺点在于无法为慢任务定位多个特征,而且优先级的确定具有很强的人为因素,不具备客观性;这种方法同样没有进行同阶段不同任务比较,无法准确定位慢任务原因。
发明内容
本发明提供了一种针对大数据平台的慢任务原因分析方法,基于大数据平台离线日志分析加采样日志分析的方式得到特征,然后将慢任务的特征和同阶段不同任务的特征进行对比,得到慢任务原因;其优点在于能够判定任务粒度的内因和外因,便于用户定位应用程序瓶颈,改进应用程序的执行时间。包括以下步骤(1)-(9):
步骤(1)从集群调度器获取原始日志信息;
集群调度器负责调度用户应用程序,当用户应用程序结束后,集群调度器将日志信息整合,形成原始日志信息,送往故障分析器;
步骤(2)故障分析器解析原始日志信息,获取资源占用序列,负载生成时间段序列,任务对象序列;故障分析器解析不同来源的原始日志信息,将资源占用日志解析成按照计算节点分开存储的且按照时间先后顺序排列的资源占用序列,将负载占用日志解析成按照计算节点分开存储的且按照时间先后顺序排列的负载生成时间段序列,将大数据日志信息解析成按照任务序号排列的且包含原始特征的任务对象序列;
步骤(3)将资源占用信息、负载生成信息融合到任务对象序列中;
遍历任务对象序列,找到任务所在节点和时间跨度信息,从资源占用序列中找到对应的资源占用信息,求平均后存入任务对象中;然后遍历负载生成时间段序列,如果负载生成时间段和任务跨度有重合,就把该负载信息存入任务对象中,表示该任务是在该负载的影响下运行的;
步骤(4)获取每个任务的执行时间和该任务所在阶段的所有任务的执行时间;
遍历所有任务,找到每个任务所在阶段的所有任务,记录其运行时间到阶段对象中;
步骤(5)通过将任务的执行时间和任务所在阶段的所有任务的执行时间的中位数对比得到慢任务信息,找到任务所在阶段对象所有任务执行时间的中位数,如果某任务执行时间大于中位数的1.5倍,就认为该任务是慢任务,并将其加入慢任务索引中;
步骤(6)从任务对象中清洗、归一化数据,抽取需要的特征;
数据清洗是指去除无用的特征;对从原始任务中提取的离散的特征进行编码(日志中的离散特征一般是未编码的字符串,对离散特征进行编码遵循越影响任务性能,编码的结果数值越大的原则);导致慢任务原因的特征包括离散特征和数值型特征,离散特征包括数据本地性特征,数值型特征包括时间特征和非时间特征,非时间特征包括资源占用特征和普通数值特征;将时间特征除以该任务执行的时间得到归一化的时间特征,将非时间特征除以阶段所有任务该特征的平均值得到归一化的非时间特征;
步骤(7)获取应用程序所有任务对象的特征集合,统计每个特征全局分位点信息;包括:
为每一个特征建立全局索引,遍历每个任务对象,将任务的特征加入到全局特征索引所对应的数组型数据结构中,然后根据配置文件指定的阈值对所有特征统计分位点;
步骤(8)遍历每个慢任务;对所有慢任务及其每一个特征执行下面的判断逻辑,包括以下步骤:
(8-1)如果该特征是数值型特征,判断(8-3),否则判断(8-2);
(8-2)如果该特征是异常特征并且同阶段其他任务的此特征为非异常特征,所述异常特征是指该特征的数值不为0并且值大于同阶段所有特征的平均值的若干倍,倍数由配置文件指定,则判定该特征为慢任务原因,否则,该特征不是慢任务原因,结束判断;
(8-3)如果该特征是时间特征,判断(8-4),否则,判断(8-5);
(8-4)判断该特征是否大于预设阈值,这个条件是为了限制这个特征所代表的持续时间必须对任务执行时间产生较大的影响,所述预设阈值根据用户的配置设定。如果是则判断(8-5),否则,该特征不是慢任务原因,结束判断;
(8-5)该特征是否大于该特征的全局分位点,如果是判断(8-6),如果不是,则该特征不是慢任务原因,结束判断;这个条件是为了保证这个特征不仅要比同阶段其他特征大,在全局范围内也要足够大;
(8-6)该特征是否是资源占用特征,如果是,需要执行边缘检测算法,判断(8-7),否则,判断(8-8)。
(8-7)该特征是否在任务开始的时候上升,并且在任务结束的时候下降,这一步主要是为了过滤由任务本身导致的资源占用率过高的情况。如果是,则认为该特征不是慢任务原因,结束判断,否则,继续判断(8-8);
(8-8)该特征是否大于阶段其他任务的特征中位数的若干倍,倍数由配置文件指定,如果是,则该特征是慢任务原因,否则,该特征不是慢任务原因,结束判断。
步骤(9)向用户展示慢任务原因。将资源占用序列,负载生成序列,慢任务序列,慢任务原因分析通过图形界面展示给用户。
进一步地,上述针对大数据平台的慢任务原因检测方法中,步骤(1)中的所述集群调度器除了能够调度用户应用程序外,还能够调度计算节点的资源负载生成器,所述负载生成器包括:CPU占用发生器、磁盘占用发生器以及网络资源占用发生器。
进一步地,上述针对大数据平台的慢任务原因检测方法中,
所述的数据本地性特征包括:
(3-1-1)任务处理的数据存放的位置
Flocality=0,PROCESS_LOCAL
=1,NODE_LOCAL
=2,otherwise
其中,PROCESS_LOCAL代表任务需要的数据在本进程的地址空间,NODE_LOCAL是代表任务需要的数据在本节点上,otherwise代表任务所需要的数据在别的位置;
所述的时间特征包括:
(3-2-1)该任务在执行序列化时所用的时间Fserialize,其计算方式如下:
Fserialize=T/Tavg
其中,T为该任务序列化的时间,Tavg为该任务所在阶段所有任务平均序列化时间;
(3-2-2)任务在执行反序列化时所用的时间Fdeserialize,其计算方式如下:
Fdeserialize=T/Tavg
其中,T为该任务反序列化的时间,Tavg为该任务所在阶段所有任务平均反序列化时间;
(3-2-3)任务在JVM中进行垃圾回收占用的时间FJVM,其计算方式为:
FJVM=T/Tavg
其中,T为该任务运行JVM垃圾收集的时间,Tavg为该任务所在阶段所有任务平均JVM垃圾收集时间,该指标数值越大,说明任务花在JVM垃圾回收上的时间越多,对性能的影响越大;
所述的资源占用特征具体为:
(3-3-1)CPU资源占用率FCPU,即应用程序运行期间通过采样得到的***CPU资源占用率,一个任务运行期间的CPU特征计算如下:
其中,user_timet是任务执行期间每次采样得到的用户CPU时间,total_timet是任务执行期间得到的总的CPU时间,t0是任务的起始时间,t1是任务的结束时间,对于多核CPU,上面的公式要对核数求平均,该指标反映CPU的繁忙程度;
(3-3-2)磁盘资源占用率Fdisk,即应用程序运行期间通过采样得到的磁盘I/O资源占用率,计算公式如下:
I/O_timet是每次采样得到的上一个采样间隔内***等待I/O时间,total_timet是采样间隔,该指标反应***磁盘I/O的繁忙程度;
(3-3-3)网络资源占用率,即应用程序运行期间通过采样得到的发送和接受网络流量(byte),其计算公式如下:
Bytes_sentt是采样期间被监控的网卡发送的数据流量(byte),Bytes_receivedt是网卡接受的数据流量(byte),该指标反映***网络设备的繁忙程度;
所述的普通数值特征包括:
(3-4-1)任务处理的数据量Fread_bytes,其计算方式如下:
Fread_bytes=R/Ravg
其中,R为本任务读取的字节数,Ravg为本阶段(即执行相同代码的一组任务)所有任务平均读取的字节数,该指标反映任务数据倾斜(处理的数据比别的任务更多)的严重程度;
(3-4-2)任务混洗的读取字节数Fshuffle_read_bytes,其计算方式为:
Fshuffle_read_bytes=B/Bavg
其中,B为本任务混洗读取的字节数,Bavg为本阶段所有任务平均混洗读取的字节数,该指标反映该任务处理混洗读任务的数据倾斜程度;
(3-4-3)任务混洗的读取字节数Fshuffle_write_bytes,其计算方式为:
Fshuffle_write_bytes=B/Bavg
其中,B为本任务混洗写入的字节数,Bavg为本阶段所有任务平均混洗写入的字节数,该指标反映该任务处理混洗写任务的数据倾斜程度;
(3-4-4)任务暂存数据文件溢出到内存中的字节数Fmemory_bytes_spilled,其计算方式为:
Fmemory_bytes_spilled=B/Bavg
其中,B为该任务溢出到内存中的字节数,Bavg为该任务所在阶段所有任务平均溢出到内存中的字节数,该指标反映该任务在内存中缓存数据的大小;
(3-4-5)任务暂存数据文件溢出到磁盘中的字节数Fdisk_bytes_spilled,其计算方式为:
Fdisk_bytes_spilled=B/Bavg
其中,B为该任务溢出到磁盘中的字节数,Bavg为该任务所在阶段所有任务平均溢出到磁盘中的字节数,该指标反映该任务在磁盘中缓存数据的大小。
进一步地,上述针对大数据平台的慢任务原因检测方法中,针对不同类型的特征施加不同的限制条件,具体如下:
对于数据本地性特征,如果某任务的数据本地性特征为2,并且任务所在阶段其他任务该特征之和小于任务数量的1/2;
对于普通数值型特征,如果某一个任务的该特征大于整个程序执行期间该特征的0.75分位点,并且该特征大于该任务所在阶段其他特征的平均值的2倍;
对于时间特征,除了满足普通数值型特征的限制条件,需要满足一个额外的条件,即该特征占用的时间是整个任务执行时间的0.2倍以上;
对于资源占用特征,除了满足普通数值型特征的限制条件,需要满足一个额外的条件,即任务开始前5秒内的资源占用平均值是否小于任务资源占用特征的0.5倍;任务结束时资源占用率是否下降,即任务开始后5秒内的资源占用平均值是否小于任务资源占用特征的0.5倍;如果上述两个条件都满足,则该特征不是造成慢任务的原因。
由于不同阶段任务执行时间差别较大,将慢任务展示在时间轴上便于用户定位执行时间较长的慢任务,分析其原因。
所述的调度器,需要向用户询问是否要施加资源负载以及如何调度,具体包含以下几个方面的信息:
(1-1)施加何种资源负载(CPU,磁盘,网络),用户可以选择零个或者多个资源负载;
(1-2)每种资源负载施加的长度和间隔,即向节点施加资源负载可以是间断式的,便于模拟真实环境,用户可以选择固定长度、固定间隔的周期性负载模拟,也可以选择随机长度、随机间隔的周期性负载模拟。对于随机负载施加,用户还可以选择随机数的分布区域(***在下限和上限中按照均匀分布随机产生数字);
(1-3)每种资源负载的强度,对于CPU负载,用户可以选择随机算术运算的数量,数组长度,对于磁盘负载,用户可以选择写入磁盘字符串长度,对于网络负载,用户可以选择向服务器发送的字符串长度以及服务器回传的字符串长度;
(1-4)每种资源负载开辟的进程数,用户可以选择每次施加资源负载时开启的进程数,这个指标也控制着资源负载施加的强度;
(1-5)每种资源负载施加的节点,用户可以选择一个或者多个节点施加资源负载,这样可以测试负载不均匀时应用的性能。
所述的调度器,具体的运行过程如下:
(2-1)将负载调度信息发送到各个计算节点,并启用调度,将调度信息写入日志文件;
(2-2)启动硬件采样进程,将采样信息写入日志文件。
(2-3)启动用户配置的应用程序;
(2-4)等待用户程序结束,从计算节点搜集负载调度日志和硬件采样日志到主节点。
(2-5)主节点发送消息到计算节点,杀死负载调度进程和硬件采样进程。
步骤(2)中具体的解析方式如下:
(3-1)获取任务对象,对象包含任务ID,所在阶段ID,节点ID,资源信息,环境信息,时间信息,输入输出信息,数据来源信息,推断执行信息,序列化和反序列化信息,数据持久化信息,Java虚拟机信息,数据块信息等;
(3-2)获取阶段对象,对象包含阶段ID,任务数量,阶段处理的数据信息,时间信息等;
(3-3)建立阶段对象和任务对象的相互索引,从任务对象可以索引对应的阶段对象,从阶段对象可以索引其包含的任务对象。
步骤(5)中通过将任务执行时间和任务所在阶段任务执行时间的中位数对比得到慢任务信息,其详细过程如下:
根据对应的阶段对象计算阶段包含的每个任务的执行时间,计算中位数,然后找到慢任务对象,建立索引,慢任务对象的筛选方式如下:
Ttask>1.5*Median(Tstage)
即任务的执行时间大于该阶段所有任务执行时间的中位数的1.5倍。
进一步地,上述针对大数据平台的慢任务原因检测方法中,步骤(6)中的数据清洗和归一化,其详细过程如下:
计算阶段对象的特征信息,包含阶段包含任务对象的平均读取的数据量,平均混洗读的数据量,平均混洗写的数据量,平均持久化到内存的数据量,平均持久化到磁盘的数据量。然后遍历所有任务的所有特征,对于离散的特征,需要把原始特征从字符串转化为数字编号,在此过程中需要遵守特征数值越大,就会导致应用程序执行越慢的准则。对于时间特征,要除以任务执行时间,对于其他的数值特征,需要除以任务所在阶段的平均特征。
进一步地,上述针对大数据平台的慢任务原因检测方法中,步骤(9)中可视化慢任务及其原因分析,向用户展示慢任务原因,包括:
(5-1)将慢任务用加黑的粗线标注在时间轴上,其高度(Straggler Scale)代表该任务执行时间是该任务所在阶段执行时间平均值的倍数;
(5-2)将慢任务的原因标注在慢任务线的附近;
(5-3)标出时间轴上不同资源占用率变化曲线,其高度(Feature Scale)代表资源占用率的相对大小;
(5-4)标出资源占用率发生器(AG)的时间跨度。本发明提出针对大数据平台的慢任务原因检测方法,通过特征比较的方法来实现慢任务原因检测,克服了现有技术中相关性统计方法的不足;同时,本发明提供的技术方案能够在不进行插桩,不影响现有的应用程序,不需要更改现有的大数据框架下进行慢任务原因分析,克服了插桩方法带来的性能问题;此外,本发明还进一步利用多重特征平级分析,克服了自顶向下分析层次性分析自顶向下的缺点。
附图说明
图1为实现本发明针对大数据平台的慢任务原因检测方法的***架构示意图;
图2为本发明针对大数据平台的慢任务原因检测方法的流程图;
图3为应用性能瓶颈诊断示意图;
图4为特征对象的继承关系。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
本发明的基本思路在于获取任务执行期间的特征然后通过特征之间的比较和过滤来进行慢任务原因定位。
图1为实现本发明针对大数据平台的慢任务原因检测方法的***架构示意图。可视化节点负责向用户展示应用程序的性能分析结果(***资源轨迹,应用程序性能瓶颈的分布,性能瓶颈原因,相关优化建议等),调度器负责调度负载生成程序,分发应用程序运行信息到大数据框架,监控应用程序的状态,并在应用程序结束时从计算节点获取日志信息。
图2为本发明针对大数据平台的慢任务原因检测方法的流程图,详细流程包括步骤(1)-(9):
步骤(1)从集群调度器获取原始日志信息;
集群调度器负责调度用户应用程序,当用户应用程序结束后,集群调度器将日志信息整合,形成原始日志信息,送往故障分析器;
步骤(2)故障分析器解析原始日志信息,获取资源占用序列,负载生成时间段序列,任务对象序列;
故障分析器解析不同来源的原始日志信息,将资源占用日志解析成按照计算节点分开存储的且按照时间先后顺序排列的资源占用序列,将负载占用日志解析成按照计算节点分开存储的且按照时间先后顺序排列的负载生成时间段序列,将大数据日志信息解析成按照任务序号排列的且包含原始特征的任务对象序列;
步骤(3)将资源占用信息、负载生成信息融合到任务对象序列中;
遍历任务对象序列,找到任务所在节点和时间跨度信息,从资源占用序列中找到对应的资源占用信息,求平均后存入任务对象中;然后遍历负载生成时间段序列,如果负载生成时间段和任务跨度有重合,就把该负载信息存入任务对象中,表示该任务是在该负载的影响下运行的;
步骤(4)获取每个任务的执行时间和该任务所在阶段的所有任务的执行时间;
遍历所有任务,找到每个任务所在阶段的所有任务,记录其运行时间到阶段对象中;
步骤(5)通过将任务的执行时间和任务所在阶段的所有任务的执行时间的中位数对比得到慢任务信息,找到任务所在阶段对象所有任务执行时间的中位数,如果某任务执行时间大于中位数的1.5倍,就认为该任务是慢任务,并将其加入慢任务索引中;
步骤(6)从任务对象中清洗、归一化数据,抽取需要的特征;
数据清洗是指去除无用的特征;对从原始任务中提取的离散的特征进行编码;导致慢任务原因的特征包括离散特征和数值型特征,离散特征包括数据本地性特征,数值型特征包括时间特征和非时间特征,非时间特征包括资源占用特征和普通数值特征;将时间特征除以该任务执行的时间得到归一化的时间特征,将非时间特征除以阶段所有任务该特征的平均值得到归一化的非时间特征;
步骤(7)获取应用程序所有任务对象的特征集合,统计每个特征全局分位点信息;包括:
为每一个特征建立全局索引,遍历每个任务对象,将任务的特征加入到全局特征索引所对应的数组型数据结构中,然后根据配置文件指定的阈值对所有特征统计分位点;
步骤(8)遍历每个慢任务;对所有慢任务及其每一个特征执行下面的判断逻辑,包括以下步骤:
(8-1)如果该特征是数值型特征,判断(8-3),否则判断(8-2);
(8-2)如果该特征是异常特征(特征数值不为0)并且值大于阶段特征的平均值的若干倍(参数由配置文件指定,这个条件是为了保证阶段其他特征没有产生异常),则判定该特征为慢任务原因,否则,该特征不是慢任务原因,结束判断;
(8-3)如果该特征是时间特征,判断(8-4),否则,判断(8-5);
(8-4)判断该特征是否大于预设阈值,所述预设阈值根据用户的配置设定)。如果是则判断(8-5),否则,该特征不是慢任务原因,结束判断;
(8-5)该特征是否大于该特征的全局分位点,如果是判断(8-6),如果不是,则该特征不是慢任务原因,结束判断;
(8-6)该特征是否是***资源相关的特征(CPU、I/O、网络占用率),如果是,需要执行边缘检测算法,判断(8-7),否则,判断(8-8);
(8-7)该特征是否在任务开始的时候上升,并且在任务结束的时候下降,如果是,则认为该特征不是慢任务原因,结束判断,否则,继续判断(8-8);
(8-8)该特征是否大于阶段其他任务的特征中位数的若干倍(由配置文件指定),如果是,则该特征是慢任务原因,否则,该特征不是慢任务原因,结束判断。
步骤(9)向用户可视化慢任务及其原因分析。
步骤(2)中负载生成程序,其具体的实现方式如下:
(1-1)CPU占用发生器,在指定时间内,启动以下程序产生较高的CPU占用:
(1-1-1)产生多个进程执行下面的程序;
(1-1-2)产生长度为106的数组A,对其中每一个数值赋予一个随机数,A[i]=random();
(1-1-3)对数组A中的每一个数值执行随机算术运算(加减乘随机数);
(1-1-4)回到(1-1-2)直到时间超出限制;
(1-2)磁盘占用发生器,在指定时间内,启动以下程序产生较高的磁盘占用:
(1-2-1)产生多个进程执行下面的程序;
(1-2-2)产生长度为107的字符串(填充“0”字符)s;
(1-2-3)将s写入随机磁盘文件f;
(1-2-4)将磁盘文件指针指向文件开头;
(1-2-5)刷新缓冲区;
(1-2-6)回到(1-2-2)直到时间超出限制;
(1-3)网络资源占用发生器,在指定时间内,启动以下程序产生较高的网络占用:
(1-3-1)产生多个进程执行下面的程序;
(1-3-2)获取服务器的socket s;
(1-3-3)通过s向服务器发送长度为1024的字符串;
(1-3-3)接受服务器回传的长度为1024的字符串;
(1-3-4)回到(1-3-3)直到时间超出限制。
步骤(2)中的资源占用特征,其具体获取方式如下:
(2-1)对于CPU占用率特征,本发明采用mpstat(multiprocesser statistics),启动后每秒进行一次采样,并写入日志文件里面;本发明采用用户态占用CPU时长的比例作为CPU占用率的指标。
(2-2)对于磁盘占用率特征,本发明采用iostat(input/output statistics),启动后每秒进行一次采样,并写入日志文件里面。为了屏蔽存储器相关的细节,本发明采用统计时间内所有处理IO时间,除以总的统计时间作为磁盘占用率的指标;
(2-3)对于网络资源占用率,本发明采用sar(system activity report),启动后每秒进行一次采样,并写入日志文件里面。本发明采用网卡发送和接收的流量之和作为网络资源占用率的指标。
步骤(2)中,我们按照以下方式处理数据:
(3-1)分析大数据日志,得到原始任务对象和阶段对象并建立索引。本发明采用的数据结构是Python的字典数据结构,其中任务对象以任务ID为键,大数据日志所包含的信息为值(多层嵌套的字典),其典型的信息如下:
表1大数据日志的原始任务特征信息
阶段对象以阶段ID为键,大数据日志包含的信息为值(多层嵌套的字典),其典型的信息如下:
Completion Time | 阶段完成的时间 |
Stage ID | 阶段ID |
Stage Name | 阶段名字(包含所执行源代码的信息) |
Number of Tasks | 阶段包含任务的数量 |
Submission Time | 任务提交的时间 |
Accumulables | 累加器信息 |
表2大数据日志的原始阶段特征信息
(3-2)初始化任务对象和阶段对象的特征信息。在阶段对象中建立任务索引,计算整个阶段所有任务数据本地性特征,普通数值特征和资源占用特征的总和作为阶段特征,这些阶段特征是为了对阶段包含的任务的特征做归一化;
步骤(3)中将资源占用、负载生成信息融合到任务序列中,具体实施细节如下:
对于硬件采样日志,首先把时间轴对应的信息记录到一个数组中(数组的长度等于采样的序列长度),然后遍历整个任务对象数组,对于每个任务,找到其对应的时间跨度内采样的硬件信息,求平均值后写入任务对象。对于负载生成日志信息,如果某一个负载的时间跨度和某一个任务的时间跨度重合,就把负载信息写入到任务对象。
步骤(8)中遍历每个慢任务以及慢任务的每一个特征,在对特征进行判断时,需要用到特征对象来执行业务逻辑,其具体过程为:
(4-1)初始化特征对象,特征对象的继承关系如图4所示,初始化Root对象,Root对象是以任务id为键,慢任务原因为值的字典数据结构;
(4-2)遍历慢任务的每个特征;
(4-3)建立该慢任务所在阶段其他任务所包含的该特征的集合;
(4-4)调用特征对象的anomaly函数得到该特征是否是造成慢任务的原因,如果是则将原因加入Root对象。
步骤(9)中可视化慢任务及其原因分析,向用户展示慢任务原因,如图3所示,包括:
(5-1)将慢任务用加黑的粗线标注在时间轴上,其高度(Straggler Scale)代表该任务执行时间是该任务所在阶段执行时间平均值的倍数;
(5-2)将慢任务的原因标注在慢任务线的附近;
(5-3)标出时间轴上不同资源占用率变化曲线,其高度(Feature Scale)代表资源占用率的相对大小;
(5-4)标出资源占用率发生器(AG)的时间跨度。
向用户展示慢任务原因的步骤包括:
首先,生成各个计算节点的资源变化曲线和慢任务的产生曲线,展示给用户;
然后,生成用户程序慢任务原因的分布,即所有慢任务原因中各种特征的数量,这些数据便于用户分析哪些特征在影响应用程序执行中占了主导因素,以及慢任务在不同计算节点的分布,方便用户查看是否有个别节点出现了故障(比如硬件故障,应用程序异常),并且按照慢任务的影响持续时间排序并给出排序后每个慢任务的原因分析;
最后,从数据库中获取每个特征对应的优化和解决方案,给出用户优化建议。便于用户检测大数据应用性能随可用资源量的变化情况,分析程序对各类资源的敏感情况。
本发明未详细阐述部分属于本领域公知技术。
以上所述,仅为本发明部分具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本领域的人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (4)
1.一种针对大数据平台的慢任务原因检测方法,其特征在于,首先提取资源占用特征和大数据平台日志特征,然后将慢任务的特征和同阶段不同任务的特征进行对比,得到慢任务原因;包括以下步骤:
步骤(1)从集群调度器获取原始日志信息;
集群调度器负责调度用户应用程序,当用户应用程序结束后,集群调度器将日志信息整合,形成原始日志信息,送往故障分析器;
步骤(2)故障分析器解析原始日志信息,获取资源占用序列,负载生成时间段序列,任务对象序列;
故障分析器解析不同来源的原始日志信息,将资源占用日志解析成按照计算节点分开存储的且按照时间先后顺序排列的资源占用序列,将负载占用日志解析成按照计算节点分开存储的且按照时间先后顺序排列的负载生成时间段序列,将大数据日志信息解析成按照任务序号排列的且包含原始特征的任务对象序列;
步骤(3)将资源占用信息、负载生成信息融合到任务对象序列中;
遍历任务对象序列,找到任务所在节点和时间跨度信息,从资源占用序列中找到对应的资源占用信息,求平均后存入任务对象中;然后遍历负载生成时间段序列,如果负载生成时间段和任务跨度有重合,就把该负载信息存入任务对象中,表示该任务是在该负载的影响下运行的;
步骤(4)获取每个任务的执行时间和该任务所在阶段的所有任务的执行时间;
遍历所有任务,找到每个任务所在阶段的所有任务,记录其运行时间到阶段对象中;
步骤(5)通过将任务的执行时间和任务所在阶段的所有任务的执行时间的中位数对比得到慢任务信息,找到任务所在阶段对象所有任务执行时间的中位数,如果某任务执行时间大于中位数的1.5倍,就认为该任务是慢任务,并将其加入慢任务索引中;
步骤(6)从任务对象中清洗、归一化数据,抽取需要的特征;
数据清洗是指去除无用的特征;对从原始任务中提取的离散的特征进行编码;导致慢任务原因的特征包括离散特征和数值型特征,离散特征包括数据本地性特征,数值型特征包括时间特征和非时间特征,非时间特征包括资源占用特征和普通数值特征;将时间特征除以该任务执行的时间得到归一化的时间特征,将非时间特征除以阶段所有任务该特征的平均值得到归一化的非时间特征;
步骤(7)获取应用程序所有任务对象的特征集合,统计每个特征全局分位点信息;包括:
为每一个特征建立全局索引,遍历每个任务对象,将任务的特征加入到全局特征索引所对应的数组型数据结构中,然后根据配置文件指定的阈值对所有特征统计分位点;
步骤(8)遍历每个慢任务;对所有慢任务及其每一个特征执行下面的判断逻辑,包括以下步骤:
(8-1)如果该特征是数值型特征,判断(8-3),否则判断(8-2);
(8-2)如果该特征是异常特征并且同阶段其他任务的此特征为非异常特征,所述异常特征是指该特征的数值不为0并且值大于同阶段所有特征的平均值的若干倍,倍数由配置文件指定),则判定该特征为慢任务原因,否则,该特征不是慢任务原因,结束判断;
(8-3)如果该特征是时间特征,判断(8-4),否则,判断(8-5);
(8-4)判断该特征是否大于预设阈值,所述预设阈值根据用户的配置设定;如果是则判断(8-5),否则,该特征不是慢任务原因,结束判断;
(8-5)该特征是否大于该特征的全局分位点,如果是判断(8-6),如果不是,则该特征不是慢任务原因,结束判断;
(8-6)该特征是否是资源占用特征,如果是,需要执行边缘检测算法,判断(8-7),否则,判断(8-8);
(8-7)该特征是否在任务开始的时候上升,并且在任务结束的时候下降,如果是,则认为该特征不是慢任务原因,结束判断,否则,继续判断(8-8);
(8-8)该特征是否大于阶段其他任务的特征中位数的若干倍,倍数由配置文件指定,如果是,则该特征是慢任务原因,否则,该特征不是慢任务原因,结束判断;
步骤(9)可视化慢任务及其原因分析;
所述的数据本地性特征包括:
(3-1-1)任务处理的数据存放的位置
Flocality=0,PROCESS_LOCAL
=1,NODE_LOCAL
=2,otherwise
其中,PROCESS_LOCAL代表任务需要的数据在本进程的地址空间,NODE_LOCAL是代表任务需要的数据在本节点上,otherwise代表任务所需要的数据在别的位置;
所述的时间特征包括:
(3-2-1)该任务在执行序列化时所用的时间Fserialize,其计算方式如下:
Fserialize=T/Tavg
其中,T为该任务序列化的时间,Tavg为该任务所在阶段所有任务平均序列化时间;
(3-2-2)任务在执行反序列化时所用的时间Fdeserialize,其计算方式如下:
Fdeserialize=T/Tavg
其中,T为该任务反序列化的时间,Tavg为该任务所在阶段所有任务平均反序列化时间;
(3-2-3)任务在JVM中进行垃圾回收占用的时间FJVM,其计算方式为:
FJVM=T/Tavg
其中,T为该任务运行JVM垃圾收集的时间,Tavg为该任务所在阶段所有任务平均JVM垃圾收集时间,该指标数值越大,说明任务花在JVM垃圾回收上的时间越多,对性能的影响越大;
所述的资源占用特征具体为:
(3-3-1)CPU资源占用率FCPU,即应用程序运行期间通过采样得到的***CPU资源占用率,一个任务运行期间的CPU特征计算如下:
其中,user_timet是任务执行期间每次采样得到的用户CPU时间,total_timet是任务执行期间得到的总的CPU时间,t0是任务的起始时间,t1是任务的结束时间,对于多核CPU,上面的公式要对核数求平均;
(3-3-2)磁盘资源占用率Fdisk,即应用程序运行期间通过采样得到的磁盘I/O资源占用率,计算公式如下:
I/O_timet是每次采样得到的上一个采样间隔内***等待I/O时间,total_timet是采样间隔;
(3-3-3)网络资源占用率,即应用程序运行期间通过采样得到的发送和接受网络流量(byte),其计算公式如下:
Bytes_sentt是采样期间被监控的网卡发送的数据流量(byte),Bytes_receivedt是网卡接受的数据流量(byte);
所述的普通数值特征包括:
(3-4-1)任务处理的数据量Fread_bytes,其计算方式如下:
Fread_bytes=R/Ravg
其中,R为本任务读取的字节数,Ravg为本阶段所有任务平均读取的字节数;
(3-4-2)任务混洗的读取字节数Fshuffle_read_bytes,其计算方式为:
Fshuffle_read_bytes=B/Bavg
其中,B为本任务混洗读取的字节数,Bavg为本阶段所有任务平均混洗读取的字节数;
(3-4-3)任务混洗的读取字节数Fshuffle_write_bytes,其计算方式为:
Fshuffle_write_bytes=B/Bavg
其中,B为本任务混洗写入的字节数,Bavg为本阶段所有任务平均混洗写入的字节数;
(3-4-4)任务暂存数据文件溢出到内存中的字节数Fmemory_bytes_spilled,其计算方式为:
Fmemory_bytes_spilled=B/Bavg
其中,B为该任务溢出到内存中的字节数,Bavg为该任务所在阶段所有任务平均溢出到内存中的字节数;
(3-4-5)任务暂存数据文件溢出到磁盘中的字节数Fdisk_bytes_spilled,其计算方式为:
Fdisk_bytes_spilled=B/Bavg
其中,B为该任务溢出到磁盘中的字节数,Bavg为该任务所在阶段所有任务平均溢出到磁盘中的字节数。
2.根据权利要求1所述的针对大数据平台的慢任务原因检测方法,其特征在于,步骤(1)中的所述集群调度器除了能够调度用户应用程序外,还能够调度计算节点的资源负载生成器,所述集群调度器包括:CPU占用发生器、磁盘占用发生器以及网络资源占用发生器。
3.根据权利要求1所述的针对大数据平台的慢任务原因检测方法,其特征在于,针对不同类型的特征施加不同的限制条件,具体如下:
对于数据本地性特征,如果某任务的数据本地性特征为2,并且任务所在阶段其他任务该特征之和小于任务数量的1/2;
对于普通数值型特征,如果某一个任务的该特征大于整个程序执行期间该特征的0.75分位点,并且该特征大于该任务所在阶段其他特征的平均值的2倍;
对于时间特征,除了满足普通数值型特征的限制条件,需要满足一个额外的条件,即该特征占用的时间是整个任务执行时间的0.2倍以上;
对于资源占用特征,除了满足普通数值型特征的限制条件,需要满足一个额外的条件,即任务开始前5秒内的资源占用平均值是否小于任务资源占用特征的0.5倍;任务结束时资源占用率是否下降,即任务开始后5秒内的资源占用平均值是否小于任务资源占用特征的0.5倍;如果上述两个条件都满足,则该特征不是造成慢任务的原因。
4.根据权利要求1所述的针对大数据平台的慢任务原因检测方法,其特征在于:步骤(9)中可视化慢任务及其原因分析包括:
(5-1)将慢任务用加黑的粗线标注在时间轴上,其高度(Straggler Scale)代表该任务执行时间是该任务所在阶段执行时间平均值的倍数;
(5-2)将慢任务的原因标注在慢任务线的附近;
(5-3)标出时间轴上不同资源占用率变化曲线,其高度(Feature Scale)代表资源占用率的相对大小;
(5-4)标出资源占用率发生器(AG)的时间跨度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711436008.2A CN108153587B (zh) | 2017-12-26 | 2017-12-26 | 一种针对大数据平台的慢任务原因检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711436008.2A CN108153587B (zh) | 2017-12-26 | 2017-12-26 | 一种针对大数据平台的慢任务原因检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108153587A CN108153587A (zh) | 2018-06-12 |
CN108153587B true CN108153587B (zh) | 2021-05-04 |
Family
ID=62463209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711436008.2A Active CN108153587B (zh) | 2017-12-26 | 2017-12-26 | 一种针对大数据平台的慢任务原因检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108153587B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110928739B (zh) * | 2018-09-19 | 2024-03-26 | 阿里巴巴集团控股有限公司 | 一种进程监控方法、装置以及计算设备 |
CN109240890A (zh) * | 2018-09-25 | 2019-01-18 | 江苏润和软件股份有限公司 | 一种基于统计分析的Spark拖延任务诊断方法 |
CN111124627B (zh) * | 2018-11-01 | 2023-08-01 | 百度在线网络技术(北京)有限公司 | 应用程序的调起者确定方法、装置、终端及存储介质 |
CN111045950B (zh) * | 2019-12-16 | 2023-06-30 | 上海钧正网络科技有限公司 | 性能问题点确定方法、装置、数据分析***及存储介质 |
CN111309712A (zh) * | 2020-03-16 | 2020-06-19 | 北京三快在线科技有限公司 | 基于数据仓库的优化任务调度方法、装置、设备及介质 |
CN113746883B (zh) * | 2020-05-29 | 2023-05-19 | 华为技术有限公司 | 链路跟踪方法及*** |
CN111835854B (zh) * | 2020-07-17 | 2021-08-10 | 北京航空航天大学 | 一种基于灰色预测算法的慢任务预测方法 |
CN112463334B (zh) * | 2020-12-04 | 2023-08-18 | 苏州浪潮智能科技有限公司 | 一种训练任务排队原因分析方法、***、设备以及介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824737A (zh) * | 2016-03-31 | 2016-08-03 | 华中科技大学 | 用于大数据处理***的内存数据集置换***与置换方法 |
-
2017
- 2017-12-26 CN CN201711436008.2A patent/CN108153587B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105824737A (zh) * | 2016-03-31 | 2016-08-03 | 华中科技大学 | 用于大数据处理***的内存数据集置换***与置换方法 |
Non-Patent Citations (2)
Title |
---|
"Data Analysis and Synchronization on Inter-continent Data Placement Laboratory";Kun Qian 等;《2015 International Conference on Cloud Computing and Big Data (CCBD)》;20151106;全文 * |
"Data Mining Based Root-Cause Analysis of Performance Bottleneck for Big Data Workload";Weichen Qi 等;《2017 IEEE 19th International Conference on High Performance Computing and Communications》;20171220;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108153587A (zh) | 2018-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108153587B (zh) | 一种针对大数据平台的慢任务原因检测方法 | |
US9594754B2 (en) | Purity analysis using white list/black list analysis | |
US9864676B2 (en) | Bottleneck detector application programming interface | |
US8826254B2 (en) | Memoizing with read only side effects | |
US8752021B2 (en) | Input vector analysis for memoization estimation | |
EP3069241B1 (en) | Application execution path tracing with configurable origin definition | |
EP2956858B1 (en) | Periodicity optimization in an automated tracing system | |
US8627150B2 (en) | System and method for using dependency in a dynamic model to relate performance problems in a complex middleware environment | |
US20130074057A1 (en) | Selecting Functions for Memoization Analysis | |
US20130067445A1 (en) | Determination of Function Purity for Memoization | |
US9183108B2 (en) | Logical grouping of profile data | |
US9959197B2 (en) | Automated bug detection with virtual machine forking | |
CN108509324B (zh) | 选择计算平台的***和方法 | |
CN107562532B (zh) | 一种预测设备集群的硬件资源利用率的方法及装置 | |
CN107102922B (zh) | 内存检测方法、装置及电子设备 | |
CN111563014A (zh) | 接口服务性能测试方法、装置、设备和存储介质 | |
US10754744B2 (en) | Method of estimating program speed-up in highly parallel architectures using static analysis | |
US20140215483A1 (en) | Resource-usage totalizing method, and resource-usage totalizing device | |
CN111680085A (zh) | 数据处理任务分析方法、装置、电子设备和可读存储介质 | |
Ghanbari et al. | Stage-aware anomaly detection through tracking log points | |
Bei et al. | MEST: A model-driven efficient searching approach for MapReduce self-tuning | |
US11119899B2 (en) | Determining potential test actions | |
Qi et al. | Data mining based root-cause analysis of performance bottleneck for big data workload | |
Kehrer et al. | Serverless skeletons for elastic parallel processing | |
Willnecker et al. | Model-based prediction of automatic memory management and garbage collection behavior |
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 |