有效
一种Gaia系统中的多作业合并与优化系统及方法
陈德阳、王国仁、赵宇海、郑军、李荣华
北京理工大学
陈
陈德阳机构 暂无
技术领域 暂无
王
王国仁机构 暂无
技术领域 暂无
赵
赵宇海机构 暂无
技术领域 暂无
郑
郑军机构 暂无
技术领域 暂无
李
李荣华机构 暂无
技术领域 暂无
摘要
本发明公开了一种Gaia系统中的多作业合并与优化系统及方法,属于大数据处理技术领域,解决了Gaia系统中用户作业和用户指定的资源大小方面的不匹配问题。本发明方案为:代理层通过集群交互层与集群进行数据交互。代理层,包括:作业信息采集模块,用于收集用户提交的作业,解析获得作业信息;作业分类模块,用于根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储;作业合并模块,用于提取作业缓冲池中的可合并型作业进行合并,得到合并后的作业送入作业优化模块。作业优化模块,用于对合并后的作业进行优化,优化后的作业送入作业缓冲池进行缓冲存储。集群通过集群交互层从作业缓冲池中读取优化后的作业并执行。
1.一种Gaia系统中的多作业合并与优化系统,其特征在于,包括代理层、作业优化层和集群交互层;所述集群由至少一个节点组成,节点上部署Hadoop系统和gaia系统,分别组成Hadoop集群和Gaia集群;作业要处理的数据存放在所述Hadoop集群上;所述代理层通过所述集群交互层与集群进行数据交互;所述代理层,包括作业信息采集模块、作业分类模块、作业合并模块以及作业优化模块和作业缓冲池;所述作业信息采集模块,用于收集用户提交的作业,解析获得作业信息;所述作业分类模块,用于根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储;所述作业合并模块,用于提取作业缓冲池中的可合并型作业进行合并,得到合并后的作业送入作业优化模块;所述作业优化模块,用于对所述合并后的作业进行优化,以协调合并后的作业的任务量和合并前被合并的带合并型作业所分配的总的内存资源之间的平衡,得到优化后的作业送入作业缓冲池进行缓冲存储;所述集群通过所述集群交互层从所述作业缓冲池中读取优化后的作业并执行;所述作业信息采集模块,用于收集用户提交的作业,解析获得作业信息,具体为:所述作业信息采集模块,用于收集用户提交的作业,包括作业jar文件、作业来源信息、作业提交时间和作业的执行参数;作业信息采集模块用于解析所述作业jar文件,获得作业执行流程图、作业处理文件的路径信息、作业复杂度以及作业并行度;并从所述作业执行流程图中提取出作业信息,包括作业所处理文件的大小及存放地址、作业分配的内存资源大小、作业执行流程图的深度、作业执行流程图中每个算子的类型、每个算子的算子并行度大小、不同类型的算子个数以及作业类型;其中算子的类型包括本地算子和全局算子,本地算子中又包含source类型算子;作业类型包括批处理作业和流处理作业;其中批处理作业中又包含迭代类型的批处理作业和非迭代类型的批处理作业;流处理作业中又包含迭代类型的流处理作业和非迭代类型的流处理作业;所述作业分类模块,用于根据作业信息将作业分类为可合并型作业和不可合并型作业并送入作业缓冲池进行缓冲存储,具体为:所述作业分类模块,用于根据作业信息采集模块采集到的作业信息,依据作业所处理文件大小和作业分配的内存资源大小的比值A和作业类型,将作业分成不同的类别并放入不同的作业缓冲池中;具体为:若作业类型为非迭代类型的批处理作业且比值A小于0.5,则分类为可合并型作业,否则分类为不可合并型作业;将分类后的作业依照对应的类型送入所述作业缓冲池中;所述作业缓冲池包括可合并型作业缓冲池和不可合并型作业缓冲池,分别用于存储可合并型作业和不可合并型作业;所述作业分类模块遍历所述可合并型作业缓冲池,获取所有可合并型作业的作业流程图的复杂度,取中位数作为复杂度分类阈值对可合并型作业进行再次分类,将所述作业流程图的复杂度高于复杂度分类阈值的可合并型作业分类为高复杂度作业,其他可合并型作业分类为低复杂度作业,所述可合并型作业缓冲池又分为复杂度作业缓冲池和低复杂度作业缓冲池,分别用于存储高复杂度作业和低复杂度作业;所述作业缓冲池中还包括作业预提交缓冲池;所述作业合并模块,用于提取作业缓冲池中的可合并型作业进行合并,得到合并后的作业送入作业优化模块,具体为:所述作业合并模块从所述作业缓冲池中检索出可合并型作业,根据设定的合并策略进行合并,合并后的作业送入作业优化模块;所述设定的合并策略包括:第一合并策略:将作业并行度相同的作业进行合并;第二合并策略:按照复杂度从高到低顺次从高复杂度缓冲池选取高复杂度作业,对于当前选取的高复杂度作业,从低复杂度缓冲池中选取与当前选取的高复杂度作业并行度差别最小的低复杂度作业,将当前选取的高复杂度作业和低复杂度作业进行合并;继续选取下一高复杂度作业重复执行第二合并策略直至高复杂度作业缓冲池和低复杂度作业缓冲池至少一个为空为止;所述作业优化模块,用于对所述合并后的作业进行优化,以协调合并后的作业的任务量和合并前被合并的带合并型作业所分配的总的内存资源之间的平衡,得到优化后的作业送入作业缓冲池进行缓冲存储,具体为:所述作业优化模块对每个合并后的作业进行优化,优化后的作业送入所述作业预提交缓冲池中;所述作业优化模块对每个合并后的作业进行优化,具体为:若合并后的作业是根据第一合并策略进行合并的,则不更改其作业并行度;若合并后的作业是依据第二合并策略进行合并的,遍历其作业执行流程图,计算每个Source算子读取文件的大小,并计算所有Source算子之间读取文件大小的比例,依照所述比例以及作业并行度为每个Source算子分配并行度,和source算子直接相连以及递归相连的本地算子的算子并行度均设置为该相连的source节点的算子并行度;全局算子的算子并行度设置为与其直接相连的上游算子中并行度最大的算子并行度;所述集群通过所述集群交互层从所述作业预提交缓冲池中读取优化后的作业并执行。
2.一种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节点的算子并行度;全局算子的算子并行度设置为与其直接相连的上游算子中并行度最大的算子并行度;集群通过集群交互层从所述作业预提交缓冲池中读取优化后的作业并执行。
暂无引用专利



