基于MAPREDUCE计算模型的任务封装方法及装置.pdf

上传人:Y0****01 文档编号:1561650 上传时间:2018-06-24 格式:PDF 页数:11 大小:1.18MB
返回 下载 相关 举报
摘要
申请专利号:

CN201310050148.1

申请日:

2013.02.06

公开号:

CN103150161A

公开日:

2013.06.12

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/44申请日:20130206|||公开

IPC分类号:

G06F9/44; G06F9/45

主分类号:

G06F9/44

申请人:

中金数据系统有限公司

发明人:

岳洋; 钮毅

地址:

100176 北京市大兴区北京经济技术开发区博兴八路1号

优先权:

专利代理机构:

北京三聚阳光知识产权代理有限公司 11250

代理人:

寇海侠

PDF下载: PDF下载
内容摘要

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

权利要求书

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

说明书

说明书基于MapReduce 计算模型的任务封装方法及装置
技术领域
本发明涉及云计算领域,具体涉及一种基于MapReduce计算模型的任务封装方法及装置。 
背景技术
Hadoop是一个能够对大量数据进行分布式处理的软件框架,用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式系统(Hadoop Distributed File System,简称为HDFS)。HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上,而且它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了可移植操作系统接口(Portable Operating 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计算模型的任务封装方法,包括如下步骤: 
S1,任务引擎获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序,若是,则执行步骤S2;若否,则执行步骤S4; 
S2,使用Java标准打包器将Java编译程序封装成Jar格式文件; 
S3,将Jar格式文件的位置信息传递给MapReduce计算模型中运行的壳任务; 
S4,判断所述输入程序是否为流作业类型的程序,若是,执行步骤S5;若否,则执行步骤S6; 
S5,将流作业类型的程序作为流作业类型的任务,并将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 
S6,将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务。 
在所述步骤S1中,判断所述任务是否为MapReduce计算模型支持的Java编译程序,包括如下步骤: 
S101,按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试,如果返回正常数据,则确定所述输入程序是MapReduce计算模型支持的Java编译程序;否则,确定所述任务类型不是MapReduce计算模型支持的Java程序编译文件。 
在所述步骤S6中,将所述输入程序封装为流作业类型的任务,包括如下步骤: 
S601,将所述输入程序保存到分布式计算系统,并将所述输入程序启动信息传递给所述壳任务,将所述输入程序和启动信息作为流作业类型的任务,所述壳任务调用该流作业类型的任务时,通过调用该流作业类型任务的所述启动信息来执行输入程序。 
所述流作业类型,包括Linux环境下的可执行程序。 
所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per l脚本程序、计算机程序经编译后输出的可执行文件。 
所述流作业类型的任务的启动信息包括所述流作业类型的任务的调用命令信息。 
基于同一发明构思,本发明还提供一种基于MapReduce计算模型的任务 封装装置,包括第一判断模块、打包模块、第一传递模块、第二判断模块、第二传递模块和封装模块; 
其中, 
所述第一判断模块,用于获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序; 
所述打包模块,用于当所述输入程序为MapReduce计算模型支持的Java编译程序时,将所述输入打包为Java作业类型的任务,即使用Java标准打包器将Java编译程序封装成Jar格式文件; 
所述第一传递模块,用于将所述Java作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 
所述第二判断模块,用于判断所述输入程序是否为流作业类型的程序; 
所述第二传递模块,用于将所述流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 
所述封装模块,用于将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型。 
所述第一判断模块包括测试子模块; 
其中, 
所述测试子模块,用于按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试。 
所述封装模块,包括传递子模块; 
其中, 
所述传递子模块,用于将所述流作业类型的任务保存到分布式计算系统,并将所述流作业类型的任务启动信息传递给所述壳任务。 
所述流作业类型,包括Linux环境下的可执行程序。 
所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per l脚本程序、计算机程序经编译后输出的可执行文件。 
根据权利要求11所述的任务封装装置,其特征在于,所述流作业类型的 任务的启动信息包括所述流作业类型的任务的调用命令信息。 
本发明的上述技术方案相比现有技术具有以下优点: 
本发明的一种基于MapReduce计算模型的任务封装方法及装置,首先,判断输入程序是否为MapReduce计算模型支持的Java编译程序或流作业类型的程序,若是,对于Java编译程序,则将输入程序直接打包为Java作业类型的任务,将流作业类型的程序作业流作业类型的任务,由用户程序直接调用;否则将所述输入程序封装为流作业类型的任务,将流作业类型任务启动信息传递给壳任务。本发明将非Java语言编译的程序进行封装,使MapReduce计算模型支持非Java语言编译的程序,满足了用户多种多样的计算需求;本发明支持更多的计算类型,在解决实际问题时,可以更关注在业务逻辑而非对计算任务的底层封装,更快更好地解决实际生产需求。本发明所使用的壳任务包含有任务的存储地址信息、启动信息和用户程序自定义的业务逻辑信息,能够控制程序的流转,从而满足用户复杂的计算需求。 
将流作业类型任务的代码保存在所述分布式计算系统中,并将所述流作业类型的任务的启动信息传递给所述壳任务,由所述壳任务来控制整个程序的流转,这种封装方式,简单易于实现,增加的代码量较少。所述分布式计算系统在调用所述流作业类型的任务时,只需要发出调用命令即可,而不用关心所述流作业类型的任务代码由何种计算机程序语言编写。 
附图说明
为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明,其中: 
图1为本发明的实施例一基于MapReduce计算模型的任务封装方法的流程示意图; 
图2为本发明的实施例二的基于MapReduce计算模型的任务封装装置的 示意图。 
具体实施方式
实施例一: 
参见图1,本发明的实施例一种基于MapReduce计算模型的任务封装方法,包括如下步骤: 
S1,任务引擎获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序,若是,则执行步骤S2;若否,则执行步骤S4; 
S2,将所述输入程序打包为Java作业类型的任务,即使用Java标准打包器将Java编译程序封装成Jar格式文件; 
S3,将Java作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 
S4,判断所述输入程序是否为流作业类型的程序,若是,将流作业类型的程序作为流作业类型的任务,执行步骤S5;若否,则执行步骤S6;所述流作业类型的程序包括Linux环境下的可执行程序;所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per l脚本程序、计算机程序经编译后输出的可执行文件; 
S5,将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 
S6,将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务;本步骤中的所述输入程序指除Java以外的计算机语言编写的计算机程序程序,将所述输入程序封装为流作业类型的任务具体指将所述输入程序在Linux操作系统中编译成可执行程序,然后将编译后的可执行程序和该可执行程序的启动信息打包成流作为类型的任务。 
在所述步骤S1中,所述MapReduce计算模型支持的Java编译程序,就是Java程序经编译后形成的程序文件,扩展名为.class。 
进一步地,在所述步骤S1中,判断所述任务是否为MapReduce计算模型支持的Java编译程序,包括如下步骤: 
S101,按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试,如果返回正常数据,则确定所述输入程序是MapReduce计算模型支持的Java编译程序;否则,确定所述任务类型不是MapReduce计算模型支持的Java程序编译文件。 
进一步地,将所述输入程序封装为流作业类型的任务,包括如下步骤: 
S601,将所述流作业类型的任务保存到分布式计算系统,并将所述流作业类型的任务的启动信息传递给所述壳任务。 
进一步地,在所述步骤S2中,Java作业类型的任务信息包括所述任务的存储地址信息和数据类型信息;所述流作业类型的任务的启动信息包括所述流作业类型的任务的调用命令信息、地址信息和任务中设定的参数值信息。 
任务信息是静态信息,启动信息是动态信息。 
例如,有一个任务,它的参数共有4个,分别为A、B、C、D,A为整数类型,B为字符串类型,C为日期类型,D为字符串类型。这种信息为任务信息。 
在启动该任务时,A的值为10,B的值为”/root/input0”(B表示该任务执行时的输入数据所在位置),C为当前日期,D的值为”/root/output0”(D表示该任务执行时的输出数据所在位置),这种信息为启动信息。启动信息是每一次配置任务并启动时动态输入的。 
在本实施例中,以C++程序作为输入程序进行任务封装。所述C++程序文件名为helloworld.cpp,保存为文本格式文件。在标准Linux操作系统中,采用gcc编译器对helloworld.cpp文件进行编译,输出可执行文件helloworld.exe。 
将所述文件helloworld.exe复制到分布式系统,任务引擎为所述helloworld.exe文件设定用户需要的参数,所述参数为任务信息,所述参数的值为启动信息,分布式文件系统的壳任务在调用helloworld.exe时,所述 helloworld.exe文件和任务信息作为一个任务,所述壳任务在调用该任务时,由任务引擎将启动信息传递给壳任务,上述任务可以在分布式系统中执行。 
本发明将非Java语言编译的程序进行封装,使MapReduce计算模型支持非Java语言编译的程序,满足了用户多种多样的计算需求;本发明支持更多的计算类型,在解决实际问题时,可以更关注在业务逻辑而非对计算任务的底层封装,更快更好地解决实际生产需求。本发明所使用的壳任务包含有任务的存储地址信息、启动信息和用户程序自定义的业务逻辑信息,能够控制程序的流转,从而满足用户复杂的计算需求。 
实施例二: 
基于同一发明构思,本发明还提供一种基于MapReduce计算模型的任务封装装置,包括第一判断模块、打包模块、第一传递模块、第二判断模块、第二传递模块和封装模块;其中, 
所述第一判断模块,用于获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序; 
所述打包模块,用于当所述输入程序就MapReduce计算模型支持的Java编译程序时,将所述输入打包为Java作业类型的任务,即使用Java标准打包器将Java编译程序封装成Jar格式文件; 
所述第一传递模块,用于将所述Java作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 
所述第二判断模块用于判断所述输入程序是否为流作业类型的程序; 
所述第二传递模块,用于将所述流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 
所述封装模块,用于将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型。 
所述第一判断模块还包括测试子模块;其中, 
所述测试子模块,用于按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试。 
所述封装模块,包括传递子模块;其中, 
所述传递子模块,用于将所述流作业类型的任务保存到分布式计算系统,并将所述流作业类型的任务启动信息传递给所述壳任务。 
所述流作业类型,包括Linux环境下的可执行程序。 
所述Linux环境下的可执行程序包括Linux外壳程序、Python或Perl脚本程序、计算机程序经编译后输出的可执行文件。 
所述流作业类型的任务的启动信息包括所述流作业类型的任务的调用命令信息。 
本发明的基于MapReduce计算模型的任务封装装置,本发明将非Java语言编译的程序进行封装,使MapReduce计算模型支持非Java语言编译的程序,满足了用户多种多样的计算需求;本发明支持更多的计算类型,在解决实际问题时,可以更关注在业务逻辑而非对计算任务的底层封装,更快更好地解决实际生产需求。本发明所使用的壳任务包含有任务的存储地址信息、启动信息和用户程序自定义的业务逻辑信息,能够控制程序的流转,从而满足用户复杂的计算需求。 
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。

基于MAPREDUCE计算模型的任务封装方法及装置.pdf_第1页
第1页 / 共11页
基于MAPREDUCE计算模型的任务封装方法及装置.pdf_第2页
第2页 / 共11页
基于MAPREDUCE计算模型的任务封装方法及装置.pdf_第3页
第3页 / 共11页
点击查看更多>>
资源描述

《基于MAPREDUCE计算模型的任务封装方法及装置.pdf》由会员分享,可在线阅读,更多相关《基于MAPREDUCE计算模型的任务封装方法及装置.pdf(11页珍藏版)》请在专利查询网上搜索。

1、(10)申请公布号 CN 103150161 A(43)申请公布日 2013.06.12CN103150161A*CN103150161A*(21)申请号 201310050148.1(22)申请日 2013.02.06G06F 9/44(2006.01)G06F 9/45(2006.01)(71)申请人中金数据系统有限公司地址 100176 北京市大兴区北京经济技术开发区博兴八路1号(72)发明人岳洋 钮毅(74)专利代理机构北京三聚阳光知识产权代理有限公司 11250代理人寇海侠(54) 发明名称基于MapReduce 计算模型的任务封装方法及装置(57) 摘要本发明涉及一种基于MapRe。

2、duce计算模型的任务封装方法及装置,所述方法包括如下步骤:获取输入程序,判断输入程序是否为Java编译程序,若是,则将输入程序打包为Java作业类型的任务,即使用Java标准打包器将Java编译程序封装成Jar格式文件;将Java作业类型的任务信息传递给壳任务;若否,则判断输入程序是否为流作业类型的程序,若是,则将流作业类型的程序作为流作业类型的任务,将流作业类型的任务信息传递给壳任务;若否,则将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给壳任务。本发明支持更多的计算类型,在解决实际问题时,可以更关注在业务逻辑而非对计算任务的底层封装,更快更好地解决实际生产需求。(51)。

3、Int.Cl.权利要求书2页 说明书6页 附图2页(19)中华人民共和国国家知识产权局(12)发明专利申请权利要求书2页 说明书6页 附图2页(10)申请公布号 CN 103150161 ACN 103150161 A1/2页21.一种基于MapReduce计算模型的任务封装方法,其特征在于,包括如下步骤:S1,任务引擎获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序,若是,则执行步骤S2;若否,则执行步骤S4;S2,使用Java标准打包器将Java编译程序封装成Jar格式文件;S3,将Jar格式文件的位置信息传递给MapReduce计算模型中运行的壳任务;。

4、S4,判断所述输入程序是否为流作业类型的程序,若是,执行步骤S5;若否,则执行步骤S6;S5,将流作业类型的程序作为流作业类型的任务,并将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务;S6,将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务。2.根据权利要求1所述的任务封装方法,其特征在于,在所述步骤S1中,判断所述任务是否为MapReduce计算模型支持的Java编译程序,包括如下步骤:S101,按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试,如果返回正常数据,则确定所述输入程序是MapRed。

5、uce计算模型支持的Java编译程序;否则,确定所述任务类型不是MapReduce计算模型支持的Java程序编译文件。3.根据权利要求1或2所述的任务封装方法,其特征在于,在所述步骤S6中,将所述输入程序封装为流作业类型的任务,包括如下步骤:S601,将所述输入程序保存到分布式计算系统,并将所述输入程序启动信息传递给所述壳任务,将所述输入程序和启动信息作为流作业类型的任务,所述壳任务调用该流作业类型的任务时,通过调用该流作业类型任务的所述启动信息来执行输入程序。4.根据权利要求1-3任一所述的任务封装方法,其特征在于,所述流作业类型,包括Linux环境下的可执行程序。5.根据权利要求4所述的任。

6、务封装方法,其特征在于,所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per l脚本程序、计算机程序经编译后输出的可执行文件。6.根据权利要求3所述的任务封装方法,其特征在于,所述流作业类型的任务的启动信息包括所述流作业类型的任务的调用命令信息。7.一种基于MapReduce计算模型的任务封装装置,其特征在于,包括第一判断模块、打包模块、第一传递模块、第二判断模块、第二传递模块和封装模块;其中,所述第一判断模块,用于获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序;所述打包模块,用于当所述输入程序为MapReduce计算模型支持的Ja。

7、va编译程序时,将所述输入打包为Java作业类型的任务,即使用Java标准打包器将Java编译程序封装成Jar格式文件;所述第一传递模块,用于将所述Java作业类型的任务信息传递给MapReduce计算模型中运行的壳任务;所述第二判断模块,用于判断所述输入程序是否为流作业类型的程序;所述第二传递模块,用于将所述流作业类型的任务信息传递给MapReduce计算模型中权 利 要 求 书CN 103150161 A2/2页3运行的壳任务;所述封装模块,用于将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型。8.根据权利要求7所述的任务封装装置,其特征在于,所。

8、述第一判断模块包括测试子模块;其中,所述测试子模块,用于按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试。9.根据权利要求7或8所述的任务封装装置,其特征在于,所述封装模块,包括传递子模块;其中,所述传递子模块,用于将所述流作业类型的任务保存到分布式计算系统,并将所述流作业类型的任务启动信息传递给所述壳任务。10.根据权利要求7-9任一所述的任务封装装置,其特征在于,所述流作业类型,包括Linux环境下的可执行程序。11.根据权利要求10所述的任务封装装置,其特征在于,所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per l脚本程序、计算机程序经编译。

9、后输出的可执行文件。12.根据权利要求9所述的任务封装装置,其特征在于,所述流作业类型的任务的启动信息包括所述流作业类型的任务的调用命令信息。权 利 要 求 书CN 103150161 A1/6页4基于 MapReduce 计算模型的任务封装方法及装置技术领域0001 本发明涉及云计算领域,具体涉及一种基于MapReduce计算模型的任务封装方法及装置。 背景技术0002 Hadoop是一个能够对大量数据进行分布式处理的软件框架,用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。Hadoop实现了一个分布式系统(Hadoop Distributed Fi。

10、le System,简称为HDFS)。HDFS有着高容错性的特点,并且设计用来部署在低廉的硬件上,而且它提供高传输率来访问应用程序的数据,适合那些有着超大数据集的应用程序。HDFS放宽了可移植操作系统接口(Portable Operating System Interface of Unix,缩写为POSIX)的要求,这样可以以流的形式访问文件系统中的数据。 0003 MapReduce是Hadoop的核心组件之一,Hadoop包括两部分,一是分布式文件系统,一部是分布式计算系统,也就是MapReduce,两者缺一不可。也就是说,可以通过MapReduce很容易在Hadoop平台上进行分布式的。

11、计算编程。Hadoop平台的框架代码由Java语言编写,因此,MapReduce计算模型对于原生Java程序,可以直接被加载调用。但是对于其他语言的程序无法直接调用,只能在其之外,对其输入输出的数据以数据流的方式进行写和读。这种数据流的形式在程序中可以称为流作业(Streaming Job)。其中流(Streaming)就是指输入输出数据的形式。这些数据一般指Linux下的各种可执行程序:包括但不限于Linux外壳程序(Shell程序)、Python或Perl程序的脚本程 序文件、使用其他语言编写的程序,使用Linux编译器编译后输出的可执行文件,如后缀为exe、bin的一些文件。 0004 。

12、MapReduce计算模型环境时,将用户程序自定义的业务逻辑封装在分布式计算系统自带的壳任务内,由壳任务来引导整个工作流。MapReduce计算模型环境时,在运行MapReduce计算模型支持的Java编译程序,使用Java标准打包器将Java编译程序封装成Jar格式文件,形成Java作业类型的任务,然后将Java作业类型的任务信息,即Jar格式文件的位置信息作为参数传递给壳任务。 0005 在计算机程序中,任务是指在多程序或多进程环境中,由计算机来完成的基本工作元,它是控制程序的一个或多个指令序列,壳任务是指按照MapReduce计算模型自定义的开发接口开发的,用于封装其他程序的程序。 00。

13、06 用户在开发分布式计算系统的时候,往往有多种多样的计算需求,需要使用除Java语言以外的其他语言编写程序,而MapReduce计算模型是基于Java语言开发的,对于其他计算机程序语言编写的程序不支持,限制了整个分布式计算系统的灵活性和适应性。 发明内容0007 本发明要解决的一个技术问题是现有技术中的MapReduce计算模型是基于Java语言开发的,对于其他计算机程序语言编写的程序不支持,限制了整个分布式计算系统说 明 书CN 103150161 A2/6页5的灵活性和适应性的技术问题,从而提供一种将非MapReduce支持的作业类型封装为MapReduce支持的任务类型的基于MapRe。

14、duce计算模型的任务封装方法及装置。 0008 为解决上述技术问题,本发明采用的技术方案如下: 0009 一种基于MapReduce计算模型的任务封装方法,包括如下步骤: 0010 S1,任务引擎获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序,若是,则执行步骤S2;若否,则执行步骤S4; 0011 S2,使用Java标准打包器将Java编译程序封装成Jar格式文件; 0012 S3,将Jar格式文件的位置信息传递给MapReduce计算模型中运行的壳任务; 0013 S4,判断所述输入程序是否为流作业类型的程序,若是,执行步骤S5;若否,则执行步骤S6;。

15、 0014 S5,将流作业类型的程序作为流作业类型的任务,并将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 0015 S6,将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务。 0016 在所述步骤S1中,判断所述任务是否为MapReduce计算模型支持的Java编译程序,包括如下步骤: 0017 S101,按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试,如果返回正常数据,则确定所述输入程序是MapReduce计算模型支持的Java编译程序;否则,确定所述任务类型不是MapReduce计算模型。

16、支持的Java程序编译文件。 0018 在所述步骤S6中,将所述输入程序封装为流作业类型的任务,包括如下步骤: 0019 S601,将所述输入程序保存到分布式计算系统,并将所述输入程序启动信息传递给所述壳任务,将所述输入程序和启动信息作为流作业类型的任务,所述壳任务调用该流作业类型的任务时,通过调用该流作业类型任务的所述启动信息来执行输入程序。 0020 所述流作业类型,包括Linux环境下的可执行程序。 0021 所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per l脚本程序、计算机程序经编译后输出的可执行文件。 0022 所述流作业类型的任务的启动信息包括所述流作。

17、业类型的任务的调用命令信息。 0023 基于同一发明构思,本发明还提供一种基于MapReduce计算模型的任务 封装装置,包括第一判断模块、打包模块、第一传递模块、第二判断模块、第二传递模块和封装模块; 0024 其中, 0025 所述第一判断模块,用于获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序; 0026 所述打包模块,用于当所述输入程序为MapReduce计算模型支持的Java编译程序时,将所述输入打包为Java作业类型的任务,即使用Java标准打包器将Java编译程序封装成Jar格式文件; 0027 所述第一传递模块,用于将所述Java作业类型的。

18、任务信息传递给MapReduce计算模型中运行的壳任务; 0028 所述第二判断模块,用于判断所述输入程序是否为流作业类型的程序; 说 明 书CN 103150161 A3/6页60029 所述第二传递模块,用于将所述流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 0030 所述封装模块,用于将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型。 0031 所述第一判断模块包括测试子模块; 0032 其中, 0033 所述测试子模块,用于按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试。 0034 所述封装模块,。

19、包括传递子模块; 0035 其中, 0036 所述传递子模块,用于将所述流作业类型的任务保存到分布式计算系统,并将所述流作业类型的任务启动信息传递给所述壳任务。 0037 所述流作业类型,包括Linux环境下的可执行程序。 0038 所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per l脚本程序、计算机程序经编译后输出的可执行文件。 0039 根据权利要求11所述的任务封装装置,其特征在于,所述流作业类型的 任务的启动信息包括所述流作业类型的任务的调用命令信息。 0040 本发明的上述技术方案相比现有技术具有以下优点: 0041 本发明的一种基于MapReduce计算。

20、模型的任务封装方法及装置,首先,判断输入程序是否为MapReduce计算模型支持的Java编译程序或流作业类型的程序,若是,对于Java编译程序,则将输入程序直接打包为Java作业类型的任务,将流作业类型的程序作业流作业类型的任务,由用户程序直接调用;否则将所述输入程序封装为流作业类型的任务,将流作业类型任务启动信息传递给壳任务。本发明将非Java语言编译的程序进行封装,使MapReduce计算模型支持非Java语言编译的程序,满足了用户多种多样的计算需求;本发明支持更多的计算类型,在解决实际问题时,可以更关注在业务逻辑而非对计算任务的底层封装,更快更好地解决实际生产需求。本发明所使用的壳任务。

21、包含有任务的存储地址信息、启动信息和用户程序自定义的业务逻辑信息,能够控制程序的流转,从而满足用户复杂的计算需求。 0042 将流作业类型任务的代码保存在所述分布式计算系统中,并将所述流作业类型的任务的启动信息传递给所述壳任务,由所述壳任务来控制整个程序的流转,这种封装方式,简单易于实现,增加的代码量较少。所述分布式计算系统在调用所述流作业类型的任务时,只需要发出调用命令即可,而不用关心所述流作业类型的任务代码由何种计算机程序语言编写。 附图说明0043 为了使本发明的内容更容易被清楚的理解,下面根据本发明的具体实施例并结合附图,对本发明作进一步详细的说明,其中: 0044 图1为本发明的实施。

22、例一基于MapReduce计算模型的任务封装方法的流程示意图; 说 明 书CN 103150161 A4/6页70045 图2为本发明的实施例二的基于MapReduce计算模型的任务封装装置的 示意图。 具体实施方式0046 实施例一: 0047 参见图1,本发明的实施例一种基于MapReduce计算模型的任务封装方法,包括如下步骤: 0048 S1,任务引擎获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序,若是,则执行步骤S2;若否,则执行步骤S4; 0049 S2,将所述输入程序打包为Java作业类型的任务,即使用Java标准打包器将Java编译程序封装。

23、成Jar格式文件; 0050 S3,将Java作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 0051 S4,判断所述输入程序是否为流作业类型的程序,若是,将流作业类型的程序作为流作业类型的任务,执行步骤S5;若否,则执行步骤S6;所述流作业类型的程序包括Linux环境下的可执行程序;所述Linux环境下的可执行程序包括Linux外壳程序、Python或Per l脚本程序、计算机程序经编译后输出的可执行文件; 0052 S5,将流作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 0053 S6,将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传。

24、递给MapReduce计算模型中运行的壳任务;本步骤中的所述输入程序指除Java以外的计算机语言编写的计算机程序程序,将所述输入程序封装为流作业类型的任务具体指将所述输入程序在Linux操作系统中编译成可执行程序,然后将编译后的可执行程序和该可执行程序的启动信息打包成流作为类型的任务。 0054 在所述步骤S1中,所述MapReduce计算模型支持的Java编译程序,就是Java程序经编译后形成的程序文件,扩展名为.class。 0055 进一步地,在所述步骤S1中,判断所述任务是否为MapReduce计算模型支持的Java编译程序,包括如下步骤: 0056 S101,按照MapReduce计。

25、算模型定义的接口标准,对所述输入程序进行测试,如果返回正常数据,则确定所述输入程序是MapReduce计算模型支持的Java编译程序;否则,确定所述任务类型不是MapReduce计算模型支持的Java程序编译文件。 0057 进一步地,将所述输入程序封装为流作业类型的任务,包括如下步骤: 0058 S601,将所述流作业类型的任务保存到分布式计算系统,并将所述流作业类型的任务的启动信息传递给所述壳任务。 0059 进一步地,在所述步骤S2中,Java作业类型的任务信息包括所述任务的存储地址信息和数据类型信息;所述流作业类型的任务的启动信息包括所述流作业类型的任务的调用命令信息、地址信息和任务中。

26、设定的参数值信息。 0060 任务信息是静态信息,启动信息是动态信息。 0061 例如,有一个任务,它的参数共有4个,分别为A、B、C、D,A为整数类型,B为字符串类型,C为日期类型,D为字符串类型。这种信息为任务信息。 0062 在启动该任务时,A的值为10,B的值为” /root/input0”(B表示该任务执行时的输入数据所在位置),C为当前日期,D的值为”/root/output0”(D表示该任务执行时的说 明 书CN 103150161 A5/6页8输出数据所在位置),这种信息为启动信息。启动信息是每一次配置任务并启动时动态输入的。 0063 在本实施例中,以C+程序作为输入程序进行。

27、任务封装。所述C+程序文件名为helloworld.cpp,保存为文本格式文件。在标准Linux操作系统中,采用gcc编译器对helloworld.cpp文件进行编译,输出可执行文件helloworld.exe。 0064 将所述文件helloworld.exe复制到分布式系统,任务引擎为所述helloworld.exe文件设定用户需要的参数,所述参数为任务信息,所述参数的值为启动信息,分布式文件系统的壳任务在调用helloworld.exe时,所述 helloworld.exe文件和任务信息作为一个任务,所述壳任务在调用该任务时,由任务引擎将启动信息传递给壳任务,上述任务可以在分布式系统中执。

28、行。 0065 本发明将非Java语言编译的程序进行封装,使MapReduce计算模型支持非Java语言编译的程序,满足了用户多种多样的计算需求;本发明支持更多的计算类型,在解决实际问题时,可以更关注在业务逻辑而非对计算任务的底层封装,更快更好地解决实际生产需求。本发明所使用的壳任务包含有任务的存储地址信息、启动信息和用户程序自定义的业务逻辑信息,能够控制程序的流转,从而满足用户复杂的计算需求。 0066 实施例二: 0067 基于同一发明构思,本发明还提供一种基于MapReduce计算模型的任务封装装置,包括第一判断模块、打包模块、第一传递模块、第二判断模块、第二传递模块和封装模块;其中, 。

29、0068 所述第一判断模块,用于获取输入程序,判断所述输入程序是否为MapReduce计算模型支持的Java编译程序; 0069 所述打包模块,用于当所述输入程序就MapReduce计算模型支持的Java编译程序时,将所述输入打包为Java作业类型的任务,即使用Java标准打包器将Java编译程序封装成Jar格式文件; 0070 所述第一传递模块,用于将所述Java作业类型的任务信息传递给MapReduce计算模型中运行的壳任务; 0071 所述第二判断模块用于判断所述输入程序是否为流作业类型的程序; 0072 所述第二传递模块,用于将所述流作业类型的任务信息传递给MapReduce计算模型中。

30、运行的壳任务; 0073 所述封装模块,用于将所述输入程序封装为流作业类型的任务,将流作业类型的任务信息传递给MapReduce计算模型。 0074 所述第一判断模块还包括测试子模块;其中, 0075 所述测试子模块,用于按照MapReduce计算模型定义的接口标准,对所述输入程序进行测试。 0076 所述封装模块,包括传递子模块;其中, 0077 所述传递子模块,用于将所述流作业类型的任务保存到分布式计算系统,并将所述流作业类型的任务启动信息传递给所述壳任务。 0078 所述流作业类型,包括Linux环境下的可执行程序。 0079 所述Linux环境下的可执行程序包括Linux外壳程序、Py。

31、thon或Perl脚本程序、说 明 书CN 103150161 A6/6页9计算机程序经编译后输出的可执行文件。 0080 所述流作业类型的任务的启动信息包括所述流作业类型的任务的调用命令信息。 0081 本发明的基于MapReduce计算模型的任务封装装置,本发明将非Java语言编译的程序进行封装,使MapReduce计算模型支持非Java语言编译的程序,满足了用户多种多样的计算需求;本发明支持更多的计算类型,在解决实际问题时,可以更关注在业务逻辑而非对计算任务的底层封装,更快更好地解决实际生产需求。本发明所使用的壳任务包含有任务的存储地址信息、启动信息和用户程序自定义的业务逻辑信息,能够控制程序的流转,从而满足用户复杂的计算需求。 0082 显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引伸出的显而易见的变化或变动仍处于本发明创造的保护范围之中。 说 明 书CN 103150161 A1/2页10图1说 明 书 附 图CN 103150161 A10。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1