基于MapReduce 计算模型的任务封装方法及装置制造方法及图纸

技术编号:8800958 阅读:206 留言:0更新日期:2013-06-13 05:39
本发明专利技术涉及一种基于MapReduce计算模型的任务封装方法及装置,所述方法包括如下步骤:获取输入程序,判断输入程序是否为Java编译程序,若是,则将输入程序打包为Java作业类型的任务,即使用Java标准打包器将Java编译程序封装成Jar格式文件;将Java作业类型的任务信息传递给壳任务;若否,则判断输入程序是否为流作业类型的程序,若是,则将流作业类型的程序作为流作业类型的任务,将流作业类型的任务信息传递给壳任务;若否,则将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给壳任务。本发明专利技术支持更多的计算类型,在解决实际问题时,可以更关注在业务逻辑而非对计算任务的底层封装,更快更好地解决实际生产需求。

【技术实现步骤摘要】

本专利技术涉及云计算领域,具体涉及一种基于MapReduce计算模型的任务封装方法及装置。
技术介绍
Hadoop是一个能够对大量数据进行分布式处理的软件框架,用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式系统(Hadoop Distributed File System,简称为HDFS)。HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上,而且它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了可移植操作系统接口(PortableOperating System Interface of Unix,缩写为POSIX)的要求,这样可以以流的形式访问文件系统中的数据。MapReduce是Hadoop的核心组件之一,Hadoop包括两部分,一是分布式文件系统,一部是分布式计算系统,也就是MapReduce,两者缺一不可。也就是说,可以通过MapReduce很容易在Hadoop平台上进行分布式的计算编程。Hadoop平台的框架代码由Java语言编写,因此,MapReduce计算模型对于原生Java程序,可以直接被加载调用。但是对于其他语言的程序无法直接调用,只能在其之外,对其输入输出的数据以数据流的方式进行写和读。这种数据流的形式在程序中可以称为流作业(Streaming Job)。其中流(Streaming)就是指输入输出数据的形式。这些数据一般指Linux下的各种可执行程序:包括但不限于Linux外壳程序(Shell程序)、Python或Perl程序的脚本程序文件、使用其他语言编写的程序,使用Linux编译器编译后输出的可执行文件,如后缀为eXe、bin的一些文件。MapReduce计算模型环境时,将用户程序自定义的业务逻辑封装在分布式计算系统自带的壳任务内,由壳任务来引导整个工作流。MapReduce计算模型环境时,在运行MapReduce计算模型支持的Java编译程序,使用Java标准打包器将Java编译程序封装成Jar格式文件,形成Java作业类型的任务,然后将Java作业类型的任务信息,即Jar格式文件的位置信息作为参数传递给壳任务。在计算机程序中,任务是指在多程序或多进程环境中,由计算机来完成的基本工作元,它是控制程序的一个或多个指令序列,壳任务是指按照MapReduce计算模型自定义的开发接口开发的,用于封装其他程序的程序。用户在开发分布式计算系统的时候,往往有多种多样的计算需求,需要使用除Java语言以外的其他语言编写程序,而MapReduce计算模型是基于Java语言开发的,对于其他计算机程序语言编写的程序不支持,限制了整个分布式计算系统的灵活性和适应性。
技术实现思路
本专利技术要解决的一个技术问题是现有技术中的MapReduce计算模型是基于Java语言开发的,对于其他计算机程序语言编写的程序不支持,限制了整个分布式计算系统的灵活性和适应性的技术问题,从而提供一种将非MapReduce支持的作业类型封装为MapReduce支持的任务类型的基于MapReduce计算模型的任务封装方法及装置。为解决上述技术问题,本专利技术采用的技术方案如下:—种基于MapReduce计算模型的任务封装方法,包括如下步骤:SI,任务引擎获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序,若是,则执行步骤S2 ;若否,则执行步骤S4 ;S2,使用Java标准打包器将Java编译程序封装成Jar格式文件;S3,将Jar格式文件的位置信息传递给MapReduce计算模型中运行的壳任务;S4,判断所述输入程序是否为流作业类型的程序,若是,执行步骤S5;若否,则执行步骤S6 ;S5,将流作业类型的程序作为流作业类型的任务,并将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务;S6,将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务。在所述步骤SI中,判断所述任务是否为MapReduce计算模型支持的Java编译程序,包括如下步骤:S101,按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试,如果返回正常数据,则确定所述输入程序是MapReduce计算模型支持的Java编译程序;否则,确定所述任务类型不是MapReduce计算模型支持的Java程序编译文件。在所述步骤S6中,将所述输入程序封装为流作业类型的任务,包括如下步骤:S601,将所述输入程序保存到分布式计算系统,并将所述输入程序启动信息传递给所述壳任务,将所述输入程序和启动信息作为流作业类型的任务,所述壳任务调用该流作业类型的任务时,通过调用该流作业类型任务的所述启动信息来执行输入程序。所述流作业类型,包括Linux环境下的可执行程序。所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per I脚本程序、计算机程序经编译后输出的可执行文件。所述流作业类型的任务的启动信息包括所述流作业类型的任务的调用命令信息。基于同一专利技术构思,本专利技术还提供一种基于MapReduce计算模型的任务封装装置,包括第一判断模块、打包模块、第一传递模块、第二判断模块、第二传递模块和封装模块;其中,所述第一判断模块,用于获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序;所述打包模块,用于当所述输入程序为MapReduce计算模型支持的Java编译程序时,将所述输入打包为Java作业类型的任务,即使用Java标准打包器将Java编译程序封装成Jar格式文件;所述第一传递模块,用于将所述Java作业类型的任务信息传递给MapReduce计算模型中运行的壳任务;所述第二判断模块,用于判断所述输入程序是否为流作业类型的程序;所述第二传递模块,用于将所述流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务;所述封装模块,用于将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型。所述第一判断模块包括测试子模块;其中,所述测试子模块,用于按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试。所述封装模块,包括传递子模块;其中,所述传递子模块,用于将所述流作业类型的任务保存到分布式计算系统,并将所述流作业类型的任务启动信息传递给所述壳任务。所述流作业类型,包括Linux环境下的可执行程序。所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per I脚本程序、计算机程序经编译后输出的可执行文件。根据权利要求11所述的任务封装装置,其特征在于,所述流作业类型的任务的启动信息包括所述流作业类型的任务的调用命令信息。本专利技术的上述技术方案相比现有技术具有以下优点:本专利技术的一种基于MapReduce计算模型的任务封装方法及装置,首先,判断输入程序是否为MapReduce计算模型支持的Java编译程序或流作业类型的程序,若是,对于Java编译程序,则将输入程序直接打包为Java作业类型的任务,将流作业类型的程序作业流作业类型的任务,由用户本文档来自技高网
...

【技术保护点】
一种基于MapReduce计算模型的任务封装方法,其特征在于,包括如下步骤:S1,任务引擎获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序,若是,则执行步骤S2;若否,则执行步骤S4;S2,使用Java标准打包器将Java编译程序封装成Jar格式文件;S3,将Jar格式文件的位置信息传递给MapReduce计算模型中运行的壳任务;S4,判断所述输入程序是否为流作业类型的程序,若是,执行步骤S5;若否,则执行步骤S6;S5,将流作业类型的程序作为流作业类型的任务,并将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务;S6,将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务。

【技术特征摘要】
1.一种基于MapReduce计算模型的任务封装方法,其特征在于,包括如下步骤: SI,任务引擎获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序,若是,则执行步骤S2 ;若否,则执行步骤S4 ; 52,使用Java标准打包器将Java编译程序封装成Jar格式文件; 53,将Jar格式文件的位置信息传递给MapReduce计算模型中运行的壳任务; S4,判断所述输入程序是否为流作业类型的程序,若是,执行步骤S5 ;若否,则执行步骤S6 ; S5,将流作业类型的程序作为流作业类型的任务,并将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; S6,将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务。2.根据权利要求1所述的任务封装方法,其特征在于,在所述步骤SI中,判断所述任务是否为MapReduce计算模型支持的Java编译程序,包括如下步骤: S101,按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试,如果返回正常数据,则确定所述输入程序是MapReduce计算模型支持的Java编译程序;否则,确定所述任务类型不是MapReduce计算模型支持的Java程序编译文件。3.根据权利要求1或2所述的任务封装方法,其特征在于,在所述步骤S6中,将所述输入程序封装为流作业类型的任务,包括如下步骤: S601,将所述输入程序保存到分布式计算系统,并将所述输入程序启动信息传递给所述壳任务,将所述输 入程序和启动信息作为流作业类型的任务,所述壳任务调用该流作业类型的任务时,通过调用该流作业类型任务的所述启动信息来执行输入程序。4.根据权利要求1-3任一所述的任务封装方法,其特征在于,所述流作业类型,包括Linux环境下的可执行程序。5.根据权利要求4所述的任务封装方法,其特征在于,所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per I脚本程序、计算机程序经编译后输出的可执行文件。6.根据...

【专利技术属性】
技术研发人员:岳洋钮毅
申请(专利权)人:中金数据系统有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1