一种运行MapReduce作业的方法、装置及系统与流程

文档序号:15588028发布日期:2018-10-02 18:37阅读:131来源:国知局
本发明涉及运行mapreduce作业技术,具体涉及一种运行mapreduce作业的方法、装置及系统。
背景技术
::目前,随着互联网以及移动互联网技术的发展,企业开始部署大数据平台。hadoop体系的mapreduce作业很好得解决了大数据分析与处理问题。这里,hadoop是一个由apache基金会所开发的分布式系统基础架构,用户可以在不了解分布式底层细节的情况下,开发分布式程序。但传统的分布式关系型数据库只提供结构化查询语言(sql,structuredquerylanguage)来开发作业,然而编程人员更倾向于使用mapreduce这种方式来进行作业开发。目前,现有技术中通常通过:将常用的mapreduce函数与数据库中sql的对应关系固定下来,作为模板来匹配用户的mapreduce作业中的函数。但是采用这种方式存在以下问题:1)只能匹配少量且固定的mapreduce函数;2)只能形成单条简单的sql而非sql序列;3)不支持多mapreduce任务的作业。技术实现要素:为解决现有存在的技术问题,本发明实施例期望提供一种运行mapreduce作业的方法、装置及系统,能够运行自定义的mapreduce函数。本发明实施例的技术方案是这样实现的:根据本发明实施例的一方面,提供一种运行mapreduce作业的方法,所述方法包括:创建一个以上通用型的mapreduce作业描述文件,并对所述mapreduce作业描述文件进行解析,生成相应的mapreduce对象;根据所述mapreduce对象中指定的mapreduce数据,生成相应的结构化查询语言sql序列;其中,所述sql序列中包括至少一个mapreduce任务;根据有向无环图dag将所述sql序列进行发送。上述方案中,所述对所述mapreduce作业描述文件进行解析,并生成相应的mapreduce对象,包括:根据解析后的所述mapreduce作业描述文件,生成与所述mapreduce作业描述文件对应的input对象、output对象、mapper对象、reducer对象、task对象和run对象;其中,所述input对象、所述output对象、所述mapper对象、所述reducer对象和所述task对象均为一个以上。上述方案中,所述根据所述mapreduce对象中指定的mapreduce数据,生成相应的sql序列,包括:根据所述input对象中指定的任务输入源数据,生成第一sql序列;根据所述mapper对象中指定的映射函数,对所述任务输入源数据进行映射运算,并生成第二sql序列;根据所述reducer对象中指定的化简函数,对所述任务输入源数据进行化简运算,并生成第三sql序列;根据所述task对象中指定的子对象,确定与所述任务输入源数据对应的映射键值和化简键值,并生成第四sql序列;根据所述output对象中指定的任务输出数据,生成第五sql序列;其中,所述第一sql序列、所述第二sql序列和所述第三sql序列作为所述task对象中所述子对象的输入。上述方案中,所述根据dag将所述sql序列进行发送,包括:根据所述run对象中指定的作业调度次序,生成各任务的dag;根据所述dag将所述第五sql序列进行发送。根据本发明实施例的另一方面,提供一种运行mapreduce作业的方法,所述方法包括:接收根据mapreduce对象中指定的mapreduce数据生成的sql序列,并对所述sql序列进行解析,生成任务计划;向各数据节点分发所述任务计划,并对所述任务计划进行执行操作。上述方案中,在所述对所述任务计划进行执行操作之后,所述方法还包括:返回所述任务计划的执行结果。根据本发明实施例的再一方面,提供一种运行mapreduce的客户端服务器,所述客户端服务器包括:数据解析模块、序列生成模块和任务调度模块;其中,所述数据解析模块,用于创建一个以上通用型的mapreduce作业描述文件,并对所述mapreduce作业描述文件进行解析,生成相应的mapreduce对象;所述序列生成模块,用于根据所述数据解析模块生成的所述mapreduce对象中指定的mapreduce数据,生成相应的sql序列;其中,所述sql序列中包括至少一个mapreduce任务;所述任务调度模块,用于根据dag将所述序列生成模块生成的所述sql序列进行发送。上述方案中,所述数据解析模块,具体用于根据解析后的所述mapreduce作业描述文件,生成与所述mapreduce作业描述文件对应的input对象、output对象、mapper对象、reducer对象、task对象和run对象;其中,所述input对象、所述output对象、所述mapper对象、所述reducer对象和所述task对象均为一个以上。上述方案中,所述序列生成模块,具体用于根据所述数据解析模块解析的所述input对象中指定的任务输入源数据,生成第一sql序列;根据所述数据解析模块解析的所述mapper对象中指定的映射函数,对所述任务输入源数据进行映射运算,并生成第二sql序列;根据所述数据解析模块解析的所述reducer对象中指定的化简函数,对所述任务输入源数据进行化简运算,并生成第三sql序列;根据所述数据解析模块解析的所述task对象中指定的子对象,确定与所述任务输入源数据对应的映射键值和化简键值,并生成第四sql序列;根据所述数据解析模块解析的所述output对象中指定的任务输出数据,生成第五sql序列;其中,所述第一sql序列、所述第二sql序列和所述第三sql序列作为所述task对象中所述子对象的输入。上述方案中,所述任务调度模块,具体用于根据所述数据解析模块解析的所述run对象中指定的作业调度次序,生成各任务的dag;根据所述dag将所述序列生成模块生成的所述第五sql序列进行发送。根据本发明实施例的再一方面,提供一种运行mapreduce作业的数据库服务器,所述数据库服务器包括:主控节点和数据节点;其中,所述主控节点,用于接收根据mapreduce对象中指定的mapreduce数据生成的sql序列,并对所述sql序列进行解析,生成任务计划;并向所述数据节点分发所述任务计划;所述数据节点,用于对所述主控节点发送的所述任务计划进行执行操作,并返回所述任务计划的执行结果。上述方案中,所述主控节点包括:序列解析模块和任务分发模块;其中,所述序列解析模块,用于接收sql序列,并对所述sql序列进行解析,生成任务计划;所述任务分发模块,用于向所述数据节点分发所述序列解析模块生成的所述任务计划。上述方案中,所述数据节点包括:任务执行模块,用于对所述主控节点发送的所述任务计划进行执行操作,并返回所述任务计划的执行结果。上述方案中,所述数据节点包括一个以上。根据本发明实施例的再一方面,提供一种运行mapreduce作业的系统,所述系统包括:客户端服务器和数据库服务器,其中,所述客户端服务器,用于创建一个以上通用型的mapreduce作业描述文件,并对所述mapreduce作业描述文件进行解析,生成相应的mapreduce对象;根据所述mapreduce对象中指定的mapreduce数据,生成相应的sql序列;其中,所述sql序列中包括至少一个mapreduce任务;并根据dag将所述sql序列向所述数据库服务器发送;所述数据库服务器,用于接收所述客户端服务器发送的所述sql序列,并对所述sql序列进行解析,生成任务计划;分发并执行所述任务计划。上述方案中,所述客户端为上述所述的客户端;所述服务器为上述所述的服务器。本发明实施例提供的一种运行mapreduce作业的方法、装置及系统,通过创建一个以上通用型的mapreduce作业描述文件,并对所述mapreduce作业描述文件进行解析,生成相应的mapreduce对象;根据所述mapreduce对象中指定的mapreduce数据,生成相应的sql序列;其中,所述sql序列中包括至少一个mapreduce任务;根据有向无环图(dag,directedacyclinegraph)对所述sql序列进行发送。如此,能够执行自定义的mapreduce函数,不局限于内置的映射关系。由于分布式关系型数据库服务器端支持自定义函数创建,并在执行计划自定义函数节点上能执行相应的自定义函数,从而使得本方案的技术通用性更强。另外,支持多mapreduce任务作业,使得更加符合现有的mapreduce作业的编写方式。附图说明图1为本发明实施例一种运行mapreduce作业的方法实现流程图;图2为本发明实施例中mapreduce作业描述文件的结构组成示意图;图3为本发明实施例中dag示意图;图4为本发明实施例的另一种运行mapreduce作业的方法实现流程图;图5为本发明实施例中一种运行mapreduce的客户端服务器的结构示意图;图6为本发明实施例中运行mapreduce作业的数据库服务器的结构示意图;图7为本发明实施例中运行mapreduce作业的系统的结构示意图;具体实施方式下面结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。图1为本发明实施例一种运行mapreduce作业的方法实现流程图;如图1所示,该方法包括:步骤101,创建一个以上通用型的mapreduce作业描述文件,并对所述mapreduce作业描述文件进行解析,生成相应的mapreduce对象;这里,所述方法主要运行在客户端服务器。具体地,mapreduce是一个计算框架,在运行所述mapreduce的计算任务时,其任务过程被分为两个阶段:map阶段和reduce阶段,且每个阶段都是用键值对(key/value)作为输入(input)和输出(output)。而这两个阶段的函数:map函数和reduce函数均是在客端端服务器定义好的。当所述客户端服务器要运行一个mapreduce计算任务时候,需要先创建一个以上通用型的mapreduce作业描述文件要,然对所述的mapreduce作业描述文件进行解析,生成相应的mapreduce对象;这里,具体的mapreduce对象如图2所示。图2为本发明实施例中mapreduce作业描述文件的结构组成示意图;如图2所示,所述mapreduce作业描述文件中包括input对象、output对象、mapper对象、reducer对象、task对象和run对象;其中,所述input对象、所述output对象、所述mapper对象、所述reducer对象和所述task对象均为一个以上;并且每一个对象中的对象属性信息均可以由客户端进行编辑。步骤102,根据所述mapreduce对象中指定的mapreduce数据,生成相应的sql序列;其中,所述sql序列中包括至少一个mapreduce任务;这里,所述mapreduce数据具体是指所述mapreduce对象中具体的对象属性信息。如图2所示,所述input对象中指定的对象属性信息为:name(名字):input(输入)、table(表):table_input、colums(列):line(具体的列数),则客户端服务器根据所述input对象中指定的任务输入源数据,生成第一sql序列。具体input对象的示例如表1所示,其中表1右边框中为input对象中的任务输入源数据,表1左边框中为根据任务输入源数据生成的第一sql序列。如图2所示,所述mapper对象中指定的对象属性信息为:name:mapper、function:mapper.py、args:line、returns:key,value;则客户端服务器根据所述mapper对象中指定的映射函数,对所述任务输入源数据进行映射运算,并生成第二sql序列;具体地,在map阶段,map任务读取一个输入(key1,value1)对,由定义的map函数对其处理,产生一个中间(key2,value2)结果集,并保存在本地。在本发明实施例中,mapper对象的示例如表2所示,其中表2右边框中为mapper对象中的对象属性信息,表2左边框中为根据所述对象属性信息对所述任务输入源数据进行映射运算,生成的第二sql序列。如图2所示,所述reducer对象中指定的对象属性信息为:name:reducer、function:reducer.py、returns:value,则客户端服务器根据所述reducer对象中指定的化简函数,对所述任务输入源数据进行化简运算,并生成第三sql序列;具体地,在reduce阶段,reduce任务从所有执行map任务的节点,读取中间关键字key2和相关的一个value2集,由定义的reduce函数对其进行处理,并得到计算结果。mapreduce系统即可以根据输入数据的大小以及作业的配置等信息,自动将该作业初始化为多个相同的map任务和reduce任务、分别读取不同的输入数据块并调用map函数和reduce函数进行处理。在本发明实施例中,reducer对象的示例如表3所示,其中表3右边框中为reducer对象中的对象属性信息,表3左边框中为根据所述对象属性信息对所述任务输入源数据进行化简运算,生成的第三sql序列。如图2所示,所述task对象中指定的对象属性信息为:name:task、input:input、output:output、mapper:mapper、ruducer:reducer,由于在所述mapreduce作业描述文件中,所述input对象、所述output对象、所述mapper对象、所述reducer对象和所述task对象可以有多个,所以在所述task对象中的每一个小写对象都是指的具体对象,例如input1、input2。然后客户端服务器根据所述task对象中指定的子对象,确定与所述任务输入源数据对应的映射键值和化简键值,并生成第四sql序列;具体task对象的示例如表4所示,其中表4右边框中为task对象中的对象属性信息,由所述第一sql序列、所述第二sql序列和所述第三sql序列作为其子对象的输入;表4左边框中为根据所述对象属性信息确定与所述任务输入源数据对应的映射键值和化简键值,并生成的第四sql序列。如图2所示,所述output对象中指定的对象属性信息为:name:output、table:table_output,客户端服务器根据所述output对象中指定的任务输出数据,生成第五sql序列;具体output对象的示例如表5所示,其中表5右边框中为output对象中的对象属性信息;表5左边框中为根据所述对象属性信息将任务输出数据生成的第五sql序列。在同一个mapreduce并行处理作业中,所有自动生成的map任务和reduce任务都是相同的,只是其处理的输入数据不同。步骤103,根据有向无环图(dag,directedacyclicgraph)将所述sql序列进行发送。这里,具体是根据mapreduce作业描述文件中run对象中指定的作业调度次序,生成各任务的dag;客户端服务器再将生成的所述第五sql序列按照所述dag进行发送。这里,dag是一个有向图,无定向的周期,即是由集合的顶点和有向边构成,每条边连接一个顶点到另一个,这样,在一些顶点v开始,沿着有序的边,最终循环回再次到v是不可能的。具体run的示意图如图3所示。图3为本发明实施例中dag示意图;如图3所示,所述dag包括task-a、task-b、task-c和task-d,由于task-a、task-b、task-c和task-d之间的相互依赖的关系,所以当客户端服务器要发送task-c时,必须发送了task-a、task-b之后,才能发送task-c。图4为本发明实施例的另一种运行mapreduce作业的方法,所述方法包括:步骤401,接收根据mapreduce对象中指定的mapreduce数据生成的sql序列,并对所述sql序列进行解析,生成任务计划;这里,所述方法主要运行于数据库服务器。具体地,由客户端服务器根据mapreduce对象中指定的mapreduce数据生成sql序列,并发送给所述数据库服务器,当所述数据库服务器接收到所述sql序列后,先对所述sql序列进行解析,生成相应的任务计划。具体地,是将所述mapreduce作业放入一个内部的队列,这里可以是所述数据库服务器中的数据节点。步骤402,向各数据节点分发所述任务计划,并对所述任务计划进行执行操作。这里,配置好的各数据节点根据所述任务计划,调度所述mapreduce作业,并对所述执行所述任务。具体地,各数据节点会初始化所述mapreduce作业,这里所述初始化就是创建一个正在运行的所述mapreduce对象(封装任务和记录信息),以便跟踪所述mapreduce作业的状态和进程。初始化完毕后,数据节点会根据任务计划定期发送心跳给所述数据库服务器中的主控节点,通过心跳,所述主控节点可以监控所述mapreduce作业是否存活,也可以获取各数据节点的处理状态和问题。当所述主控节点获得了最后一个完成指定任务的操作成功的通知时候,会把mapreduce作业的状态置为成功,然后向客户端服务器返回执行结果。当客户端服务器查询所述mapreduce作业运行状态时候,客户端服器会查到所述mapreduce作业己完成的通知。图5为本发明实施例中一种运行mapreduce的客户端服务器,所述客户端服务器包括:数据解析模块501、序列生成模块502和任务调度模块503;其中,所述数据解析模块501,用于创建一个以上通用型的mapreduce作业描述文件,并对所述mapreduce作业描述文件进行解析,生成相应的mapreduce对象;所述序列生成模块502,用于根据所述数据解析模块501生成的所述mapreduce对象中指定的mapreduce数据,生成相应的sql序列;其中,所述sql序列中包括至少一个mapreduce任务;所述任务调度模块503,用于根据dag将所述序列生成模块502生成的所述sql序列进行发送。具体地,所述数据解析模块501用于根据解析后的所述mapreduce作业描述文件,生成与所述mapreduce作业描述文件对应的input对象、output对象、mapper对象、reducer对象、task对象和run对象;其中,所述input对象、所述output对象、所述mapper对象、所述reducer对象和所述task对象均为一个以上。具体地,所述序列生成模块502具体用于根据所述数据解析模块501解析的所述input对象中指定的任务输入源数据,生成第一sql序列;根据所述数据解析模块解析的所述mapper对象中指定的映射函数,对所述任务输入源数据进行映射运算,并生成第二sql序列;根据所述数据解析模块解析的所述reducer对象中指定的化简函数,对所述任务输入源数据进行化简运算,并生成第三sql序列;根据所述数据解析模块解析的所述task对象中指定的子对象,确定与所述任务输入源数据对应的映射键值和化简键值,并生成第四sql序列;根据所述数据解析模块解析的所述output对象中指定的任务输出数据,生成第五sql序列;其中,所述第一sql序列、所述第二sql序列和所述第三sql序列作为所述task对象中所述子对象的输入。具体地sql序列表参照方法实施例中的表1至表5。具体地,所述任务调度模块503,具体用于根据所述数据解析模块501解析的所述run对象中指定的作业调度次序,生成各任务的dag;根据所述dag将所述序列生成模块502生成的所述第五sql序列进行发送。图6为本发明实施例中运行mapreduce作业的数据库服务器,所述数据库服务器包括:主控节点601和数据节点602,其中,所述数据节点602为一个以上。具体地,所述主控节点601包括:序列解析模块6011和任务分发模块6012;其中,所述序列解析模块6011,用于接收根据mapreduce对象中指定的mapreduce数据生成的sql序列,并对所述sql序列进行解析,生成任务计划;所述任务分发模块6012,用于向所述数据节点602分发所述序列解析模块6011生成的所述任务计划。所述数据节点602包括:任务执行模块6021,用于对所述主控节点601发送的所述任务计划进行执行操作,并返回所述任务计划的执行结果。图7为本发明实施例中运行mapreduce作业的系统,所述系统包括:客户端服务器701和数据库服务器702;其中,所述客户端服务器701,用于创建一个以上通用型的mapreduce作业描述文件,并对所述mapreduce作业描述文件进行解析,生成相应的mapreduce对象;根据所述mapreduce对象中指定的mapreduce数据,生成相应的sql序列;其中,所述sql序列中包括至少一个mapreduce任务;并根据dag将所述sql序列向所述数据库服务器702发送;所述数据库服务器702,用于接收所述客户端服务器701发送的所述sql序列,并对所述sql序列进行解析,生成任务计划;分发并执行所述任务计划。具体地,所述客户端服务器701通过外部网络将用户撰写的并行处理作业提交至所述数据库服务器702中的主控节点(master),并通过所述主控节点监控mapreduce作业状态和执行结果。所述数据库服务器702中的所述主控节点用于管理所述数据库服务器702中所有的数据节点(worker),并自动将用户的mapreduce作业分解为map任务和reduce任务,通过内部网络将所述mapreduce作业的任务计划分发到各数据节点。各数据节点用于向主控节点请求执行任务,同时多个数据节点组成的分布式数据库系统用于存储mapreduce作业的输入/输出数据,并在所述任务执行结束时,向所述客户端服务器701返回执行结果。这里,所述客户端服务器701可以为如图5所描述的客户端服务器;所述数据库服务器702可以为如图6描述的数据库服务器。本发明实施例与现有技术相比,支持自定义的mapreduce函数,不局限于内置的映射关系。另外,由于分布式关系型的所述数据库服务器支持自定义函数创建,所以在执行自定义函数节点上能执行相应的自定义函数,从而使得本发明实施例提供的技术方案的通用性更强。再者,本发明实施例中还支持多mapreduce任务,更加符合现有的mapreduce作业的编写方式。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、系统的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1