CN110908796A - 一种Gaia***中的多作业合并与优化***及方法 - Google Patents

一种Gaia***中的多作业合并与优化***及方法 Download PDF

Info

Publication number
CN110908796A
CN110908796A CN201911067587.7A CN201911067587A CN110908796A CN 110908796 A CN110908796 A CN 110908796A CN 201911067587 A CN201911067587 A CN 201911067587A CN 110908796 A CN110908796 A CN 110908796A
Authority
CN
China
Prior art keywords
job
complexity
buffer pool
parallelism
merging
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.)
Granted
Application number
CN201911067587.7A
Other languages
English (en)
Other versions
CN110908796B (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.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
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 Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN201911067587.7A priority Critical patent/CN110908796B/zh
Publication of CN110908796A publication Critical patent/CN110908796A/zh
Application granted granted Critical
Publication of CN110908796B publication Critical patent/CN110908796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种Gaia***中的多作业合并与优化***及方法,属于大数据处理技术领域,解决了Gaia***中用户作业和用户指定的资源大小方面的不匹配问题。本发明方案为:代理层通过集***互层与集群进行数据交互。代理层,包括:作业信息采集模块,用于收集用户提交的作业,解析获得作业信息;作业分类模块,用于根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储;作业合并模块,用于提取作业缓冲池中的可合并型作业进行合并,得到合并后的作业送入作业优化模块。作业优化模块,用于对合并后的作业进行优化,优化后的作业送入作业缓冲池进行缓冲存储。集群通过集***互层从作业缓冲池中读取优化后的作业并执行。

Description

一种Gaia***中的多作业合并与优化***及方法
技术领域
本发明涉及大数据处理技术领域,具体涉及一种Gaia***中的多作业合并与优化***及方法。
背景技术
近年来,随着信息化技术的迅猛发展,需要收集、存储、处理和分析的数据量越来越大。衍生出了各种各样的分布式大数据处理***,其中有以批处理为主的Hadoop、以流计算为主的Storm和批流混合计算模型的Spark、Flink等,其中Spark和Flink作为主流的大数据处理***,在***优化方面做出了很大的贡献。为了减少作业的执行时间和作业对集群内存、带宽等其他资源的使用,Spark和Flink在批处理作业方面,采用了相似的DAG优化方法。其使用的DAG优化方法主要是从作业的内部根据算子的不同类型,将算子拆分分成不同的类别,然后对作业执行流程图中相邻的算子做出不同的处理,根据算子的类别和依赖关系,将相同类别的算子链接到一起执行,这样做减少了数据在算子之间和集群中不同节点之间的传输。采用DAG优化从作业的内部降低了作业对内存和带宽的使用,而在作业的总的资源分配方面,则是根据用户自己设定的作业并行度等其他条件对作业进行资源的分配。
常规的大数据处理***(例如:Spark和Flink),在对批处理作业的资源分配过程中,很少考虑到作业与其被分配到的资源量是否相符,都是通过用户指定的分配方式,为作业分配资源,这样通常需要用户自己计算每个作业的资源需求。但是很多情况下,用户对集群资源和作业要处理的业务量并不能准确把握,这样用户就会为每个作业尽量分配多的资源,于是,就出现了许多资源浪费的现象。在作业层的优化方面,这些***都是从作业内部算子的类别和算子之间的关系进行优化,而没有考虑作业与其分配到的资源是否相符,Gaia***中考虑到了这一情况,并做出了相应的优化。
Gaia***作为最新的大数据处理引擎,是一种基于内存的开源计算框架,为了细化内存资源的管理采用了内存隔离的方式,Gaia按Slot来划分每个节点的内存资源,并以Slot为单位进行内存资源的分配,这样方便了内存资源的分配与回收。在Gaia***中集群中Slot的集群并行度是一一映射的,集群中Slot的最大值就是集群能执行作业的最大的并行度。
如何利用通过多作业的合并与优化处理解决Gaia***中用户作业和用户指定的资源大小方面的不匹配问题流程是目前亟待解决的问题。
发明内容
有鉴于此,本发明提供了一种Gaia***中的多作业合并与优化***及方法,能够利用通过作业的合并与优化处理,解决了Gaia***中用户作业和用户指定的资源大小方面的不匹配问题。
为达到上述目的,本发明的技术方案为:一种Gaia***中的多作业合并与优化***,包括代理层、作业优化层和集***互层。
集群由至少一个节点组成,节点上部署Hadoop***和gaia***,分别组成Hadoop集群和Gaia集群;作业要处理的数据存放在Hadoop集群上;
代理层通过集***互层与集群进行数据交互。
代理层,包括作业信息采集模块、作业分类模块、作业合并模块以及作业优化模块和作业缓冲池。
作业信息采集模块,用于收集用户提交的作业,解析获得作业信息;
作业分类模块,用于根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储。
作业合并模块,用于提取作业缓冲池中的可合并型作业进行合并,得到合并后的作业送入作业优化模块。
作业优化模块,用于对合并后的作业进行优化,以协调合并后的作业的任务量和合并前被合并的带合并型作业所分配的总的内存资源之间的平衡,得到优化后的作业送入作业缓冲池进行缓冲存储。
集群通过集***互层从作业缓冲池中读取优化后的作业并执行。
进一步地,作业信息采集模块,用于收集用户提交的作业,解析获得作业信息,具体为:
作业信息采集模块,用于收集用户提交的作业,包括作业jar文件、作业来源信息、作业提交时间和作业的执行参数。
作业信息采集模块用于解析作业jar文件,获得作业执行流程图、作业处理文件的路径信息、作业复杂度以及作业并行度;并从作业执行流程图中提取出作业信息,包括作业所处理文件的大小及存放地址、作业分配的内存资源大小、作业执行流程图的深度、作业执行流程图中每个算子的类型、每个算子的算子并行度大小、不同类型的算子个数以及作业类型。
其中算子的类型包括本地算子和全局算子,本地算子中又包含source类型算子。
作业类型包括批处理作业和流处理作业;其中批处理作业中又包含迭代类型的批处理作业和非迭代类型的批处理作业;流处理作业中又包含迭代类型的流处理作业和非迭代类型的流处理作业。
进一步地,作业分类模块,用于根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储,具体为:
作业分类模块,用于根据作业信息采集模块采集到的作业信息,依据作业所处理文件大小和作业分配的内存资源大小的比值A和作业类型,将作业分成不同的类别并放入不同的作业缓冲池中;具体为:若作业类型为非迭代类型的批处理作业且比值A小于0.5,则分类为可合并型作业,否则分类为不可合并型作业;将分类后的作业依照对应的类型送入作业缓冲池中。
作业缓冲池包括可合并型作业缓冲池和不可合并型作业缓冲池,分别用于存储可合并型作业和不可合并型作业。
作业分类模块遍历可合并型作业缓冲池,获取所有可合并型作业的作业流程图的复杂度,取中位数作为复杂度分类阈值对可合并型作业进行再次分类,将作业流程图的复杂度高于复杂度分类阈值的可合并型作业分类为高复杂度作业,其他可合并型作业分类为低复杂度作业,可合并型作业缓冲池又分为复杂度作业缓冲池和低复杂度作业缓冲池,分别用于存储高复杂度作业和低复杂度作业。
作业缓冲池中还包括作业预提交缓冲池。
进一步地,作业合并模块,用于提取作业缓冲池中的可合并型作业进行合并,得到合并后的作业送入作业优化模块,具体为:
作业合并模块从作业缓冲池中检索出可合并型作业,根据设定的合并策略进行合并,合并后的作业送入作业优化模块。
设定的合并策略包括:
第一合并策略:将作业并行度相同的作业进行合并。
第二合并策略:按照复杂度从高到低顺次从高复杂度缓冲池选取高复杂度作业,对于当前选取的高复杂度作业,从低复杂度缓冲池中选取与当前选取的高复杂度作业并行度差别最小的低复杂度作业,将当前选取的高复杂度作业和低复杂度作业进行合并;继续选取下一高复杂度作业重复执行第二合并策略直至高复杂度作业缓冲池和低复杂度作业缓冲池至少一个为空为止。
进一步地,作业优化模块,用于对合并后的作业进行优化,以协调合并后的作业的任务量和合并前被合并的带合并型作业所分配的总的内存资源之间的平衡,得到优化后的作业送入作业缓冲池进行缓冲存储,具体为:
作业优化模块对每个合并后的作业进行优化,优化后的作业送入作业预提交缓冲池中。
作业优化模块对每个合并后的作业进行优化,具体为:
若合并后的作业是根据第一合并策略进行合并的,则不更改其作业并行度。
若合并后的作业是依据第二合并策略进行合并的,遍历其作业执行流程图,计算每个Source算子读取文件的大小,并计算所有Source算子之间读取文件大小的比例,依照比例以及作业并行度为每个Source算子分配并行度,和source算子直接相连以及递归相连的本地算子的算子并行度均设置为该相连的source节点的算子并行度;全局算子的算子并行度设置为与其直接相连的上游算子中并行度最大的算子并行度。
集群通过集***互层从作业预提交缓冲池中读取优化后的作业并执行。
本发明实施例还提供了一种Gaia***中的多作业合并与优化***的方法,包括如下步骤:
步骤1:获取用户提交的作业,解析作业jar文件获得作业执行流程图、作业处理文件的路径信息、作业复杂度以及作业并行度;并从作业执行流程图中提取出作业信息,包括作业所处理文件的大小及存放地址、作业分配的内存资源大小、作业执行流程图的深度、作业执行流程图中每个算子的类型、每个算子的算子并行度大小、不同类型的算子个数以及作业类型。
步骤2:根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储;具体包括如下步骤:
步骤2-1:依据作业所处理文件大小和作业分配的内存资源大小的比值A和作业类型,将作业分成不同的类别并放入不同的作业缓冲池中;具体为:若作业类型为非迭代类型的批处理作业且比值A小于0.5,则分类为可合并型作业,否则分类为不可合并型作业;将分类后的作业依照对应的类型送入作业缓冲池中。
作业缓冲池包括可合并型作业缓冲池和不可合并型作业缓冲池,分别用于存储可合并型作业和不可合并型作业。
步骤2-2:作业分类模块遍历可合并型作业缓冲池,获取所有可合并型作业的作业流程图的复杂度,取中位数作为复杂度分类阈值对可合并型作业进行再次分类,将作业流程图的复杂度高于复杂度分类阈值的可合并型作业分类为高复杂度作业,其他可合并型作业分类为低复杂度作业,可合并型作业缓冲池又分为复杂度作业缓冲池和低复杂度作业缓冲池,分别用于存储高复杂度作业和低复杂度作业。
作业缓冲池中还包括作业预提交缓冲池。
步骤3:作业合并模块从作业缓冲池中检索出可合并型作业,根据设定的合并策略进行合并。
步骤3-1:将作业并行度相同的作业进行合并;具体为:
先从高复杂度作业缓冲池中选择一个高复杂度作业B,然后遍历低复杂度作业缓冲池,从中查找出与B作业并行度相同的低复杂度作业C,调用合并算法从B和C中读取作业执行流程图,合并B和C的作业执行流程图为一个作业执行流程图,得到B和C合并后的作业。
重复步骤3-1直到高复杂度作业缓冲池和低复杂度作业缓冲池中不存在并行度相同的作业为止。
步骤3-2:按照复杂度从高到低顺次从高复杂度缓冲池选取高复杂度作业,对于当前选取的高复杂度作业,从低复杂度缓冲池中选取与当前选取的高复杂度作业并行度差别最小的低复杂度作业,将当前选取的高复杂度作业和低复杂度作业进行合并;继续选取下一高复杂度作业重复执行第二合并策略直至高复杂度作业缓冲池和低复杂度作业缓冲池至少一个为空为止。
步骤4:对每个合并后的作业进行优化,优化后的作业送入作业预提交缓冲池中,优化过程具体为:
若合并后的作业是根据第一合并策略进行合并的,则不更改其作业并行度。
若合并后的作业是依据第二合并策略进行合并的,遍历其作业执行流程图,计算每个Source算子读取文件的大小,并计算所有Source算子之间读取文件大小的比例,依照比例以及作业并行度为每个Source算子分配并行度,和source算子直接相连以及递归相连的本地算子的算子并行度均设置为该相连的source节点的算子并行度;全局算子的算子并行度设置为与其直接相连的上游算子中并行度最大的算子并行度。
集群通过集***互层从作业预提交缓冲池中读取优化后的作业并执行。
有益效果:
本发明提供的Gaia***中的多作业合并与优化***及方法,在批处理方面,为了解决用户作业和用户指定的资源大小方面的不匹配问题,Gaia***提出和采用了作业合并的方法,该方法主要是通过分析用户提交的作业,通过作业分类模块对作业进行分类,选出可合并型作业,可将大量浪费内存的作业归类为可合并型作业,之后采用作业合并模块,通过启发式的作业合并方法对这些作业进行合并,并对合并后的作业采用作业优化模块进行优化,优化后的作业共同使用合并的作业中拥有内存资源数最大的那个作业的内存资源,而释放其他作业被分配的Slot资源。以此来降低过多Slot的分配,进而提高了集群内存资源的利用率和集群的吞吐量。
附图说明
图1为本发明提供的一种Gaia***中的多作业合并与优化***组成框图;
图2为本发明实施例中获取的作业执行流程图;
图3为本发明实施提供的信息采集模块与集***互模块交互过程图;
图4为本发明实施提供的的初次分类过程图;
图5为本发明实施提供的二次分类过程图;
图6为本发明实施提供的并行度相同作业合并流程图;
图7为本发明实施提供的并行度不同的作业合并流程图。
具体实施方式
下面结合附图并举实施例,对本发明进行详细描述。
本发明提供了一种Gaia***中的多作业合并与优化***,其结构框架如图1所示,包括代理层、作业优化层和集***互层。
集群由至少一个节点组成,节点上部署Hadoop***和gaia***,分别组成Hadoop集群和Gaia集群;作业要处理的数据存放在Hadoop集群上;
代理层通过集***互层与集群进行数据交互。
代理层,包括作业信息采集模块、作业分类模块、作业合并模块以及作业优化模块和作业缓冲池。
作业信息采集模块,用于收集用户提交的作业,解析获得作业信息;
作业分类模块,用于根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储。
作业合并模块,用于提取作业缓冲池中的可合并型作业进行合并,得到合并后的作业送入作业优化模块。
作业优化模块,用于对合并后的作业进行优化,以协调合并后的作业的任务量和合并前被合并的带合并型作业所分配的总的内存资源之间的平衡,得到优化后的作业送入作业缓冲池进行缓冲存储。
集群通过集***互层从作业缓冲池中读取优化后的作业并执行。
本发明实施例中,作业信息采集模块,用于收集用户提交的作业,解析获得作业信息,具体为:
作业信息采集模块,用于收集用户提交的作业,包括作业jar文件、作业来源信息、作业提交时间和作业的执行参数。
作业信息采集模块用于解析作业jar文件,获得作业执行流程图、作业处理文件的路径信息、作业复杂度以及作业并行度;并从作业执行流程图中提取出作业信息,包括作业所处理文件的大小及存放地址、作业分配的内存资源大小、作业执行流程图的深度、作业执行流程图中每个算子的类型、每个算子的算子并行度大小、不同类型的算子个数以及作业类型。
其中算子的类型包括本地算子和全局算子,本地算子中又包含source类型算子。
作业类型包括批处理作业和流处理作业;其中批处理作业中又包含迭代类型的批处理作业和非迭代类型的批处理作业;流处理作业中又包含迭代类型的流处理作业和非迭代类型的流处理作业。
本发明实施例中,作业分类模块,用于根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储,具体为:
作业分类模块,用于根据作业信息采集模块采集到的作业信息,依据作业所处理文件大小和作业分配的内存资源大小的比值A和作业类型,将作业分成不同的类别并放入不同的作业缓冲池中;具体为:若作业类型为非迭代类型的批处理作业且比值A小于0.5,则分类为可合并型作业,否则分类为不可合并型作业;将分类后的作业依照对应的类型送入作业缓冲池中。
作业缓冲池包括可合并型作业缓冲池和不可合并型作业缓冲池,分别用于存储可合并型作业和不可合并型作业。
作业分类模块遍历可合并型作业缓冲池,获取所有可合并型作业的作业流程图的复杂度,取中位数作为复杂度分类阈值对可合并型作业进行再次分类,将作业流程图的复杂度高于复杂度分类阈值的可合并型作业分类为高复杂度作业,其他可合并型作业分类为低复杂度作业,可合并型作业缓冲池又分为复杂度作业缓冲池和低复杂度作业缓冲池,分别用于存储高复杂度作业和低复杂度作业。
作业缓冲池中还包括作业预提交缓冲池。
本发明实施例中,作业合并模块,用于提取作业缓冲池中的可合并型作业进行合并,得到合并后的作业送入作业优化模块,具体为:
作业合并模块从作业缓冲池中检索出可合并型作业,根据设定的合并策略进行合并,合并后的作业送入作业优化模块。
设定的合并策略包括:
第一合并策略:将作业并行度相同的作业进行合并。
第二合并策略:按照复杂度从高到低顺次从高复杂度缓冲池选取高复杂度作业,对于当前选取的高复杂度作业,从低复杂度缓冲池中选取与当前选取的高复杂度作业并行度差别最小的低复杂度作业,将当前选取的高复杂度作业和低复杂度作业进行合并;继续选取下一高复杂度作业重复执行第二合并策略直至高复杂度作业缓冲池和低复杂度作业缓冲池至少一个为空为止。
本发明实施例中,作业优化模块,用于对合并后的作业进行优化,以协调合并后的作业的任务量和合并前被合并的带合并型作业所分配的总的内存资源之间的平衡,得到优化后的作业送入作业缓冲池进行缓冲存储,具体为:
作业优化模块对每个合并后的作业进行优化,优化后的作业送入作业预提交缓冲池中。
作业优化模块对每个合并后的作业进行优化,具体为:
若合并后的作业是根据第一合并策略进行合并的,则不更改其作业并行度;
若合并后的作业是依据第二合并策略进行合并的,遍历其作业执行流程图,计算每个Source算子读取文件的大小,并计算所有Source算子之间读取文件大小的比例,依照比例以及作业并行度为每个Source算子分配并行度,和source算子直接相连以及递归相连的本地算子的算子并行度均设置为该相连的source节点的算子并行度;全局算子的算子并行度设置为与其直接相连的上游算子中并行度最大的算子并行度。
集群通过集***互层从作业预提交缓冲池中读取优化后的作业并执行。
以上实施例提供的一种Gaia***中的多作业合并与优化***,提出的在作业层合并作业的方案,分析了多个作业与其所分配的资源之间的关系,通过作业合并的方法使得某些作业共同使用同一个作业的资源,释放另一个作业的资源,从根源上减少了Gaia集群中Slot的分配,常规大数据处理***中作业层的优化方法是从作业中的算子层面进行优化的,对于资源分配采取的是用户指定的方式,是固定的资源分配方式,并没有合理的调控集群资源在作业间的分配。
本发明实施例还提供了一种应用上述Gaia***中的多作业合并与优化***进行多作业合并与优化的方法,包括以下详细步骤:
步骤1:采集作业信息:采集作业信息用于解析代理层从用户jar文件中提取的作业执行流程计划,作业执行流程计划主要包含作业执行流程图和用户设置的作业执行总并行度。
步骤1-1:解析作业执行流程图:从作业执行流程计划中获取作业执行流程图,遍历作业执行流程图,得到算子的并行度、不同种类算子出现的次数和作业执行流程图的最大深度,在遍历过程中从Source类型算子中获取作业处理的文件的地址集合。
从作业执行流程计划中获取作业执行流程图,作业执行流程图是一个无环路的有向图,如图2所示,图中的每个节点是Gaia提供的一种算子类型,该节点中存储着算子的执行逻辑、算子的并行度,算子的前驱节点和算子的后继节点,相同类型的算子可以在图中多次出现。利用图的深度遍历算法,对作业执行流程图进行深度遍历,在遍历过程中获取并统计每种算子的最大并行度、每种算子出现的次数,并统计作业执行流程图的最大深度,如表1所示(表1是对图2的一个统计结果展示),作业执行流程图的最大深度指的是作业流程图中所有Source节点到Sink节点的路径中最长路径的长度。另外,因为作业处理的文件路径信息以URL的形式保存在Source类型的算子中,所以在对图的遍历过程中,需要从Source算子中收集作业要处理的所有文件的路径信息。
表1
算子类型 算子出现次数 算子并行度
Source 3 3
map 2 3
flatmap 1 3
reduce 3 3
filter 1 3
join 2 3
sink 1 3
图的深度 图的复杂度 图中算子个数
6 5 13
步骤1-2:计算作业复杂度和作业的并行度:在作业优化器中,作业的复杂度用全局算子在所有算子中出现的次数来表示,作业实际执行时的并行度,以作业中出现的最大并行度(可以从流程图中每个算子进行相关并行度的提取)为执行时的并行度。
全局算子是指在作业执行过程中需要通过网络传输获取其他节点的数据并计算的算子,例如:join算子、reduce算子等。作业的复杂度也是作业中全局算子的个数,需要从步骤1-1中进行统计,然后根据算子最大并行度和作业最大并行度计算作业实际的并行度大小。
本地算子只在本地节点处理数据,不需要获取其他节点数据进行处理的算子。
步骤1-3:获取作业要处理的文件大小和作业分配的内存资源大小:在对作业执行流程图进行解析的过程中,已经从中获取了作业要处理文件的存放地址集合,在这里,会对文件地址信息进行检查对文件路径进行识别,判断该作业要处理的所有文件是否存在于所提供的HDFS集群中,如果有文件不存在于HDFS集群中,则把该作业类型设置为不参与合并的作业类型,如果所有文件都处于HDFS集群中,如果文件存放在HDFS集群中,如图3所示,则通过集***互模块与HDFS集群进行交互,获取该作业要处理的文件信息,从中获取文件大小;获取作业分配的内存资源的大小需要读取用户配置文件,Gaia***在用户配置文件中提供了槽(用于执行算子)Slot大小值的配置,作业优化层提供了读取配置文件的功能,在这里通过读取单个Slot的大小并乘以作业的并行度就可以得到作业分配的内存资源的总的大小。
步骤2:作业分类:根据作业的任务量、所分配的内存大小、作业的类别和作业的复杂度,将作业分成不同的作业类型,并放入不同的作业缓冲池中。
步骤2-1:根据作业任务量大小分类:通过对比作业要处理的文件大小和作业被分配的内存资源的大小将作业分为两种类型,直接执行型作业,待合并型作业。
判断作业的类型,如图4所示,如果作业所处理的文件大小与其所预分配的内存资源大小的比值小于某个阈值,将该作业放入待合并型作业队列中,否则将该作业放入非合并型作业队列中,这里设置的阈值大小为0.5。设置0.5为过滤条件是考虑到任意两个可合并型作业合并后的文件大小总量,总是会小于合并之前的两个作业中分配的内存资源最大的那个作业所分配的内存资源的大小。
步骤2-2:根据作业流程图的复杂度对待合并型作业进行分类:对比作业复杂度,把作业分为高复杂度和低复杂度作业,并将它们分别放入高复杂度作业缓冲池和低复杂度作业缓冲池中。
遍历待合并作业缓冲池,从中获取所有待合并作业复杂度的中位数,如图5所示,然后将作业分为两种类型,如果作业的复杂度高于该中位数则把作业放入高复杂度作业缓冲池中,如果作业的复杂度低于复杂度中位数,则把作业放入低复杂度作业缓冲池中。
步骤3:作业的合并:分析高复杂度和低复杂度作业缓冲池中的作业,判断作业是否满足不同的合并策略,按照不同的作业合并策略合并满足策略的作业;
步骤3-1:合并并行度相同的作业:从高复杂度和低复杂度作业缓冲池中查询每个作业的并行度,合并并行度相同的两个作业,使用作业优化模块对合并后的作业进行优化,然后将合并后的作业放入作业预执行缓冲池中。
在合并并行度相同的作业的过程中,先从复杂度高的作业缓冲池中选择一个作业,如图6所示,然后遍历复杂度比较低的作业缓冲池,从中查找出与该作业并行度相同的作业,调用合并算法从这两个作业中读取作业执行流程图,合并这两个作业的作业执行流程图为一个作业执行流程图,之后把合并后的作业执行图交给作业优化模块,重复以上步骤3-1直到不存在并行度相同的作业为止。
步骤3-2:合并低复杂度的作业和高复杂度的作业:从高复杂度缓冲池选出复杂度最高的作业,然后从低复杂度缓冲池中选择与其并行度最接近的复杂度低的作业,设置作业执行流程图中每个算子的并行度(遍历作业执行流程图,为每个算子设置其原始的算子并行度),合并以上的两个作业,将合并后的作业放入作业预执行缓冲池中。
合并低复杂度和高复杂度的作业,在合并并行度相同的作业步骤之后,如图7所示,先从高复杂度作业缓冲池中选择一个复杂度最高的作业,然后,从复杂度低的作业缓冲中选择一个并行度与其大小最接近的作业,完成这两个作业的作业执行流程图的合并,并把合并后的作业执行图交给作业优化模块,重复以上步骤3-2直到其中一个作业缓冲池为空为止。
步骤4:作业的优化:对合并后的作业进行优化,作业的优化主要是对合并后作业的资源分配进行调优,作业优化模块用于协调合并后作业的任务量和合并前被合并作业所分配的总的内存资源之间的一个平衡,以及两个作业在所配置的作业内部资源中所占的比重,主要分为修改作业的并行度和修改作业中算子的并行度两个部分。
步骤4-1:修改作业的并行度:根据合并的策略对合并后作业的并行度进行重新设置,主要应用于并行度不同的作业的合并。
对采用并行度相同策略合并的作业,不更改其作业的并行度,对采用并行度不同的作业合并策略合并的作业,设置其每个算子的并行度大小为其作业原本的并行度大小。
步骤4-2:设置Source算子的并行度:根据作业中Source算子读取文件大小的比例,对作业中的每个Source算子设置不同的并行度。
遍历作业的执行流程图,计算每个Source算子读取文件的大小,并计算Source算子之间读取文件大小的比例,然后根据该比例为每个算子分配并行度,例如,有三个Source算子,这三个算子读取的文件大小的比例为3:2:1,作业总的并行度为9,那么算子1,算子2,算子3,所分配的并行度分别为9、6、3。
集***互层主要用于提供与集群进行交互的功能,方便其他层中的模块调用这些功能与集群进行交互,这些功能包括如何获取作业的处理文件大小信息、集群的各种资源信息以及作业的提交、结果的收集等。
以上就是一种Gaia***中的多作业合并器及方法的具体实施方案。
综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种Gaia***中的多作业合并与优化***,其特征在于,包括代理层、作业优化层和集***互层;
所述集群由至少一个节点组成,节点上部署Hadoop***和gaia***,分别组成Hadoop集群和Gaia集群;作业要处理的数据存放在所述Hadoop集群上;
所述代理层通过所述集***互层与集群进行数据交互;
所述代理层,包括作业信息采集模块、作业分类模块、作业合并模块以及作业优化模块和作业缓冲池;
所述作业信息采集模块,用于收集用户提交的作业,解析获得作业信息;
所述作业分类模块,用于根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储;
所述作业合并模块,用于提取作业缓冲池中的可合并型作业进行合并,得到合并后的作业送入作业优化模块;
所述作业优化模块,用于对所述合并后的作业进行优化,以协调合并后的作业的任务量和合并前被合并的带合并型作业所分配的总的内存资源之间的平衡,得到优化后的作业送入作业缓冲池进行缓冲存储;
所述集群通过所述集***互层从所述作业缓冲池中读取优化后的作业并执行。
2.如权利要求1所述的***,其特征在于,所述作业信息采集模块,用于收集用户提交的作业,解析获得作业信息,具体为:
所述作业信息采集模块,用于收集用户提交的作业,包括作业jar文件、作业来源信息、作业提交时间和作业的执行参数;
作业信息采集模块用于解析所述作业jar文件,获得作业执行流程图、作业处理文件的路径信息、作业复杂度以及作业并行度;并从所述作业执行流程图中提取出作业信息,包括作业所处理文件的大小及存放地址、作业分配的内存资源大小、作业执行流程图的深度、作业执行流程图中每个算子的类型、每个算子的算子并行度大小、不同类型的算子个数以及作业类型;
其中算子的类型包括本地算子和全局算子,本地算子中又包含source类型算子;
作业类型包括批处理作业和流处理作业;其中批处理作业中又包含迭代类型的批处理作业和非迭代类型的批处理作业;流处理作业中又包含迭代类型的流处理作业和非迭代类型的流处理作业。
3.如权利要求2所述的***,其特征在于,所述作业分类模块,用于根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储,具体为:
所述作业分类模块,用于根据作业信息采集模块采集到的作业信息,依据作业所处理文件大小和作业分配的内存资源大小的比值A和作业类型,将作业分成不同的类别并放入不同的作业缓冲池中;具体为:若作业类型为非迭代类型的批处理作业且比值A小于0.5,则分类为可合并型作业,否则分类为不可合并型作业;将分类后的作业依照对应的类型送入所述作业缓冲池中;
所述作业缓冲池包括可合并型作业缓冲池和不可合并型作业缓冲池,分别用于存储可合并型作业和不可合并型作业;
所述作业分类模块遍历所述可合并型作业缓冲池,获取所有可合并型作业的作业流程图的复杂度,取中位数作为复杂度分类阈值对可合并型作业进行再次分类,将所述作业流程图的复杂度高于复杂度分类阈值的可合并型作业分类为高复杂度作业,其他可合并型作业分类为低复杂度作业,所述可合并型作业缓冲池又分为复杂度作业缓冲池和低复杂度作业缓冲池,分别用于存储高复杂度作业和低复杂度作业;
所述作业缓冲池中还包括作业预提交缓冲池。
4.如权利要求3所述的***,其特征在于,所述作业合并模块,用于提取作业缓冲池中的可合并型作业进行合并,得到合并后的作业送入作业优化模块,具体为:
所述作业合并模块从所述作业缓冲池中检索出可合并型作业,根据设定的合并策略进行合并,合并后的作业送入作业优化模块;
所述设定的合并策略包括:
第一合并策略:将作业并行度相同的作业进行合并;
第二合并策略:按照复杂度从高到低顺次从高复杂度缓冲池选取高复杂度作业,对于当前选取的高复杂度作业,从低复杂度缓冲池中选取与当前选取的高复杂度作业并行度差别最小的低复杂度作业,将当前选取的高复杂度作业和低复杂度作业进行合并;继续选取下一高复杂度作业重复执行第二合并策略直至高复杂度作业缓冲池和低复杂度作业缓冲池至少一个为空为止。
5.如权利要求4所述的***,其特征在于,所述作业优化模块,用于对所述合并后的作业进行优化,以协调合并后的作业的任务量和合并前被合并的带合并型作业所分配的总的内存资源之间的平衡,得到优化后的作业送入作业缓冲池进行缓冲存储,具体为:
所述作业优化模块对每个合并后的作业进行优化,优化后的作业送入所述作业预提交缓冲池中;
所述作业优化模块对每个合并后的作业进行优化,具体为:
若合并后的作业是根据第一合并策略进行合并的,则不更改其作业并行度;
若合并后的作业是依据第二合并策略进行合并的,遍历其作业执行流程图,计算每个Source算子读取文件的大小,并计算所有Source算子之间读取文件大小的比例,依照所述比例以及作业并行度为每个Source算子分配并行度,和source算子直接相连以及递归相连的本地算子的算子并行度均设置为该相连的source节点的算子并行度;全局算子的算子并行度设置为与其直接相连的上游算子中并行度最大的算子并行度;
所述集群通过所述集***互层从所述作业预提交缓冲池中读取优化后的作业并执行。
6.如权利要求5所述的Gaia***中的多作业合并与优化***的方法,其特征在于,包括如下步骤:
步骤1:获取用户提交的作业,解析作业jar文件获得作业执行流程图、作业处理文件的路径信息、作业复杂度以及作业并行度;并从所述作业执行流程图中提取出作业信息,包括作业所处理文件的大小及存放地址、作业分配的内存资源大小、作业执行流程图的深度、作业执行流程图中每个算子的类型、每个算子的算子并行度大小、不同类型的算子个数以及作业类型;
步骤2:根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储;具体包括如下步骤:
步骤2-1:依据作业所处理文件大小和作业分配的内存资源大小的比值A和作业类型,将作业分成不同的类别并放入不同的作业缓冲池中;具体为:若作业类型为非迭代类型的批处理作业且比值A小于0.5,则分类为可合并型作业,否则分类为不可合并型作业;将分类后的作业依照对应的类型送入所述作业缓冲池中;
所述作业缓冲池包括可合并型作业缓冲池和不可合并型作业缓冲池,分别用于存储可合并型作业和不可合并型作业;
步骤2-2:所述作业分类模块遍历所述可合并型作业缓冲池,获取所有可合并型作业的作业流程图的复杂度,取中位数作为复杂度分类阈值对可合并型作业进行再次分类,将所述作业流程图的复杂度高于复杂度分类阈值的可合并型作业分类为高复杂度作业,其他可合并型作业分类为低复杂度作业,所述可合并型作业缓冲池又分为复杂度作业缓冲池和低复杂度作业缓冲池,分别用于存储高复杂度作业和低复杂度作业;
所述作业缓冲池中还包括作业预提交缓冲池;
步骤3:作业合并模块从所述作业缓冲池中检索出可合并型作业,根据设定的合并策略进行合并;
步骤3-1:将作业并行度相同的作业进行合并;具体为:
先从高复杂度作业缓冲池中选择一个高复杂度作业B,然后遍历低复杂度作业缓冲池,从中查找出与B作业并行度相同的低复杂度作业C,调用合并算法从B和C中读取作业执行流程图,合并B和C的作业执行流程图为一个作业执行流程图,得到B和C合并后的作业;
重复步骤3-1直到高复杂度作业缓冲池和低复杂度作业缓冲池中不存在并行度相同的作业为止;
步骤3-2:按照复杂度从高到低顺次从高复杂度缓冲池选取高复杂度作业,对于当前选取的高复杂度作业,从低复杂度缓冲池中选取与当前选取的高复杂度作业并行度差别最小的低复杂度作业,将当前选取的高复杂度作业和低复杂度作业进行合并;继续选取下一高复杂度作业重复执行第二合并策略直至高复杂度作业缓冲池和低复杂度作业缓冲池至少一个为空为止。
步骤4:对每个合并后的作业进行优化,优化后的作业送入所述作业预提交缓冲池中,优化过程具体为:
若合并后的作业是根据第一合并策略进行合并的,则不更改其作业并行度;
若合并后的作业是依据第二合并策略进行合并的,遍历其作业执行流程图,计算每个Source算子读取文件的大小,并计算所有Source算子之间读取文件大小的比例,依照所述比例以及作业并行度为每个Source算子分配并行度,和source算子直接相连以及递归相连的本地算子的算子并行度均设置为该相连的source节点的算子并行度;全局算子的算子并行度设置为与其直接相连的上游算子中并行度最大的算子并行度;
所述集群通过所述集***互层从所述作业预提交缓冲池中读取优化后的作业并执行。
CN201911067587.7A 2019-11-04 2019-11-04 一种Gaia***中的多作业合并与优化***及方法 Active CN110908796B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911067587.7A CN110908796B (zh) 2019-11-04 2019-11-04 一种Gaia***中的多作业合并与优化***及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911067587.7A CN110908796B (zh) 2019-11-04 2019-11-04 一种Gaia***中的多作业合并与优化***及方法

Publications (2)

Publication Number Publication Date
CN110908796A true CN110908796A (zh) 2020-03-24
CN110908796B CN110908796B (zh) 2022-03-18

Family

ID=69815813

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911067587.7A Active CN110908796B (zh) 2019-11-04 2019-11-04 一种Gaia***中的多作业合并与优化***及方法

Country Status (1)

Country Link
CN (1) CN110908796B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112256705A (zh) * 2020-11-13 2021-01-22 北京理工大学 一种Gaia***中的多表连接优化方法
CN113609361A (zh) * 2021-08-20 2021-11-05 东北大学 一种基于Gaia***的数据分类方法
CN113835896A (zh) * 2021-09-29 2021-12-24 东北大学 一种Gaia***中面向迭代计算的并行度动态调整方法
CN114064268A (zh) * 2021-10-26 2022-02-18 上海钧正网络科技有限公司 一种消息处理方法、装置及设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617087A (zh) * 2013-11-25 2014-03-05 华中科技大学 一种适合迭代计算的MapReduce优化方法
CN106502792A (zh) * 2016-10-20 2017-03-15 华南理工大学 一种面向不同类型负载的多租户资源优化调度方法
CN107832153A (zh) * 2017-11-14 2018-03-23 北京科技大学 一种Hadoop集群资源自适应分配方法
CN108170862A (zh) * 2018-01-26 2018-06-15 东北大学 一种面向大规模图数据集的统计显著子图挖掘方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103617087A (zh) * 2013-11-25 2014-03-05 华中科技大学 一种适合迭代计算的MapReduce优化方法
CN106502792A (zh) * 2016-10-20 2017-03-15 华南理工大学 一种面向不同类型负载的多租户资源优化调度方法
CN107832153A (zh) * 2017-11-14 2018-03-23 北京科技大学 一种Hadoop集群资源自适应分配方法
CN108170862A (zh) * 2018-01-26 2018-06-15 东北大学 一种面向大规模图数据集的统计显著子图挖掘方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
MAEN SALEH等: "Real-time scheduling with security awareness for packet switched networks", 《2012 IEEE RADIO AND WIRELESS SYMPOSIUM》 *
姜海鸥: "混合云环境下资源调度与管理若干问题研究", 《中国优秀博硕士学位论文全文数据库(博士)信息科技辑》 *
廖彬等: "Spark DAG优化MapReduce协同过滤算法", 《中山大学学报(自然科学版)》 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112256705A (zh) * 2020-11-13 2021-01-22 北京理工大学 一种Gaia***中的多表连接优化方法
CN112256705B (zh) * 2020-11-13 2022-11-01 北京理工大学 一种Gaia***中的多表连接优化方法
CN113609361A (zh) * 2021-08-20 2021-11-05 东北大学 一种基于Gaia***的数据分类方法
CN113609361B (zh) * 2021-08-20 2023-11-14 东北大学 一种基于Gaia***的数据分类方法
CN113835896A (zh) * 2021-09-29 2021-12-24 东北大学 一种Gaia***中面向迭代计算的并行度动态调整方法
CN113835896B (zh) * 2021-09-29 2024-03-22 东北大学 一种Gaia***中面向迭代计算的并行度动态调整方法
CN114064268A (zh) * 2021-10-26 2022-02-18 上海钧正网络科技有限公司 一种消息处理方法、装置及设备

Also Published As

Publication number Publication date
CN110908796B (zh) 2022-03-18

Similar Documents

Publication Publication Date Title
CN110908796B (zh) 一种Gaia***中的多作业合并与优化***及方法
CN107239335B (zh) 分布式***的作业调度***及方法
CN104050042B (zh) Etl作业的资源分配方法及装置
CN106228389A (zh) 基于随机森林算法的网络潜力用户挖掘方法及***
WO2022001918A1 (zh) 构建预测模型的方法、装置、计算设备和存储介质
CN108650684A (zh) 一种关联规则确定方法及装置
US7725900B2 (en) Method of assigning objects to processing units
CN110334157B (zh) 一种云计算管理***
CN111522786A (zh) 日志处理***及方法
CN104317942A (zh) 一种基于Hadoop云平台的海量数据比对方法及***
CN114756629B (zh) 基于sql的多源异构数据交互分析引擎及方法
CN110414865A (zh) 一种审核任务的分配方法、装置、计算机设备和存储介质
CN116777284A (zh) 一种空间及属性数据一体化质检方法
CN106156170B (zh) 舆情分析方法及装置
CN110084507A (zh) 云计算环境下分级感知的科学工作流调度优化方法
CN105873119A (zh) 一种移动网络用户群体流量使用行为的分类方法
CN117472517B (zh) 一种基于Flink分布式处理FTP文件的方法
CN110297959A (zh) 数据存储方法、装置、存储介质及边缘服务器
CN112182031B (zh) 数据查询方法及装置、存储介质、电子装置
CN107104829B (zh) 一种基于网络拓扑数据的物理设备匹配分配方法及装置
CN112598112B (zh) 一种基于图神经网络的资源调度方法
CN115080386A (zh) 基于自动驾驶功能要求的场景有效性分析方法与设备
CN113792079A (zh) 数据查询方法、装置、计算机设备和存储介质
CN112380218A (zh) 一种基于etl进行数据仓库各层数据表汇总的自动触发方法
CN112732715B (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