CN106339458B - 一种基于弹性分布式数据集的Stage划分方法和终端 - Google Patents

一种基于弹性分布式数据集的Stage划分方法和终端 Download PDF

Info

Publication number
CN106339458B
CN106339458B CN201610741110.2A CN201610741110A CN106339458B CN 106339458 B CN106339458 B CN 106339458B CN 201610741110 A CN201610741110 A CN 201610741110A CN 106339458 B CN106339458 B CN 106339458B
Authority
CN
China
Prior art keywords
rdd
child
stage
parent
type
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
Application number
CN201610741110.2A
Other languages
English (en)
Other versions
CN106339458A (zh
Inventor
彭磊
党李飞
崔鑫
梁殿鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Huawei Cloud Computing Technology Co ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610741110.2A priority Critical patent/CN106339458B/zh
Publication of CN106339458A publication Critical patent/CN106339458A/zh
Application granted granted Critical
Publication of CN106339458B publication Critical patent/CN106339458B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供一种基于弹性分布式数据集的Stage划分方法和终端,涉及大数据领域,能够缩短Spark作业的执行时间。其方法为:首先,终端创建应用程序的RDD的有向无环图DAG;接着终端对DAG中的RDD划分Stage,并在任一子RDD同时存在宽依赖和窄依赖时,将子RDD、与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD划分至不同的Stage;而后终端并行执行与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD对应的任务后,执行子RDD对应的任务。本发明实施例应用于内存计算中对基于RDD的Stage进行划分和执行。

Description

一种基于弹性分布式数据集的Stage划分方法和终端
技术领域
本发明涉及大数据领域,尤其涉及一种基于弹性分布式数据集的Stage划分方法和终端。
背景技术
Spark是一种内存计算框架,Spark的核心数据结构是弹性分布式数据集(Resilient Distributed Datasets,RDD),RDD是一个容错的、并行的数据结构。RDD作为数据结构,本质上是一个只读的分区记录集合。一个RDD可以包含多个分区,每个分区就是一个数据集(Dataset)片段。RDD之间存在宽依赖(Narrow Dependency)和窄依赖(WideDependency)。如果RDD的每个分区最多只能被一个子RDD的一个分区使用,则称之为窄依赖,若RDD的每个分区被子RDD的多个分区都可以依赖,则称之为宽依赖。
Spark作业执行模型可以分为三步:第一步,创建应用程序的RDD的有向无环图(Directed Acyclic Graph,DAG);第二步,对RDD DAG作Stage切分,即对RDD划分Stage,每个Stage包括多个RDD,创建应用程序的逻辑执行计划(Stage DAG);第三步,获取执行器(Executor)资源来执行各个Stage对应的任务(Task),因为Stage之间有父子依赖关系,所以必须是先执行完父Stage后,才开始执行子Stage。
现有技术中,Spark在对RDD DAG作Stage切分时,是将拥有持续窄依赖的RDD归并到同一个Stage中,而宽依赖则作为划分不同Stage的判断标准。如图1所示,图1为Spark作业的RDD的DAG图,分区p一一对应的RDD之间为窄依赖,即图1中实线连接的RDD之间为窄依赖,分区并非一一对应的RDD之间为宽依赖,即虚线连接的RDD之间为宽依赖。如图2所示,将图1中具有宽依赖的子RDD和父RDD断开,将父RDD所在的Stage划分为Stage0,Stage0称为ShuffleMapStage,将持续窄依赖的RDD划分为一个Stage,即Stage1,Stage1称为ResultStage,因为Stage0是Stage1的父Stage,所以Stage1的执行必须要等到Stage0执行完成后才可以执行。因此现有技术中的RDD划分方法使得整个作业的执行时间长。
发明内容
本发明实施例提供一种基于弹性分布式数据集的Stage划分方法和终端,能够缩短Spark作业的执行时间。
一方面,提供一种基于弹性分布式数据集RDD的Stage划分方法,首先,终端创建应用程序的RDD的有向无环图DAG;接着终端对DAG中的RDD划分Stage,并在任一子RDD同时存在宽依赖和窄依赖时,将子RDD、与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD划分至不同的Stage;而后终端并行执行与子RDD存在宽依赖的父RDD所在的Stage和与子RDD存在窄依赖的父RDD所在的Stage对应的任务后,执行子RDD所在的Stage对应的任务。在任一子RDD同时存在宽依赖和窄依赖时,本发明实施例将子RDD、与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD划分至不同的Stage,也就是说,将与子RDD存在不同依赖关系的父RDD分别划分为不同的Stage,从而使得各个父RDD所在的Stage可以并行执行;而现有技术中将与子RDD存在宽依赖的父RDD划分到一个Stage,将子RDD以及与子RDD存在窄依赖的父RDD划分到一个Stage,必须在执行完与子RDD存在宽依赖的父RDD所在的Stage的任务后才能执行子RDD以及与子RDD存在窄依赖的父RDD所在Stage的任务,因此相对现有技术,本发明实施例在存在并行执行的情况下可以节省执行时间。
在一种可能的设计中,将子RDD、与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD划分至不同的Stage包括:终端将子RDD与所有父RDD的关系链断开,并将与子RDD存在宽依赖的父RDD划分至第一类型的Stage中,将与子RDD存在窄依赖的父RDD划分至第二类型的Stage中,子RDD所在的Stage的类型为第一类型、或第二类型、或第三类型,第一类型、第二类型和第三类型互不相同。在本发明中,第一类型可以为ShuffleMapStage,第三类型可以为ResultStage,本发明增加了第二类型,即MiddleStage,这样划分的话,可以使同时存在宽依赖和窄依赖的子RDD的各个父RDD所在的Stage并行执行,从而加快整个作业的执行效率,节省整个作业的执行时间。尤其是当子RDD的各个父RDD所在的Stage都是相对整个作业来说非常耗时的操作时,更加节省时间。举例来说,当子RDD的各个父RDD是通过I/O操作来生成时,因为I/O操作相比内存计算更加耗时,因此使子RDD的耗时长的各个父RDD所在的Stage并行执行而非依次执行,会更加节省执行时间。
在一种可能的设计中,终端并行执行与子RDD存在宽依赖的父RDD所在的Stage和与子RDD存在窄依赖的父RDD所在的Stage对应的任务后,执行子RDD所在的Stage对应的任务包括:终端获取与子RDD存在宽依赖的父RDD所在的Stage的运行资源和与子RDD存在窄依赖的父RDD所在的Stage的运行资源,并行执行与子RDD存在宽依赖的父RDD所在的Stage和与子RDD存在窄依赖的父RDD所在的Stage对应的任务;终端根据与子RDD存在窄依赖的父RDD所在的Stage的运行资源执行子RDD所在的Stage对应的任务。本发明实施例中,在子RDD同时存在宽依赖和窄依赖时,将与该子RDD存在窄依赖的父RDD划分到MiddleStage中,因为MiddleStage与子RDD所在的Stage为窄依赖关系,因此子RDD所需的运行资源可以运用MiddleStage的运行资源,从而在执行完MiddleStage后,子RDD所在的Stage可以直接使用MiddleStage的运行资源执行子RDD所在的Stage对应的任务,不需要重新请求资源,减少了资源请求次数。
在一种可能的设计中,在终端创建DAG之前,终端根据用户设置确定RDD的Stage划分策略,Stage划分策略用于将RDD后的Stage分划分为第一类型和第三类型,或Stage划分策略用于将RDD划分后的Stage分为第一类型、第二类型和第三类型。这样一来,可以使得用户自主选择RDD的Stage划分策略。
在一种可能的设计中,在终端对DAG中的RDD划分Stage之前,还包括:终端确定子RDD是否同时存在宽依赖和窄依赖;若确定否,则终端在子RDD存在宽依赖时,将与子RDD存在宽依赖的父RDD所在的Stage划分为第一类型。
另一方面,提供一种基于弹性分布式数据集RDD的Stage划分装置,包括:创建单元,用于创建应用程序的RDD的有向无环图DAG;划分单元,用于对DAG中的RDD划分Stage,并在任一子RDD同时存在宽依赖和窄依赖时,将子RDD、与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD划分至不同的Stage;执行单元,用于并行执行与子RDD存在宽依赖的父RDD所在的Stage和与子RDD存在窄依赖的父RDD所在的Stage对应的任务后,执行子RDD所在的Stage对应的任务。
在一种可能的设计中,划分单元用于:将子RDD与所有父RDD的关系链断开,并将与子RDD存在宽依赖的父RDD划分至第一类型的Stage中,将与子RDD存在窄依赖的父RDD划分至第二类型的Stage中,子RDD所在的Stage的类型为第一类型、或第二类型、或第三类型,第一类型、第二类型和第三类型互不相同。
在一种可能的设计中,执行单元用于:获取与子RDD存在宽依赖的父RDD所在的Stage的运行资源和与子RDD存在窄依赖的父RDD所在的Stage的运行资源,并行执行与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD所在的Stage对应的任务;根据与子RDD存在窄依赖的父RDD所在的Stage的运行资源执行子RDD所在的Stage对应的任务。
在一种可能的设计中,装置还包括设置单元:根据用户设置确定RDD的Stage划分策略,Stage划分策略用于将RDD划分后的Stage分为第一类型和第三类型,或Stage划分策略用于将RDD划分后的Stage分为第一类型、第二类型和第三类型。
在一种可能的设计中,装置还包括确定单元:确定子RDD是否同时存在宽依赖和窄依赖;若确定否,则终端在子RDD存在宽依赖时,将与子RDD存在宽依赖的父RDD所在的Stage划分为第一类型。
再一方面,提供了一种计算机存储介质,用于储存为上述装置所用的计算机软件指令,其包含用于执行上述方面所设计的程序。
本发明实施例在划分RDD所在的Stage类型时,新增加了一种Stage的类型,即第二类型,在子RDD同时存在宽依赖和窄依赖的情况下,将与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD分别划分到第一类型和第三类型中,假设第一类型为ShuffleMapStage,第二类型为MiddleStage,第三类型为ResultStage,即在子RDD同时存在宽依赖和窄依赖的情况下,将与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD分别划分到ShuffleMapStage和MiddleStage中,由于ShuffleMapStage和MiddleStage不存在依赖关系,从而使ShuffleMapStage和MiddleStage可以并行执行,而后再执行ResultStage,节省了作业的执行时间。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于弹性分布式数据集的Stage有向无环图;
图2为本发明实施例提供的一种基于弹性分布式数据集的Stage划分方法示意图;
图3为本发明实施例提供的一种基于弹性分布式数据集的Stage划分的终端内部结构示意图;
图4为本发明实施例提供的一种基于弹性分布式数据集的Stage划分方法示意图;
图5为本发明实施例提供的一种基于弹性分布式数据集的Stage划分方法流程示意图;
图6为本发明实施例提供的一种基于弹性分布式数据集的Stage划分方法流程示意图;
图7为本发明实施例提供的一种Stage划分策略接口选择示意图;
图8为本发明实施例提供的一种基于弹性分布式数据集的Stage划分方法示意图;
图9为本发明实施例提供的一种终端的结构示意图;
图10为本发明实施例提供的一种终端的结构示意图;
图11为本发明实施例提供的一种终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例可应用于内存计算,例如应用于Spark中对基于RDD的Stage进行划分和执行的场景。RDD是一个分布式数据集。本发明实施例的网络架构可以包括一台计算机设备,也可以是多台计算机设备连
接,多台计算机具有相同的内存计算框架,RDD数据可以分布存储于多台计算机上。该一台或多台计算机设备中部署有Spark平台,在Spark平台中可以进行Spark作业,本发明基于RDD的Stage划分策略可以是加入到Spark平台上的一个组件。
图3为本发明的终端的一种内部结构示意图,在本发明中,终端可以包括处理模块301、通讯模块302、存储模块303、显示模块304。其中,处理模块301用于控制终端的各部分硬件装置和应用程序软件等;通讯模块302用于可使用蜂窝、以太网、和红外等通讯方式接受其它设备发送的指令,也可以将终端的数据发送给云端或其它设备;存储模块303用于执行终端的软件程序的存储、数据的存储和软件的运行等,可以是随机存取存储器(RandomAccess Memory,RAM)、可擦除可编程只读寄存器(Erasable Programmable Read OnlyMemory,EPROM)、固态硬盘(Solid State Drives,SSD)和SD卡(Secure Digital MemoryCard)等中的一种或多种;显示模块304用于显示用户的操作界面和操作结果,可接收处理模块301的数据并显示。
下面以Spark内存计算框架下基于RDD的Stage划分为例进行本发明实施例的说明。首先,安装有Spark的终端创建用户应用程序的RDD DAG,应用程序包括多个RDD;其次,终端对RDD DAG中的RDD划分Stage,本发明实施例默认以一个应用程序的所有RDD中的而后一个RDD为根进行广度优先遍历,从而对RDD进行划分Stage,即而后一个RDD位于第一个Stage中,并将持续窄依赖的RDD划分为一个Stage,当任一子RDD同时存在宽依赖和窄依赖时,将与子RDD存在不同依赖的父RDD划分至不同的Stage,如图4所示,实线表示宽依赖,虚线表示窄依赖,本发明实施例中的Stage可以为三种类型,其中第一类型、第二类型和第三类型分别可以是ShuffleMapStage、MiddleStage和ResultStage;且ResultStage只有一个,即第一个Stage,这些Stage之间也存在父子依赖关系。而后,终端并行执行与子RDD存在宽依赖的父RDD所在Stage和与子RDD存在窄依赖的父RDD所在Stage对应的任务后,再执行子RDD所在的Stage对应的任务,以节省作业的执行时间。
本发明实施例提供一种基于RDD的Stage划分的方法,如图5所示,包括
501、终端创建应用程序的RDD的有向无环图DAG。
应用程序可以为用户编写的Spark应用程序,其中包含多个RDD,RDD有两种操作:转换和动作,转换(Transformation)属于延迟计算,当一个RDD转换成另一个RDD时并没有立即进行转换,仅仅是记住了数据集的逻辑操作,且RDD提供了许多转换操作,每个转换操作都会生成新的RDD,新的RDD便依赖于原有的RDD;动作(Ation)触发Spark作业的运行,真正触发转换算子的计算。Spark会根据用户提交的应用程序的计算逻辑中RDD的转换和动作来生成RDD之间的依赖关系,生成逻辑上的DAG。
502、终端对DAG中的RDD划分Stage,并在任一子RDD同时存在宽依赖和窄依赖时,将子RDD、与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD划分至不同的Stage。
当一个子RDD同时存在宽依赖和窄依赖时,断开与子RDD存在宽依赖的父RDD,同时断开与该子RDD存在窄依赖的父RDD,将与该子RDD存在宽依赖的父RDD划分到第一类型的Stage中,即ShuffleMapStage,将与该子RDD存在窄依赖的父RDD划分到第二类型的Stage中,即MiddleStage,再将该子RDD划分到第三类型的Stage中,即ResultStage。
503、终端并行执行与子RDD存在宽依赖的父RDD所在的Stage和与子RDD存在窄依赖的父RDD所在的Stage对应的任务后,执行子RDD所在的Stage对应的任务。
因为与子RDD存在宽依赖的父RDD和与子RDD存在窄依赖的父RDD各自所在的Stage没有依赖关系,因此终端可以对该子RDD的所有父RDD所在的Stage的任务做并行执行,然后再执行该子RDD所在的Stage的任务。相对于现有技术中将与子RDD存在宽依赖的父RDD划分到同一Stage,将子RDD以及与子RDD存在窄依赖的父RDD划分到同一Stage,必须在执行完与子RDD存在宽依赖的父RDD所在的Stage的任务后才能执行子RDD以及与子RDD存在窄依赖的父RDD所在Stage的任务,本发明实施例在存在并行执行的情况下可以节省执行时间。
本发明实施例提供一种基于RDD的Stage划分方法,如图6所示,包括:
601、终端创建应用程序的RDD的有向无环图DAG。
终端具体如何创建应用程序的RDD的有向无环图DAG可参见步骤501。
602、终端根据用户设置确定RDD的Stage划分策略,Stage划分策略用于将RDD所在的Stage划分为第一类型和第三类型,或Stage划分策略用于将RDD所在的Stage划分为第一类型、第二类型和第三类型。
如图7所示,现有技术中,是将Stage的切分抽取为一个接口,本发明可以将现有技术中原生的Stage切分策略作为一种默认的实现,而将本发明中Stage的切分以一种插件实现,即本发明实施例以一种插件作为一种Stage切分接口的实现来提供给用户使用。在系统设置时,用户可以根据需求自主设置Stage划分策略,可以将自己所需的RDDStage划分策略设置为Spark的RDDStage划分策略。即如果用户不进行RDDStage划分策略设置,那么默认采用原生的Stage划分策略,当然如果用户将本发明实施例的Stage划分策略设置为系统的RDDStage划分策略,那么在系统进行Stage划分时,采用本发明实施例的RDDStage划分策略。
现有技术中Stage划分策略是只断开与子RDD存在宽依赖的父RDD,并将与子RDD存在宽依赖的父RDD所在的Stage划分为第一种类型的Stage,即ShuffleMapStage。本发明实施例的RDD的Stage划分策略对应两种情况:如果子RDD与其所有父RDD都为宽依赖关系,那么将各个父RDD所在的Stage划分为第一种类型的Stage,即ShuffleMapStage;如果子RDD与其所有父RDD同时存在宽依赖和窄依赖,那么将与子RDD存在宽依赖的父RDD所在的Stage划分为第一种类型的Stage,即ShuffleMapStage,将与子RDD存在窄依赖的父RDD所在的Stage划分为第二种类型的Stage,即MiddleStage。
对于子RDD来说,可以理解的是,一个Spark应用程序肯定存在且只存在一个ResultStage,即第一个Stage,因此子RDD所在的Stage在RDD DAG最末尾时,该子RDD所在的Stage可以是第一类型的Stage,即ResultStage;当该子RDD所在的Stage不在RDD DAG最末尾时,该子RDD所在的Stage可以为MiddleStage或ShuffleMapStage。
603、终端确定子RDD是否同时存在宽依赖和窄依赖;若确定是,则执行步骤605;若确定否,则执行步骤604。
RDD DAG中标明了RDD之间的依赖关系,终端根据RDD DAG则可确定出任一子RDD是否同时存在宽依赖和窄依赖。
604、终端在子RDD存在宽依赖时,将与子RDD存在宽依赖的父RDD所在的Stage划分为第一类型。
如果任一子RDD同时存在宽依赖和窄依赖,则执行步骤605;如果任一子RDD并不同时存在宽依赖和窄依赖,那么当子RDD只存在宽依赖时,即表示子RDD与其所有父RDD都为宽依赖关系。在采用本发明实施例的RDD的Stage划分策略进行Stage划分时,如果遇到的第一个子RDD与其所有父RDD都为宽依赖关系,首先将子RDD与所有父RDD的关系链断开,将子RDD所在的Stage划分为第三种类型的Stage,即ResultStage;将各个父RDD所在的Stage划分为第一种类型的Stage,即ShuffleMapStage。因为只有第一个Stage叫做ResultStage,因此在遇到下一个存在宽依赖的子RDD时,先将子RDD与所有父RDD的关系链断开,该子RDD所在Stage和其各个父RDD所在的Stage都为ShuffleMapStage。
605、终端将子RDD与所有父RDD的关系链断开,并将与子RDD存在宽依赖的父RDD划分至第一类型的Stage中,和将与子RDD存在窄依赖的父RDD划分至第二类型的Stage中,子RDD所在的Stage的类型为第一类型、或第二类型、或第三类型,第一类型、第二类型和第三类型互不相同。
在划分Stage的类型的时候,将与子RDD存在不同依赖关系的父RDD所在Stage划分为不同类型的Stage,如图8所示,具体划分过程可以为:如果子RDD既拥有存在宽依赖关系的父RDD又拥有存在窄依赖关系的父RDD,将与子RDD存在宽依赖关系的父RDD所在的Stage划分ShuffleMapStage,将与子RDD存在窄依赖关系的父RDD所在的Stage划分MiddleStage,该子RDD所在的Stage若为第一Stage,则叫做ResultStage,否则该子RDD所在的Stage可以是MiddleStage或ShuffleMapStage。
606、终端获取与子RDD存在宽依赖的父RDD所在Stage的运行资源和与子RDD存在窄依赖的父RDD所在Stage的运行资源,并行执行与子RDD存在宽依赖的父RDD所在Stage和与子RDD存在窄依赖的父RDD所在Stage对应的任务。
终端通过DAG调度器(Scheduler)根据每个Stage间的父子依赖关系,选择执行合适的Stage,DAG Scheduler根据Stage的DAG图的最末尾的Stage为根进行广度优先遍历,遍历到最开始执行的Stage执行,如果提交的Stage仍有未完成的父母Stage,则Stage需要等待其父Stage执行完才能执行,从而决定了Stage的执行顺序。在确定Stage执行顺序从而执行Stage对应的任务时,终端可以通过下层资源调度框架为Stage提供运行资源,因为与子RDD存在宽依赖的父RDD所在的Stage和与子RDD存在窄依赖的父RDD所在的Stage之间并没有依赖关系,那么下层资源调度框架便可以为没有依赖关系的多个Stage同时提供运行资源,使得多个Stage可以并行运行。
现有技术下,子RDD同时拥有存在宽依赖的父RDD和存在窄依赖的父RDD时,将与子RDD存在窄依赖的父RDD归入子RDD所在Stage中,这样的话,就必须先执行完与子RDD存在宽依赖的父RDD所在的Stage,而后才能执行与子RDD以及与子RDD存在窄依赖的父RDD所在的Stage。而本发明实施例在子RDD同时存在宽依赖和窄依赖的情况下,将与子RDD存在窄依赖的父RDD划分到MiddleStage,将该MiddleStage和与子RDD存在宽依赖的父RDD所在的Stage并行执行,加快了执行速度,从而节省了执行时间。举例来说,当子RDD的各个父RDD是通过I/O操作来生成时,因为I/O操作相比内存计算更加耗时,因此当子RDD的耗时长的各个父RDD并行执行而非依次执行,即当I/O操作并行执行时,会更加节省执行时间。
每个Stage所需的运行资源可以为终端根据执行每个Stage任务时占用中央处理器(Central Processing Unit,CPU)、城域以太网(Metropolitan EtherNet,MEN)等资源情况为每个Stage分配的计算资源。
607、终端根据与子RDD存在窄依赖的父RDD所在的Stage的运行资源执行子RDD所在的Stage对应的任务。
因为与子RDD存在窄依赖的父RDD所在的Stage所需的运行资源可以作为子RDD所在的Stage所需的运行资源,因此在执行完与子RDD存在窄依赖的父RDD所在Stage的任务后,不释放该运行资源,直接分配给子RDD所在Stage以执行任务,这样一来,不需要请求资源的子RDD所在Stage相对其他需要请求资源的Stage而言,达到了预启动的效果,减少了资源请求次数。
本发明实施例提供一种基于弹性分布式数据集的Stage划分方法,终端创建出应用程序的RDD DAG,再根据依赖关系将RDD进行划分Stage,当任一子RDD同时存在宽依赖和窄依赖时,将与子RDD存在宽依赖的父RDD划分到ShuffleMapStage中,将与子RDD存在窄依赖的父RDD划分到MiddleStage中,将子RDD划分到与所有父RDD都不为同一个的Stage中,然后并行执行ShuffleMapStage和MiddleStage的任务,这样一来,不需要依次执行,节省了执行时间,而后根据MiddleStage的运行资源执行子RDD所在的Stage对应的任务,不需要重新请求资源,减少了资源请求次数,改善了用户体验。
上述主要从终端的角度对本发明实施例提供的方案进行了介绍。可以理解的是,终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的算法步骤,本发明能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
本发明实施例可以根据上述方法示例对终端进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
在采用对应各个功能划分各个功能模块的情况下,图9示出了上述实施例中所涉及的终端9的一种可能的结构示意图,终端包括:创建单元901,设置单元902,确定单元903,划分单元904和执行单元905。创建单元901用于支持终端执行图5中的过程501,图6中的过程601;设置单元902用于支持终端执行图6中的过程602;确定单元903用于支持终端执行图6中的过程603;划分单元904用于支持终端执行图5中的过程502,图6中的过程604~605;执行单元905用于支持终端执行图5中的过程503,图6中的过程606~607。其中,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
在采用集成的单元的情况下,图10示出了上述实施例中所涉及的终端的一种可能的结构示意图。终端10包括:处理模块1001和通信模块1002。处理模块1001用于对终端的动作进行控制管理,例如处理模块1001用于支持终端执行图5中的501~503,图6中的过程601~607,通信模块1002用于支持终端与其他网络实体的通信,例如与服务器之间的通信,从服务器下载得到应用程序等。终端还可以包括存储模块1003,用于存储终端的程序代码和数据,例如用于存储本发明实施例中的用户应用程序等。
其中,处理模块1001可以是处理器或控制器,例如可以是中央处理器(CentralProcessing Unit,CPU),通用处理器,数字信号处理器(Digital Signal Processor,DSP),专用集成电路(Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信模块1002可以是收发器、收发电路或通信接口等。存储模块1003可以是存储器。
当处理模块1001为处理器,通信模块1002为收发器,存储模块1003为存储器时,本发明实施例所涉及的终端可以为图11所示的终端。
参阅图11所示,该终端11包括:处理器1101、收发器1102、存储器1103以及总线1104。其中,收发器1102、处理器1101以及存储器1103通过总线1104相互连接;总线1104可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
结合本发明公开内容所描述的方法或者算法的步骤可以硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于随机存取存储器(Random Access Memory,RAM)、闪存、只读存储器(ReadOnly Memory,ROM)、可擦除可编程只读存储器(Erasable Programmable ROM,EPROM)、电可擦可编程只读存储器(Electrically EPROM,EEPROM)、寄存器、硬盘、移动硬盘、只读光盘(CD-ROM)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于ASIC中。另外,该ASIC可以位于核心网接口设备中。当然,处理器和存储介质也可以作为分立组件存在于核心网接口设备中。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

Claims (10)

1.一种基于弹性分布式数据集RDD的Stage划分方法,其特征在于,包括:
终端创建应用程序的RDD的有向无环图DAG;
所述终端对所述DAG中的RDD划分Stage,并在任一子RDD同时存在宽依赖和窄依赖时,将所述子RDD、与所述子RDD存在所述宽依赖的父RDD和与所述子RDD存在所述窄依赖的父RDD划分至不同的Stage;
所述终端并行执行与所述子RDD存在所述宽依赖的父RDD所在的Stage和与所述子RDD存在窄依赖的父RDD所在的Stage对应的任务后,执行所述子RDD所在的Stage对应的任务。
2.根据权利要求1所述的方法,其特征在于,所述将所述子RDD、与所述子RDD存在所述宽依赖的父RDD和与所述子RDD存在所述窄依赖的父RDD划分至不同的Stage包括:
所述终端将所述子RDD与所有父RDD的关系链断开,并将与所述子RDD存在所述宽依赖的父RDD划分至第一类型的Stage中,将与所述子RDD存在所述窄依赖的父RDD划分至第二类型的Stage中,所述子RDD所在的Stage的类型为所述第一类型、或所述第二类型、或第三类型,所述第一类型、所述第二类型和所述第三类型互不相同。
3.根据权利要求1或2所述的方法,其特征在于,所述终端并行执行与所述子RDD存在所述宽依赖的父RDD所在的Stage和与所述子RDD存在所述窄依赖的父RDD所在的Stage对应的任务后,执行所述子RDD所在的Stage对应的任务包括:
所述终端获取与所述子RDD存在所述宽依赖的父RDD所在的Stage的运行资源,和与所述子RDD存在所述窄依赖的父RDD所在的Stage的运行资源,并行执行与所述子RDD存在所述宽依赖的父RDD所在的Stage和与所述子RDD存在窄依赖的父RDD所在的Stage对应的任务;
所述终端根据与所述子RDD存在窄依赖的父RDD所在的Stage的运行资源执行所述子RDD所在的Stage对应的任务。
4.根据权利要求2所述的方法,其特征在于,在所述终端创建所述DAG之前,所述方法还包括:
所述终端根据用户设置确定RDD的Stage划分策略,所述Stage划分策略用于将所述RDD划分后的Stage分为所述第一类型和所述第三类型,或所述Stage划分策略用于将所述RDD划分后的Stage分为所述第一类型、所述第二类型和所述第三类型。
5.根据权利要求2所述的方法,其特征在于,在所述终端对所述DAG中的RDD划分Stage之前,所述方法还包括:
所述终端确定所述子RDD是否同时存在所述宽依赖和所述窄依赖;
若确定否,则所述终端在所述子RDD存在所述宽依赖时,将与所述子RDD存在所述宽依赖的父RDD所在的Stage划分为所述第一类型。
6.一种基于弹性分布式数据集RDD的Stage划分装置,其特征在于,包括:
创建单元,用于创建应用程序的RDD的有向无环图DAG;
划分单元,用于对所述DAG中的RDD划分Stage,并在任一子RDD同时存在宽依赖和窄依赖时,将所述子RDD、与所述子RDD存在所述宽依赖的父RDD和与所述子RDD存在所述窄依赖的父RDD划分至不同的Stage;
执行单元,用于并行执行与所述子RDD存在所述宽依赖的父RDD所在的Stage和与所述子RDD存在窄依赖的父RDD所在的Stage对应的任务后,执行所述子RDD所在的Stage对应的任务。
7.根据权利要求6所述的装置,其特征在于,所述划分单元用于:
将所述子RDD与所有父RDD的关系链断开,并将与所述子RDD存在所述宽依赖的父RDD划分至第一类型的Stage中,将与所述子RDD存在所述窄依赖的父RDD划分至第二类型的Stage中,所述子RDD所在的Stage的类型为所述第一类型、或所述第二类型、或第三类型,所述第一类型、所述第二类型和所述第三类型互不相同。
8.根据权利要求6或7所述的装置,其特征在于,所述执行单元用于:
获取与所述子RDD存在所述宽依赖的父RDD所在的Stage的运行资源和与所述子RDD存在所述窄依赖的父RDD所在的Stage的运行资源,并行执行与所述子RDD存在所述宽依赖的父RDD所在的Stage和与所述子RDD存在窄依赖的父RDD所在的Stage对应的任务;
根据与所述子RDD存在窄依赖的父RDD所在的Stage的运行资源执行所述子RDD所在的Stage对应的任务。
9.根据权利要求7所述的装置,其特征在于,所述装置还包括设置单元:
根据用户设置确定RDD的Stage划分策略,所述Stage划分策略用于将所述RDD划分后的Stage分为所述第一类型和所述第三类型,或所述Stage划分策略用于将所述RDD划分后的Stage分为所述第一类型、所述第二类型和所述第三类型。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括确定单元:
确定所述子RDD是否同时存在所述宽依赖和所述窄依赖;
若确定否,则在所述子RDD存在所述宽依赖时,将与所述子RDD存在所述宽依赖的父RDD所在的Stage划分为所述第一类型。
CN201610741110.2A 2016-08-26 2016-08-26 一种基于弹性分布式数据集的Stage划分方法和终端 Active CN106339458B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610741110.2A CN106339458B (zh) 2016-08-26 2016-08-26 一种基于弹性分布式数据集的Stage划分方法和终端

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610741110.2A CN106339458B (zh) 2016-08-26 2016-08-26 一种基于弹性分布式数据集的Stage划分方法和终端

Publications (2)

Publication Number Publication Date
CN106339458A CN106339458A (zh) 2017-01-18
CN106339458B true CN106339458B (zh) 2020-01-21

Family

ID=57822401

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610741110.2A Active CN106339458B (zh) 2016-08-26 2016-08-26 一种基于弹性分布式数据集的Stage划分方法和终端

Country Status (1)

Country Link
CN (1) CN106339458B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018209693A1 (zh) * 2017-05-19 2018-11-22 深圳大学 一种基于ssd和hdd混合存储系统的rdd持久化方法
CN107450972B (zh) * 2017-07-04 2020-10-16 创新先进技术有限公司 一种调度方法、装置以及电子设备
CN109213746A (zh) * 2018-09-28 2019-01-15 北京赛博贝斯数据科技有限责任公司 Pb级历史数据和在线数据的实时计算的可视化建模方法
CN109800092A (zh) * 2018-12-17 2019-05-24 华为技术有限公司 一种共享数据的处理方法、装置及服务器
CN110109747B (zh) * 2019-05-21 2021-05-14 北京百度网讯科技有限公司 基于Apache Spark的数据交换方法及系统、服务器

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104360903A (zh) * 2014-11-18 2015-02-18 北京美琦华悦通讯科技有限公司 Spark作业调度系统中实现任务数据解耦的方法
CN105740424A (zh) * 2016-01-29 2016-07-06 湖南大学 一种基于 Spark 平台的高效率文本分类方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9201638B2 (en) * 2012-08-07 2015-12-01 Nec Laboratories America, Inc. Compiler-guided software accelerator for iterative HADOOP® jobs
US10496642B2 (en) * 2014-10-03 2019-12-03 The Regents Of The University Of Michigan Querying input data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104360903A (zh) * 2014-11-18 2015-02-18 北京美琦华悦通讯科技有限公司 Spark作业调度系统中实现任务数据解耦的方法
CN105740424A (zh) * 2016-01-29 2016-07-06 湖南大学 一种基于 Spark 平台的高效率文本分类方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Spark的大数据挖掘技术的研究与实现;李文栋;《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》;20160215;第2016年卷(第2期);全文 *

Also Published As

Publication number Publication date
CN106339458A (zh) 2017-01-18

Similar Documents

Publication Publication Date Title
CN106339458B (zh) 一种基于弹性分布式数据集的Stage划分方法和终端
US11381526B2 (en) Multi-tenant optimized serverless placement using smart network interface cards and commodity storage
US8566641B2 (en) Fault tolerant batch processing
US9582334B2 (en) Resource management in MapReduce architecture and architectural system
US9430388B2 (en) Scheduler, multi-core processor system, and scheduling method
CN110134446B (zh) 启动pcie设备扫描的方法
US20120254885A1 (en) Running a plurality of instances of an application
US10002023B2 (en) Method and apparatus for managing one or more tasks of a many-core system using one or more task descriptor entries
US10853128B2 (en) Virtual machine management device and virtual machine management method
US20190377612A1 (en) VCPU Thread Scheduling Method and Apparatus
WO2018036104A1 (zh) 一种布署虚拟机的方法、系统以及物理服务器
JP2013250949A (ja) 計算機、仮想化機構、及びスケジューリング方法
CN114168271A (zh) 一种任务调度方法、电子设备及存储介质
JP6620609B2 (ja) 分散処理実行管理プログラム、分散処理実行管理方法および分散処理実行管理装置
CN110888834A (zh) 一种pcie设备中fpga功能动态重构的方法及系统
CN111913753A (zh) 一种windows系统云迁移中启动方式的变更方法及系统
CN111831408A (zh) 异步任务处理方法、装置、电子设备及介质
CN106155758B (zh) 一种服务器系统及其相关控制方法
CN115277398A (zh) 一种集群的网络配置方法和装置
CN115150268A (zh) Kubernetes集群的网络配置方法、装置、及电子设备
US11157309B2 (en) Operating cluster computer system with coupling facility
CN110928601A (zh) 一种隔离cpu的方法、装置以及存储介质
WO2024119930A1 (zh) 调度方法、装置、计算机设备和存储介质
US20230393907A1 (en) Arithmetic processing apparatus and arithmetic processing method
CN109542588B (zh) 一种用于在云环境下管理虚拟设备的方法和装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20220215

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20221202

Address after: 518129 Huawei Headquarters Office Building 101, Wankecheng Community, Bantian Street, Longgang District, Shenzhen, Guangdong

Patentee after: Shenzhen Huawei Cloud Computing Technology Co.,Ltd.

Address before: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee before: Huawei Cloud Computing Technology Co.,Ltd.

TR01 Transfer of patent right