可视化计算工作流的系统和方法与流程

文档序号:17486392发布日期:2019-04-20 06:51阅读:208来源:国知局
可视化计算工作流的系统和方法与流程

本发明要求2016年12月22日递交的发明名称为“可视化计算工作流的系统和方法(systemandmethodforvisualizationofacomputeworkflow)”的第15/388,549号美国专利申请案的在先申请优先权,该在先申请的内容以引入的方式并入本文本中。

本文所述实施例大体上涉及计算工作流领域,更具体地,涉及可视化计算工作流。



背景技术:

计算工作流由在分布式计算集群中运行的多个相互依赖的计算任务组成。由于工作流的复杂性,希望为集群操作员提供工具以了解异常情况并跟踪日常性能,以确保满足期限并充分利用资源。虽然已提出了几种集群可视化工具,但是现有解决方案并不显示工作流通常包括的多个抽象级(例如工作流级、计算阶段级、任务级)。相反,通常在任何给定时间呈现一个抽象级,且经常需要点击范式来可视化不同的抽象级。这继而使得操作人员难以轻松地全面了解给定工作流的性能或纵向比较工作流。

因此,需要一种用于可视化计算工作流的改进系统和方法。



技术实现要素:

根据一方面,提供了一种可视化计算工作流的方法。所述方法包括:获取指示在所述计算工作流的每个实例的每个计算阶段中执行的一个或多个作业的工作流数据以及指示每个所述一个或多个作业执行的一个或多个任务的作业数据;将每个所述一个或多个任务与相应计算阶段相关联;针对所述计算工作流的每个实例,生成在每个计算阶段中执行的每个所述一个或多个任务随时间的资源使用量的视觉表示;以及在公共时间线上绘制所述计算工作流的多个实例的视觉表示。

在一些示例实施例中,获取所述工作流数据可包括:解析一个或多个工作流日志文件以获取表示所述一个或多个作业的顺序的有向无环图,以及获取所述作业数据包括:解析一个或多个作业日志文件以获取所述一个或多个任务的标识。

在一些示例实施例中,生成所述视觉表示可包括:将每个所述一个或多个任务表示为沿着二维坐标系的第一轴具有第一维度和沿着所述二维坐标系的第二轴具有第二维度的形状,其中,所述第一维度对应于每个所述一个或多个任务的时长,所述第二维度对应于每个所述一个或多个任务使用的资源量。

在一些示例实施例中,生成所述视觉表示可包括:针对每个计算阶段,根据每个所述一个或多个任务的开始时间、每个所述一个或多个任务的所述时长以及在其上实施每个所述一个或多个任务的计算主机之一将所述形状中的多个形状沿着所述第二轴彼此相邻放置。

在一些示例实施例中,生成所述视觉表示可包括:针对所述计算工作流的每个实例,生成包括在所述二维坐标系中同时绘制的多个图形元素的图,其中,每个图形元素表示给定计算阶段并且包括所述形状中沿着所述第二轴彼此相邻放置的所述多个形状。

在一些示例实施例中,可将串行运行的计算阶段绘制为沿着所述第一轴彼此相邻放置的图形元素,以及将并行运行的计算阶段绘制为沿着所述第二轴彼此相邻放置的图形元素。

在一些示例实施例中,在公共时间线上绘制所述计算工作流的多个实例的所述视觉表示可包括:在综合视图中同时绘制所述图中的多个视觉表示。

在一些示例实施例中,生成所述视觉表示可包括:将所述形状中的所述多个形状变换为多边形,以及在所述二维坐标系中绘制所述多边形。

在一些示例实施例中,生成所述视觉表示可包括:针对每个计算阶段,将所述形状中的所述多个形状用轮廓闭合,以界定所述一个或多个任务中最早开始的任务的开始时间和所述一个或多个任务中最晚结束的任务的结束时间。

在一些示例实施例中,生成所述视觉表示可包括:针对每个计算阶段,将所述形状中的所述多个形状用轮廓闭合,以界定执行所述一个或多个任务的所述一个或多个作业中给定作业的提交时间以及所述一个或多个作业中所述给定作业的完成时间。

在一些示例实施例中,生成所述视觉表示可包括:在所述第二轴使用对数标度的所述二维坐标系中表示每个所述一个或多个任务。

根据另一方面,提供了一种可视化计算工作流的系统。所述系统包括:至少一个处理单元;以及非瞬时性存储器,其通信地耦合到所述至少一个处理单元并且包括计算机可读程序指令,其中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:获取指示在所述计算工作流的每个实例的每个计算阶段中执行的一个或多个作业的工作流数据以及指示每个所述一个或多个作业执行的一个或多个任务的作业数据;将每个所述一个或多个任务与相应计算阶段相关联;针对所述计算工作流的每个实例,生成在每个计算阶段中执行的每个所述一个或多个任务随时间的资源使用量的视觉表示;以及在公共时间线上绘制所述计算工作流的多个实例的视觉表示。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于获取所述工作流数据,包括:解析一个或多个工作流日志文件以获取表示所述一个或多个作业的顺序的有向无环图,以及用于获取所述作业数据,包括:解析一个或多个作业日志文件以获取所述一个或多个任务的标识。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于生成所述视觉表示,包括:将每个所述一个或多个任务表示为沿着二维坐标系的第一轴具有第一维度和沿着所述二维坐标系的第二轴具有第二维度的形状,其中,所述第一维度对应于每个所述一个或多个任务的时长,所述第二维度对应于每个所述一个或多个任务使用的资源量。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于生成所述视觉表示,包括:针对每个计算阶段,根据每个所述一个或多个任务的开始时间、每个所述一个或多个任务的所述时长以及在其上实施每个所述一个或多个任务的计算主机之一将所述形状中的多个形状沿着所述第二轴彼此相邻放置。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:针对所述计算工作流的每个实例,生成包括在所述二维坐标系中同时绘制的多个图形元素的图,其中,每个图形元素表示给定计算阶段并且包括所述形状中沿着所述第二轴彼此相邻放置的所述多个形状。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:将串行运行的计算阶段绘制为沿着所述第一轴彼此相邻放置的图形元素,以及将并行运行的计算阶段绘制为沿着所述第二轴彼此相邻放置的图形元素。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于在公共时间线上绘制所述计算工作流的多个实例的所述视觉表示,包括:在综合视图中同时绘制所述图中的多个视觉表示。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:将所述形状中的所述多个形状变换为多边形,以及在所述二维坐标系中绘制所述多边形。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:在所述第二轴使用对数标度的所述二维坐标系中表示每个所述一个或多个任务。

根据另一方面,提供了一种可视化计算工作流的方法。所述方法包括:将所述计算工作流的一个或多个任务表示为二维坐标系中的多个相邻形状,其中,每个形状具有沿着所述二维坐标系的第一轴的第一维度和沿着所述二维坐标系的第二轴的第二维度,所述第一维度对应于所述一个或多个任务中给定任务的时长,所述第二维度对应于所述一个或多个任务中所述给定任务使用的资源量;将所述多个形状变换为多边形;以及在所述二维坐标系中绘制所述多边形。

在一些示例实施例中,表示所述一个或多个任务可以包括:将每个形状的第一端点定位在所述第一轴上的第一坐标处,以及将每个形状的第二端点定位在所述第一轴上的第二坐标处,其中,所述第一坐标对应于所述一个或多个任务中所述给定任务的开始时间,所述第二坐标对应于所述一个或多个任务中所述给定任务的结束时间。

在一些示例实施例中,将所述多个形状变换为多边形可以包括:将所述多个形状中的重叠形状的左顶点和右顶点的坐标输入至少一个阵列;以及基于输入所述至少一个阵列的所述坐标生成形成所述多边形的顶点的闭合路径。

在一些示例实施例中,将所述多个形状中的所述重叠形状的所述左顶点和右顶点的所述坐标输入所述至少一个阵列可以包括:创建途经所述多个形状的左顶点的第一路径以及途经所述多个形状的右顶点的第二路径;将所述多个形状中的所述重叠形状的所述左顶点的所述坐标按其在所述第一路径中出现的顺序输入第一阵列;将所述多个形状中的所述重叠形状的所述右顶点的所述坐标按其在所述第二路径中出现的顺序输入第二阵列。

在一些示例实施例中,所述方法可以包括:确定所述多个形状中的第一选定形状的左顶点的第一坐标小于所述多个形状中的第二选定形状的右顶点的第一坐标,其中,所述多个形状中的所述第二选定形状沿着所述第二轴与所述多个形状中的所述第一选定形状相邻;以及确定所述多个形状中的所述第一选定形状的右顶点的第一坐标大于所述多个形状中的所述第二选定形状的左顶点的第一坐标,由此确定所述多个形状中的所述第一选定形状与所述多个形状中的所述第二选定形状重叠。

在一些示例实施例中,输入所述多个形状中的所述重叠形状的所述左顶点和右顶点的所述坐标可以包括:从所述多个形状的所述左顶点中的选定顶点开始所述第一路径和所述第二路径中的至少一个,其中,所述左顶点中的所述选定顶点的第一坐标小于所述多个形状的所述左顶点中的剩余顶点的第一坐标,并且所述左顶点中的所述选定顶点的第二坐标小于所述多个形状的所述左顶点中的所述剩余顶点的第二坐标。

在一些示例实施例中,输入所述多个形状中的所述重叠形状的所述左顶点和右顶点的所述坐标可以包括:从所述多个形状的所述右顶点中的选定顶点开始所述第一路径和所述第二路径中的至少一个,其中,所述右顶点中的所述选定顶点的第一坐标大于所述多个形状的所述右顶点中的剩余顶点的第一坐标,并且所述右顶点中的所述选定顶点的第二坐标大于所述多个形状的所述右顶点中的所述剩余顶点的第二坐标。

在一些示例实施例中,生成所述顶点的所述闭合路径可以包括:连接所述第一阵列和所述第二阵列以形成第三阵列,以及基于来自所述第三阵列的坐标生成所述闭合路径。

根据另一方面,提供了一种可视化计算工作流的系统。所述系统包括:至少一个处理单元;以及非瞬时性存储器,其通信地耦合到所述至少一个处理单元并且包括计算机可读程序指令,其中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:将所述计算工作流的一个或多个任务表示为二维坐标系中的多个相邻形状,其中,每个形状具有沿着所述二维坐标系的第一轴的第一维度和沿着所述二维坐标系的第二轴的第二维度,所述第一维度对应于所述一个或多个任务中给定任务的时长,所述第二维度对应于所述一个或多个任务中所述给定任务使用的资源量;将所述多个形状变换为多边形;以及在所述二维坐标系中绘制所述多边形。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:将每个形状的第一端点定位在所述第一轴上的第一坐标处,以及将每个形状的第二端点定位在所述第一轴上的第二坐标处,其中,所述第一坐标对应于所述一个或多个任务中所述给定任务的开始时间,所述第二坐标对应于所述一个或多个任务中所述给定任务的结束时间。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:将所述多个形状中的重叠形状的左顶点和右顶点的坐标输入至少一个阵列;以及基于输入所述至少一个阵列的所述坐标生成形成所述多边形的顶点的闭合路径。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:创建途经所述多个形状的左顶点的第一路径以及途经所述多个形状的右顶点的第二路径;将所述多个形状中的所述重叠形状的所述左顶点的所述坐标按其在所述第一路径中出现的顺序输入第一阵列;将所述多个形状中的所述重叠形状的所述右顶点的所述坐标按其在所述第二路径中出现的顺序输入第二阵列。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:确定所述多个形状中的第一选定形状的左顶点的第一坐标小于所述多个形状中的第二选定形状的右顶点的第一坐标,其中,所述多个形状中的所述第二选定形状沿着所述第二轴与所述多个形状中的所述第一选定形状相邻;以及确定所述多个形状中的所述第一选定形状的右顶点的第一坐标大于所述多个形状中的所述第二选定形状的左顶点的第一坐标,由此确定所述多个形状中的所述第一选定形状与所述多个形状中的所述第二选定形状重叠。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:从所述多个形状的所述左顶点中的选定顶点开始所述第一路径和所述第二路径中的至少一个,其中,所述左顶点中的所述选定顶点的第一坐标小于所述多个形状的所述左顶点中的剩余顶点的第一坐标,并且所述左顶点中的所述选定顶点的第二坐标小于所述多个形状的所述左顶点中的所述剩余顶点的第二坐标。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:从所述多个形状的所述右顶点中的选定顶点开始所述第一路径和所述第二路径中的至少一个,其中,所述右顶点中的所述选定顶点的第一坐标大于所述多个形状的所述右顶点中的剩余顶点的第一坐标,并且所述右顶点中的所述选定顶点的第二坐标大于所述多个形状的所述右顶点中的所述剩余顶点的第二坐标。

在一些示例实施例中,所述计算机可读程序指令可由所述至少一个处理单元执行以用于:连接所述第一阵列和所述第二阵列以形成第三阵列,以及基于来自所述第三阵列的坐标生成所述闭合路径。

在阅读本发明之后,本领域技术人员将会看到关于本改进的许多其它特征和组合。

附图说明

在图中:

图1示出了根据一实施例的一种可视化计算工作流的示例方法的流程图;

图2是图1中获取各个任务详细信息和工作流详细信息的步骤的流程图;

图3是图1中生成计算工作流的视觉表示的步骤的流程图;

图4是图3中创建在每个工作流实例的每个计算阶段中执行的任务随时间的资源使用量的图的步骤的流程图;

图5是图4中将相邻形状变换为邻接多边形的步骤的流程图;

图6示出了图4中将相邻形状变换为邻接多边形的步骤的示例实现;

图7a示出了根据第一实施例的邻接多边形;

图7b示出了根据第二实施例的邻接多边形;

图8是根据一实施例的一种可视化计算工作流的示例系统的方框图;

图9是图8的日志文件解析模块的方框图;

图10是图8的视觉表示生成模块的方框图;

图11是一种用于实现图8的系统的示例计算设备的方框图;

图12示出了根据一实施例的计算工作流的六个实例随时间的资源使用量的图,其中,该计算工作流包括具有延迟任务的工作流实例;

图13示出了根据一实施例的计算工作流的多个实例随时间的资源使用量的图,其中,该计算工作流包括具有长时间运行的异常任务的工作流实例;

图14示出了根据一实施例的计算工作流的给定实例随时间的资源使用量的图,其中,该工作流实例包括串行执行和并行执行的计算阶段;

图15a以线性标度示出根据一实施例的计算工作流的两个实例随时间的资源使用量的图;以及

图15b以对数标度示出了图15a中的图。

需要注意的是,在所有附图中,相同的特征由相同的附图标号标识。

具体实施方式

参考图1,现在将描述根据一实施例的可视化计算工作流的示例方法100。如本文所使用的,术语“计算工作流”是指运行在分布式计算集群中的一组相互依赖的任务。工作流可以具有多个抽象级。例如,在高(或工作流)级层面,工作流可以生成关键业务报告。在另一(或阶段)级层面,工作流可以分解为多个计算阶段,每个阶段都可以包括依赖关系。每个计算阶段包括可并行运行的一系列可并行作业。每个作业执行一系列的基本计算任务(称为低级或任务级)。这些任务表示通常在计算主机上串行实施的基本工作单元。例如,在mapreduce框架中,任务可以是在一个数据块上运行的单个map任务或reduce任务。换言之,任务是在计算集群上运行一段时间的单个容器,从而一组并行操作的任务的集体输出实现了可并行作业的目标。

在步骤102处,获取关于各个低级任务和高级工作流的详细信息。然后,在步骤104处,将各个任务详细信息与工作流详细信息相关联,并且在步骤106处,生成工作流的视觉表示。在一实施例中,工作流的视觉表示包括图形元素。在另一实施例中,工作流的视觉表示既包括图形元素又包括文本元素。如将在下文进一步讨论的,在步骤106处生成的视觉表示跨越若干个抽象级,从而提供工作流中资源使用量的详细视图。将视觉表示绘制在二维(或(x,y))坐标系中,其中,时间沿着第一(或x)轴显示,用于每个任务的系统资源量沿着第二(或y)轴显示。本文提及的系统资源包括但不限于中央处理器(centralprocessingunit,cpu)使用率、计算容器或槽位、随机存取存储器(randomaccessmemory,ram)使用率和网络带宽使用率。当执行工作流时,将被执行工作流的状态的几个实例(本文称为工作流实例)保存在存储器中。例如,工作流可以每天运行(针对当天的数据),每个工作流实例对应于工作流在给定日期的运行。使用方法100可以在公共时间线上同时绘制多个工作流实例。采用这种方式能突出工作流实例之间的差异并能识别出差异的来源。

现参考图2以及图1,步骤102包括步骤202:解析一个或多个作业日志以获取关于各个任务和相应作业的详细信息。为此,从存储器中提取并解析一个或多个作业日志,例如为每个作业生成的作业历史文件。针对每个任务,在步骤202处获取的任务详细信息可以包括但不限于开始时间、完成时间、在其上实施任务的计算主机的名称、容器标识、指标、尝试标识、状态以及失败或终止任务的失败原因。步骤102还包括步骤204:解析一个或多个工作流日志以获取工作流描述。在一实施例中,工作流描述是每个工作流实例中的作业的有向无环图(directedacyclicgraph,dag)。应理解,可以修改步骤202和204的顺序。例如,在解析作业日志以获取有关各个任务和相应作业的详细信息之前,可以解析工作流日志并获取作业的dag。在某些情况下,关于工作流的信息可以直接存储在任务日志中,以便可以在单个步骤中获取任务级和工作流级信息。一旦获取了各个任务详细信息和工作流详细信息,在步骤104处,将这些详细信息进行关联,以将低级任务与高级工作流相关联并相应地确定工作流的每个计算阶段的组成任务。

例如,在一实施例中,在作业运行时间可以将工作流标识写入每个作业日志。在解析日志时,提取工作流标识,并将具有相同工作流标识的所有作业分在同一组并与所标识的工作流进行关联。如果工作流包含多个概念的计算级,则工作流标识能允许将低级任务与任务在整个工作流层级中的位置进行关联。例如,单个工作流可以包含一系列的apachehive查询。每个hive查询可以跨越包括低级map和reduce任务的多个可并行计算阶段。可以将工作流标识添加到低级计算任务的日志中,以标识阶段、查询和与map任务和reduce任务相关联的整个系列查询(顶级工作流)。一旦完成关联,则在步骤106处,基于该关联生成工作流的视觉表示。

现参考图3和图4,步骤106包括:在步骤302处,创建在每个工作流实例的每个计算阶段中执行的任务随时间的资源使用量的图。每个工作流实例的计算阶段沿时间轴彼此相邻(例如从左到右)绘制。然后,在步骤304处,在公共时间线上同时绘制所有工作流实例的图,其中,各个工作流实例在综合视图中并排绘制在公共x轴和y轴上。如图4所示,步骤302包括:在步骤402处,在(x,y)坐标系中将每个任务表示为图形元素,例如二维形状等。创建的形状的第一维度(即沿x轴的维度)对应于相应任务的时长。形状的第二维度(即沿y轴或资源轴的维度)对应于任务的资源使用量。在一实施例中,形状是矩形,在这种情况下,第一维度是矩形的长度,第二维度是矩形的高度。在另一实施例中,形状是线,在这种情况下,第一维度是线的长度,第二维度是线在资源轴上的位置(即坐标)。

在一实施例中,每个形状单独绘制在(x,y)坐标系中,其中,将形状的端点定位在x轴上与相应任务的开始时间和结束时间相对应的点上。将该形状定位在y轴上,以指示分配给计算主机上的相应任务并由该相应任务占用的系统资源(例如计算容器或槽位)。这指示了在每个计算阶段中分配和执行任务的方式。具体地,在步骤404处,将每个计算阶段的任务表示为沿着y轴相邻的相邻形状。可以根据相应任务的开始时间、相应任务的时长或在其上执行相应任务的计算主机沿y轴对创建的形状进行排序(或堆叠)。这些任务也可以用颜色编码:向不同任务分配不同颜色(例如,第一颜色用于map任务,第二颜色用于reduce任务)。另外,可以使用矩形等的轮廓来界定每个计算阶段。在一实施例中,针对任何给定计算阶段,轮廓界定了最早任务的开始(或开始时间)和最晚完成任务的结束(或结束时间)。在另一实施例中,针对任何给定计算阶段,轮廓界定了执行任务的作业的提交时间和该作业的完成时间。将任务表示为沿着y轴彼此相邻能够容易地获取与任何给定计算阶段相关联的任务的总数。

应理解,每个任务既可以表示为图形元素(或形状)又可以表示为文本元素。在这种情况下,文本元素可以包括在图2的步骤202处获取的任务详细信息中的一个或多个。例如,文本元素可以指示每个任务的指标,包括但不限于内存量、cpu和每个任务执行的垃圾收集时间。文本元素可以在用户选择在屏幕等合适的输出设备上呈现的绘制形状后呈现。可以使用触摸屏、鼠标等(未示出)输入设备来执行选择。

现参考图5以及图4,在一实施例中,在步骤406处,将在步骤404处创建的相邻形状变换为邻接多边形。这可以使用以下项来实现:获知的在步骤402中已创建形状的所有任务的开始和结束时间,如从上文结合图2讨论的任务详细信息中获取的开始和结束时间。然后,在步骤408处,绘制邻接多边形(而不是绘制单个形状,如上所述)。步骤406包括步骤502:找寻途经步骤402处创建的所有形状的左顶点的第一路径,并找寻途经所有形状的右顶点的第二路径。在一实施例中,从具有最小坐标(x,y)的选定顶点开始找寻第一路径和第二路径。在另一实施例中,从具有最大坐标(x,y)的选定顶点开始找寻第一路径和第二路径。然后,下一步骤504为:按照左顶点在第一路径中出现的顺序用左顶点的坐标依次填充第一阵列。在步骤506处,按照右顶点在第二路径中出现的顺序用右顶点的坐标依次填充第二阵列。应理解,可以修改步骤504和506的顺序。步骤504和506也可以同时执行。还应理解,可以使用单个阵列而不使用第一阵列和第二阵列。在一实施例中,在第一路径和第二路径上遇到的顶点的坐标可以在多维阵列的不同列或行中提供。在另一实施例中,将第一路径预先添加到阵列,将第二路径追加到同一阵列。

每当在第一路径上遇到给定左顶点(属于当前形状的给定左边缘)时,下一步骤508为:评估该给定左边缘是否在(沿着y轴)紧邻当前形状的前一形状的右边缘的左侧,以及评估当前形状的右边缘是否在紧邻的前一形状的左边缘的右侧。这相当于评估左顶点在x(或时间)轴的坐标(本文称为x坐标)是否小于紧邻的前一右顶点的x坐标,以及评估在第一路径上是否能遇到x坐标大于紧邻的前一左顶点的x坐标的右顶点。换言之,步骤508通过以下方式评估两个形状是否重叠:评估当前形状的开始时间是否小于紧邻的前一形状的结束时间,以及评估当前形状的完成时间是否大于紧邻的前一形状的开始时间。如果在步骤508处执行的评估结果是肯定的,意味着形状重叠,则重复步骤504、506和508。否则,下一步骤510为关闭第一阵列和第二阵列。然后,在步骤512处,连接这两个阵列以生成顶点的闭合路径,该闭合路径形成邻接多边形。

图6示出了图4中将相邻形状变换为邻接多边形的步骤406的示例实现。图6示出了给定计算阶段的三个矩形r1、r2和r3,每个矩形在(x,y)坐标系中代表相应任务随时间的资源使用量。可以看出,矩形r1和r2沿着y轴堆叠并且沿着x轴重叠。矩形r3不与矩形r1和r2中的任何一个重叠。应理解,针对给定计算阶段,当计算集群忙于执行不相关任务且当前计算阶段的资源暂时不可用时,可以存在非重叠矩形。将两个重叠矩形r1和r2变换为第一多边形p1,将矩形r3变换为第二多边形p2。为此,创建分别在图6中标记为“阵列1”和“阵列2”的第一阵列和第二阵列。将具有最小坐标(x,y)的顶点,即坐标为(x0,y0)的顶点用作起点,其中,从该起点开始找寻途经矩形r1、r2和r3的左顶点的第一路径602。也是从坐标为(x0,y0)的顶点开始找寻途经矩形r1、r2和r3的右顶点的第二路径604。如上所述,第一路径和/或第二路径可以从除具有最小坐标(x,y)的顶点以外的顶点开始。例如,第一路径和/或第二路径可以从具有最大坐标(x,y)的顶点开始。从图6中可以看出,矩形r1的左顶点具有坐标(x0,y0)和(x0,y1),矩形r1的右顶点具有坐标(x2,y0)和(x2,y1)。对于矩形r2,左顶点具有坐标(x1,y1)和(x1,y2),右顶点具有坐标(x3,y1)和(x3,y2)。对于矩形r3,左顶点具有坐标(x4,y2)和(x4,y3),右顶点具有坐标(x5,y2)和(x5,y3)。

将在第一路径上遇到的左顶点的坐标按其在第一路径中出现的顺序输入第一阵列。将在第二路径上遇到的右顶点的坐标按其在第二路径中出现的顺序输入第二阵列。如上所述,每当在第一路径上遇到给定左顶点(属于当前形状的给定左边缘)时,评估该给定左边缘是否在(沿着y轴)紧邻当前形状的前一形状的右边缘的左侧,以及评估当前形状的右边缘是否在紧邻的前一形状的左边缘的右侧。如上所述,这意味着给定左顶点所属的形状(即矩形)是否与紧邻的前一矩形重叠。在图6的示例中,在沿第一路径到达矩形r3的坐标为(x4,y2)的左顶点后,确定矩形r3的左边缘在紧邻的前一右边缘(即矩形r2的右边缘)的右侧。因此可以得出结论:矩形r3不与矩形r2重叠。因此,不将矩形r3的顶点的坐标(x4,y2)(以及矩形r3的任何其它坐标)输入第一阵列和第二阵列中的任何一个,并且关闭第一阵列和第二阵列。然后,使用矩形r3的坐标(x4,y2)作为第一路径和/或第二路径的原点,针对新的一组矩形重复图4的步骤406。

因此,在关闭阵列时,已将坐标(x0,y0)、(x0,y1)、(x1,y1)和(x1,y2)输入第一阵列,将坐标(x0,y0)、(x2,y0)、(x2,y1)、(x3,y1)和(x3,y2)输入第二阵列,如图6所示。然后,连接第一阵列和第二阵列以形成顶点的闭合路径。在第一阵列和第二阵列具有单个维度的一实施例中,将第一阵列和第二阵列沿该维度连接以生成也具有单个维度的连接阵列。具体地,在阵列连接之前反转第一阵列或第二阵列,以便按序遍历连接阵列,从而使得在新形成的邻接多边形的邻接路径上遍历每个顶点。图6示出了连接“阵列1”(本文中称为a1)和“阵列2”(本文中称为a2)而产生的一个可能阵列(标记为“阵列3”,本文中称为a3),其中,a3=[a1,反向(a2)]。应理解,其它可能实施方式包括:a3=[a2,反向(a1)]、a3=[反向(a1),a2]和a3=[反向(a2),a1]。使用在连接阵列中找到的坐标绘制邻接多边形p1,以在(x,y)坐标系中表示堆叠的矩形r1和r2。将非重叠矩形r3绘制成大小与矩形r3相同的多边形p2。

图7a示出了根据第一实施例的使用图5中将相邻形状变换为邻接多边形的步骤404来变换四个堆叠的矩形r1、r2、r3和r4以及非重叠矩形r5的一示例。将矩形r1、r2、r3和r4变换为第一多边形p3,将矩形r5变换为大小与矩形r5相同的第二多边形p4。图7b示出了根据第二实施例的使用图5的步骤404来变换矩形r1、r2、r3、r4和r5的示例。将矩形r1、r2、r3、r4变换为第一多边形p3',将矩形r5变换为多边形p4。在图7b的实施例中,多边形p3'包括用于分隔各个矩形r1、r2、r3和r4的线702。在一实施例中,线702以矢量化方式绘制。

现参考图8,现在将描述根据一实施例的可视化计算工作流的示例系统800。系统800实现上文结合图1、图2、图3、图4和图5描述的方法。为此,系统800包括日志文件解析模块802、关联模块804和视觉表示生成模块806。

参考图9以及图8,日志文件解析模块802包括作业/任务详细信息提取模块902和工作流有向无环图(directedacyclicgraph,dag)提取模块906。作业/任务详细信息提取模块902解析一个或多个作业日志以获取有关各个任务和相应作业的详细信息。工作流dag提取模块906解析一个或多个工作流日志以获取每个工作流实例中的作业的dag。然后,关联模块804将各个任务详细信息与工作流详细信息相关联,以确定每个工作流实例的每个计算阶段的组成任务。

参考图10,视觉表示生成模块806包括二维形状生成模块1002、可选的邻接多边形生成模块1004以及绘图模块1006。二维形状生成模块1002创建在每个工作流实例的每个计算阶段中执行的任务随时间的资源使用量的图。具体地,二维形状生成模块1002在二维(或(x,y))坐标系中创建表示每个任务的二维形状,例如矩形或线等。创建该形状,使得具有沿着x轴的第一维度和沿着y轴的第二维度。第一维度对应于形状表示的任务的时长,第二维度对应于任务的资源使用量。然后,二维形状生成模块1002将每个计算阶段的任务表示为沿着y轴的相邻(或堆叠)形状。在一实施例中,邻接多边形生成模块1004将堆叠的形状变换为邻接多边形。为此,以及如上结合图5所讨论的,邻接多边形生成模块1004使用二维形状生成模块1002创建的形状的(x,y)坐标来填充至少一个阵列(在一实施例中,为两个阵列),直到形状不再重叠。然后,邻接多边形生成模块1004连接这两个阵列,以生成形成邻接多边形的顶点的闭合路径。应理解,当使用单个阵列而非如上所述的第一阵列和第二阵列时,无需发生连接步骤。然后,绘图模块1006为所有工作流实例和所有计算阶段生成工作流可视化的图。这通过以下方式实现:针对每个工作流实例及其每个计算阶段,绘制非重叠形状以及由邻接多边形生成模块生成的邻接多边形,以及在公共时间线上同时绘制所有工作流实例的图。

图11是用于实现上述结合图8、图9和图10描述的系统800的计算设备1100的示例实施例。计算设备1100包括处理单元1102和其中存储有计算机可执行指令1106的存储器1104。处理单元1102可以包括任何合适设备,用于使一系列步骤得以执行,从而在计算设备1100或其它可编程装置执行指令1106时,指令1106可以使本文所述方法中指定的功能/动作/步骤得以执行。例如,处理单元1102可以包括任何类型的通用微处理器或微控制器、数字信号处理(digitalsignalprocessing,dsp)处理器、cpu、集成电路、现场可编程门阵列(fieldprogrammablegatearray,fpga)、可重构处理器、其它适当编程或可编程逻辑电路或其任何组合。

存储器1104可以包括任何合适的已知或其它机器可读存储介质。例如,存储器1104可以包括但不限于电子、磁性、光学、电磁、红外或半导体系统、装置或设备或前述的任何适当组合的非瞬时性计算机可读存储介质。存储器1104可以包括位于设备内部或外部的任何类型的计算机存储器的适当组合,例如随机存取存储器(random-accessmemory,ram)、只读存储器(read-onlymemory,rom)、光盘只读存储器(compactdiscread-onlymemory,cdrom)、电光存储器、磁光存储器、可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom)、电可擦除可编程只读存储器(electrically-erasableprogrammableread-onlymemory,eeprom)、铁电ram(ferroelectricram,fram)等。存储器1104可以包括适合于可检索地存储处理单元1102可执行的机器可读指令1106的任何存储装置(例如设备)。

使用提议的可视化计算工作流的方法和系统可以获取工作流实例的纵向比较。也可以同时呈现多个级的关于任务、阶段和随时间的工作流资源使用量的详细信息。因此,可以有助于识别异常性能。例如,可以传达延迟任务、长时间运行任务、不一致的资源分配等问题。这继而又减少了跨多个计算阶段比较资源使用量所需的工作量。

例如,图12示出了资源使用量图1200,其中,任务在给定计算工作流的各个实例1202a、1202b、1202c、1202d、1202e、1202f中执行。工作流实例1202a等每个工作流实例包括计算阶段1204。在所示实施例中,每个计算阶段1204包括map任务的第一子阶段和reduce任务的第二子阶段。时间(或x)轴的原点定位在对应于向计算集群提交第一计算阶段(即,图12的实施例中工作流实例1202e的计算阶段)的时刻。各个工作流实例1202a、1202b、1202c、1202d、1202e、1202f在不同数据块中以及在不同时间点(例如在不同日期)执行基本相同的map和reduce任务。图1200允许同时查看多个工作流实例1202a、1202b、1202c、1202d、1202e、1202f以突出其间的差异。具体地,从图1200可以看出,就提交第一计算作业的时间而言,相比实例1202b、1202c、1202d、1202e、1202f(即,相比执行工作流的其它时刻),在第二工作流实例1202b中执行的任务1206延迟了大约一小时。

图13示出了第一工作流实例1302a和第二工作流实例1302b随时间的资源使用量的图1300。可以看出,长时间运行的异常map任务1304在第二工作流实例1302b中执行。长时间运行的map任务1304可能是因为工作流编排节点中缺少依赖关系而导致的。

应理解,尽管图12和图13中所示的视觉表示通常表示串行运行的计算阶段,但并行运行的计算阶段也可以使用本文所述的方法和系统来可视化。在一实施例中,对于并行运行的子阶段,相应任务的详细信息(即相应的二维形状)以重叠配置的方式绘制在彼此之上。在本实施例中,顶层形状呈半透明以允许查看底层形状的详细信息。例如,对于图13中的工作流实例1302a,可以观察到与map任务稍微重叠的reduce任务,因为reduce任务被配置为在给定数量(图13的示例集群中为90%)的map任务完成时开始。由于map阶段和reduce阶段往往会有少量重叠,因此可以将这些阶段重叠绘制且几乎没有信息丢失。然而,应理解,子阶段的重叠表示是否合适取决于计算任务的配置。

在另一实施例中,当不同计算阶段并行运行并且在它们的时间跨度内有很多重叠时,相应任务的详细信息可以堆叠在彼此之上。任务详细信息也可以用不同颜色绘制。这在图14中示出,图14示出了包括计算阶段1402、1404和1406的工作流实例的图1400,阶段1402、1404和1406都由map任务的第一子阶段(未示出)和reduce任务的第二子阶段(未示出)组成。阶段1402和1404以及阶段1402和1406串行运行。阶段1404和1406并行运行。计算阶段1406和1404的任务详细信息沿资源轴堆叠在彼此之上。

在又一实施例中(未示出),可以按第一可用且不重叠的方式来绘制重叠阶段的形状,即在图上从左到右移动,从底部到顶部绘制内部任务跨度。具体地,在本实施例中,第一阶段如本文所示(例如参见图14)进行表示,下一阶段通过迭代地绘制每个相应任务的时间跨度来表示。通过填充当前未被前一步骤绘制的形状所占用的第一个可用空间来绘制每个任务的时间跨度。

在另一实施例(未示出)中,来自多个工作流实例的信息可以组合成单个图。换言之,一个工作流实例的计算任务的时间跨度可以绘制成一种颜色(或map阶段和reduce阶段用一对颜色等),其它工作流实例的计算任务的时间跨度可以在同一个图上绘制成其它颜色(或成对颜色)。任务形状之间的重叠可以使用堆叠配置、半透明和重叠配置以及上面讨论的第一可用且不重叠配置中的任何一种进行绘制。提供的用于绘制这种图的用户界面可以允许用户选择将哪些工作流实例绘制在一起。然后,可以轻松确定一工作流实例对另一个的影响。

应理解,在一些实施例中,资源轴可以用对数标度绘制以方便查看使用很少资源的作业。这在图15a和图15b中示出,图15a用线性标度示出了随时间的任务资源使用量的图1502,图15b示出了如图1504的图1502,其中资源轴使用对数标度。

在一实施例中,一种可视化计算工作流的方法包括:将计算工作流的一个或多个任务表示为二维坐标系中的多个相邻形状,其中,每个形状具有沿着二维坐标系的第一轴的第一维度和沿着二维坐标系的第二轴的第二维度,所述第一维度对应于一个或多个任务中给定任务的时长,所述第二维度对应于一个或多个任务中给定任务使用的资源量;将多个形状变换为多边形;以及在二维坐标系中绘制多边形。

表示一个或多个任务包括:将每个形状的第一端点定位在第一轴上的第一坐标处,以及将每个形状的第二端点定位在第一轴上的第二坐标处,其中,第一坐标对应于一个或多个任务中给定任务的开始时间,第二坐标对应于一个或多个任务中给定任务的结束时间。

将多个形状变换为多边形包括:将多个形状中的重叠形状的左顶点和右顶点的坐标输入至少一个阵列;以及基于输入至少一个阵列的坐标生成形成多边形的顶点的闭合路径。

将多个形状中的重叠形状的左顶点和右顶点的坐标输入至少一个阵列包括:创建途经多个形状的左顶点的第一路径以及途经多个形状的右顶点的第二路径;将多个形状中的重叠形状的左顶点的坐标按其在第一路径中出现的顺序输入第一阵列;将多个形状中的重叠形状的右顶点的坐标按其在第二路径中出现的顺序输入第二阵列。

还确定多个形状中的第一选定形状的左顶点的第一坐标小于多个形状中的第二选定形状的右顶点的第一坐标,其中,多个形状中的第二选定形状沿着第二轴与多个形状中的第一选定形状相邻;以及确定多个形状中的第一选定形状的右顶点的第一坐标大于多个形状中的第二选定形状的左顶点的第一坐标,由此确定多个形状中的第一选定形状与多个形状中的第二选定形状重叠。

输入多个形状中的重叠形状的左顶点和右顶点的坐标包括:从多个形状的左顶点中的选定顶点开始第一路径和第二路径中的至少一个,其中,左顶点中的选定顶点的第一坐标小于多个形状的左顶点中的剩余顶点的第一坐标,并且左顶点中的选定顶点的第二坐标小于多个形状的左顶点中的剩余顶点的第二坐标。

输入多个形状中的重叠形状的左顶点和右顶点的坐标包括:从所述多个形状的右顶点中的选定顶点开始第一路径和所述第二路径中的至少一个,其中,右顶点中的选定顶点的第一坐标大于多个形状的右顶点中的剩余顶点的第一坐标,并且右顶点中的选定顶点的第二坐标大于多个形状的右顶点中的剩余顶点的第二坐标。

生成顶点的闭合路径可以包括:连接第一阵列和第二阵列以形成第三阵列,以及基于来自第三阵列的坐标生成闭合路径。

在一实施例中,提供一种可视化计算工作流的系统,该系统包括:至少一个处理单元;以及非瞬时性存储器,其通信地耦合到至少一个处理单元并且包括计算机可读程序指令,其中,计算机可读程序指令可由至少一个处理单元执行以用于:将计算工作流的一个或多个任务表示为二维坐标系中的多个相邻形状,其中,每个形状具有沿着二维坐标系的第一轴的第一维度和沿着二维坐标系的第二轴的第二维度,第一维度对应于一个或多个任务中给定任务的时长,第二维度对应于一个或多个任务中给定任务使用的资源量;将多个形状变换为多边形;以及在二维坐标系中绘制多边形。

计算机可读程序指令可由至少一个处理单元执行以用于:将每个形状的第一端点定位在第一轴上的第一坐标处,以及将每个形状的第二端点定位在第一轴上的第二坐标处,其中,第一坐标对应于一个或多个任务中给定任务的开始时间,第二坐标对应于一个或多个任务中给定任务的结束时间。

计算机可读程序指令可由至少一个处理单元执行以用于:将多个形状中的重叠形状的左顶点和右顶点的坐标输入至少一个阵列;以及基于输入至少一个阵列的坐标生成形成多边形的顶点的闭合路径。

计算机可读程序指令可由至少一个处理单元执行以用于:创建途经多个形状的左顶点的第一路径以及途经多个形状的右顶点的第二路径;将多个形状中的重叠形状的左顶点的坐标按其在第一路径中出现的顺序输入第一阵列;将多个形状中的重叠形状的右顶点的坐标按其在第二路径中出现的顺序输入第二阵列。

计算机可读程序指令可由至少一个处理单元执行以用于:确定多个形状中的第一选定形状的左顶点的第一坐标小于多个形状中的第二选定形状的右顶点的第一坐标,其中,多个形状中的第二选定形状沿着第二轴与多个形状中的第一选定形状相邻;以及确定多个形状中的第一选定形状的右顶点的第一坐标大于多个形状中的第二选定形状的左顶点的第一坐标,由此确定多个形状中的第一选定形状与多个形状中的第二选定形状重叠。

计算机可读程序指令可由至少一个处理单元执行以用于:从多个形状的左顶点中的选定顶点开始第一路径和第二路径中的至少一个,其中,左顶点中的选定顶点的第一坐标小于多个形状的左顶点中的剩余顶点的第一坐标,并且左顶点中的选定顶点的第二坐标小于多个形状的左顶点中的剩余顶点的第二坐标。

计算机可读程序指令可由至少一个处理单元执行以用于:从多个形状的右顶点中的选定顶点开始第一路径和第二路径中的至少一个,其中,右顶点中的选定顶点的第一坐标大于多个形状的右顶点中的剩余顶点的第一坐标,并且右顶点中的选定顶点的第二坐标大于多个形状的右顶点中的剩余顶点的第二坐标。

计算机可读程序指令可由至少一个处理单元执行以用于:连接第一阵列和第二阵列以形成第三阵列,以及基于来自第三阵列的坐标生成闭合路径。

以上描述仅为示例性的,相关领域技术人员将认识到,可以在不脱离所公开发明的范围的情况下改变所述实施例。例如,本文所述的流程图和附图中的方框和/或操作仅用于示例目的。在不脱离本发明的教导的前提下,这些方框和/或操作可以有许多变化。例如,可以按不同顺序执行方框,或者可以添加、删除或修改方框。

尽管在方框图中示出了通过不同的数据信号连接来彼此通信的分立组件组,但是本领域技术人员将理解,当前实施例通过硬件和软件组件的组合来提供,其中一些组件通过硬件或软件系统的给定功能或操作来实现,并且所示出的许多数据路径通过计算机应用或操作系统内的数据通信来实现。基于这种理解,本发明的技术方案可通过软件产品的形式体现。软件产品可以存储在非易失性或非瞬时性存储介质中,存储介质可以是只读存储器(read-onlymemory,rom)、磁盘、光盘、闪存驱动器或任何其它合适的存储介质或者设备。

本文描述的每个计算机程序可以用高级程序,或面向对象的编程,或脚本语言或其组合来实现,以与计算机系统进行通信。或者,程序可以用汇编或机器语言来实现。该语言可以是编译或解释语言。软件产品包括能够使计算机设备(个人计算机、服务器或网络设备)执行本发明实施例中提供的方法的多个指令。计算机可执行指令可以以许多形式,包括程序模块,由一个或多个计算机或其它设备执行。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件以及数据结构等。通常,程序模块的功能可根据各实施例需要进行组合或分配。因此提供所示结构是为了本实施例的教导效率。在不脱离权利要求书的主题的情况下,本发明可以体现为其它具体形式。

此外,相关领域的技术人员将理解,虽然本发明公开和示出的系统、方法和计算机可读介质可以包括具体数量的元件/组件,但是可以修改系统、方法和计算机可读介质以包括更多或更少的这种元件/组件。本发明也涵盖和包含所有合适的技术变化。在阅读本发明后,本发明范围涵盖的修改对于本领域技术人员而言将是显而易见的,并且所附权利要求旨在涵盖这样的修改。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1