一种分布式计算方法及系统的制作方法

文档序号:6429922阅读:174来源:国知局
专利名称:一种分布式计算方法及系统的制作方法
一种分布式计算方法及系统
技术领域
本发明涉及分布式计算,尤其涉及一种分布式计算方法及系统。
背景技术
分布式计算平台是一种支持应用程序在其上分布式执行的底层服务平台。目前,各个分布式计算平台都各自有一套编程接口和提交运行方式。为某一个分布式计算平台所编写的应用程序,如果不经过大幅改动,是不能运行于其他平台的,而且有些情况甚至是不可能移植的。对于不同的分布式计算平台,开发人员必须学习不同的应用程序开发方法与提交运行的步骤,因此在不同的分布式计算平台之间进行迁移是十分困难的。总之,在传统·的分布式计算方法中,不同的分布式计算平台之间的可移植性较差。

发明内容基于此,有必要提供一种分布式计算方法,能够提高不同的分布式计算平台之间的可移植性。一种分布式计算方法,包括以下步骤基于不同分布式计算平台的通用功能,构建多个分布式计算平台间的统一编程接Π ;根据用户的应用需求,通过所述统一编程接口进行编程,构建分布式应用程序;调用分发脚本将所述分布式应用程序提交到分布式计算平台,启动待执行的任务,在所述分布式计算平台下执行所述分布式应用程序。在优选的实施例中,所述统一编程接口包括上下文接口、用于解析输入数据并生成输出数据的接口、文件访问接口和输入输出字节流接口。在优选的实施例中,所述调用分发脚本将所述分布式应用程序提交到分布式计算平台的步骤包括获取输入文件列表,生成待处理文件列表;根据分布式计算平台中的mapper数目切分所述待处理文件列表;将所述切分后的待处理文件列表提交给所述分布式计算平台。在优选的实施例中,所述调用分发脚本将所述分布式应用程序提交到分布式计算平台的步骤还包括通过命令行参数收集输入的配置信息;根据所述配置信息,对所述分布式计算平台中的mapper和reducer分别生成封装脚本;将所述封装脚本提交给所述分布式计算平台。在优选的实施例中,所述切分后的待处理文件列表中记录了待处理文件的文件路径;所述在分布式计算平台下执行所述分布式应用程序的步骤还包括
通过所述分布式计算平台获取切分后的待处理文件列表,根据所述待处理文件的文件路径对所述待处理文件进行处理,输出处理結果。此外,还有必要提供ー种分布式计算系统,能够提高不同的分布式计算平台之间的可移植性。ー种分布式计算系统,包括平台封装模块,用于基于不同分布式计算平台的通用功能,构建多个分布式计算平台间的统一编程接ロ;应用封装模块,用于根据用户具体的应用需求,通过所述统ー编程接ロ进行编程,构建分布式应用程序;执行模块,用于调用分发脚本将所述分布式应用程序提交到分布式计算平台,启动待执行的任务,在所述分布式计算平台上执行所述分布式应用程序。在优选的实施例中,所述统ー编程接ロ包括上下文接ロ、用于解析输入数据并生成输出数据的接ロ、文件访问接ロ和输入输出字节流接ロ。在优选的实施例中,所述执行封装模块包括文件列表生成模块,用于获取输入文件列表,生成待处理文件列表;切分模块,用于根据分布式计算平台中的mapper数目切分所述待处理文件列表,并将所述切分后的待处理文件列表提交给所述分布式计算平台。在优选的实施例中,所述执行封装模块还包括配置信息收集模块,用于通过命令行參数收集输入的配置信息;封装脚本生成模块,用于根据所述配置信息,对所述分布式计算平台中的mapper和reducer分别生成封装脚本,并将所述封装脚本提交给所述分布式计算平台。在优选的实施例中,所述切分后的待处理文件列表中记录了待处理文件的文件路径;所述执行封装模块还包括处理模块,用于通过所述分布式计算平台获取切分后的待处理文件列表,根据所述待处理文件的文件路径对所述待处理文件进行处理,输出处理結果。上述分布式计算方法及系统,通过构建各分布式计算平台的统ー编程接ロ,可将各个分布式计算平台通用的基本功能(通常也是最常用最重要的功能)加入到统ー编程接ロ中,并根据不同的分布式计算平台封装统ー编程接ロ的具体实现,使得构建的统ー编程接ロ隔离了不同的分布式计算平台的具体实现;利用统ー的接ロ来进行编程,开发人员无需关心分布式计算平台的很多具体细节与方言;在执行所生成的分布式应用程序时,分发脚本隔离了不同的分布式计算平台提交任务时的差异性,使得所生成的分布式应用程序在不改动或极少改动的情况下可以在不同的分布式计算平台上执行,因此提高了不同的分布式计算平台之间的可移植性。

图I为ー个实施例中分布式计算方法的流程示意图;图2为图I中通过统ー编程接ロ实现平台相关的功能的框架图;图3为ー个实施例中ISolver接ロ实现其功能的流程示意图4为一个实施例中调用分发脚本将分布式应用程序提交到分布式计算平台的流程示意图;图5为另一个实施例中调用分发脚本将分布式应用程序提交到分布式计算平台的流程示意图;图6为一个实施例中分布式计算系统的结构示意图;图7为一个实施例中执行封装模块的结构示意图。
具体实施方式在一个实施例中,如图I所示,一种分布式计算方法,包括以下步骤步骤S102,基于不同分布式计算平台的通用功能,构建多个分布式计算平台间的
统一编程接口。步骤S104,根据用户的应用需求,通过所述统一编程接口进行编程,构建分布式应用程序。步骤S106,调用分发脚本将分布式应用程序提交到分布式计算平台,启动待执行的任务,在分布式计算平台下执行分布式应用程序。不同的分布式计算平台是具有一定的共性的,即不同的分布式计算平台可以实现一些通用功能,这些通用功能也是最常用最重要的基本功能。例如,支持MapReduce ( 一种计算模型,用于大规模数据处理)的分布式计算平台大多有以下共性具有分布式文件系统,每个文件系统都有对应的访问接口 ;MapReduCe程序处理输入数据并输出键值对(Key-value pair)或将结果直接输出到分布式文件系统中;具有从外界传入任务的配置参数的功能;具有任务的相关的统计信息与状态信息;提交任务时要提供mapper (MapReduce中用于实现Map步骤的用户应用程序)、reducer (MapReduce中用于实现Reduce步骤的用户应用程序,并可指定由多少个mapper、reducer并行执行等。基于分布式计算平台的这些共性,构建多个分布式计算平台间的统一编程接口,使得这些编程接口具有各个分布式计算平台的通用的基本功能(通常也是最常用最重要的功能)。如图2所示,左侧表示的是底层的分布式计算平台和分布式文件系统。对于一些分布式计算平台,其分布式文件系统是包含在平台之中的,图2中只是功能模块的划分,并非具体的系统结构,下文不再赘述。如图2所示,右侧部分展示了框架的统一编程接口,包括IContext接口、ISolver接口、I/O Stream 接口和 IFile 接口。其中IContext 接口为上下文接口,图 2 中的 HadoopContext 类与 NativeContext 类都是这个接口的具体实现。IContext接口所定义的功能包括初始化/反初始化功能,用于初始化、析构自己的数据结构;更新任务状态功能,用于向分布式文件系统反馈当前任务的执行状态;更新计数器功能,用于统计一些任务信息,例如处理了多少记录等;输出收集功能,用于收集输出的键值对;读取配置信息功能,用于读取执行期的配置信息;输入全局配置信息功能,用于获得有关任务的整体配置信息,例如登录的机器,用户名、密码等;读取和设定当前文件路径的功能,用于指定当前正在处理的输入文件的全路径名;打开其他输入输出流的功能,用于打开用户指定路径的输入输出流。ISolver接口为用于解析输入数据并生成输出数据的接口,其实现的功能包括A.解析输入字节流的功能;B.强制解析剩余字节流的功能;C.生成输出的功能。例如,LineSolver接ロ是ISolver接ロ的ー个具体实现,用于将输入的字节流转化为一行一行的字符串(即一行一行的文本)。每ー行文本即为从字节流解析出的具有业务含义的对象,保存于ISolver接ロ的具体实例中。输入的字节流传递给ISolver接ロ,ISolver接ロ通 过功能A进行解析,切分文本行。当没有更多输入数据从文件读出吋,则触发ISolver接ロ的功能B,用于将剩余的字节流生成一行文本。每生成一行文本则触发ISolver接ロ的功能C,根据当前的这一行文本生成输出,这个输出可以通过IContext接ロ的输出收集功能和打开其他输入输出流功能来完成。需要指出的是,ISolver接ロ可以根据业务需要,处理任意格式的数据,并不限制于文本行。如图3所示,ISolver接ロ实现其功能的流程具体如下步骤S302,读取指定输入文件。步骤S304,判断是否到达文件尾,若是,则进入步骤S306,否则进入步骤S312。步骤S306,调用ISolver接ロ的功能B。步骤S308,判断是否生成新的业务对象,若是,则进入步骤S310,否则结束。业务对象是与具体业务相关的待处理对象,例如是一行文本。步骤S310,调用ISolver接ロ的功能C。步骤S312,调用ISolver接ロ的功能A。步骤S314,判断是否生成新的业务对象,若是,则进入步骤S316,否则进入步骤S318。步骤S316,调用ISolver接ロ的功能C,返回步骤S302。步骤S318,缓冲区满,进行报错。IFile接ロ为文件访问接ロ;I/O Stream接ロ为输入输出字节流接ロ,包括IInputSteam接ロ(输入字节流接ロ )和IOutputStream接ロ(输出字节流接ロ)。如图2所示,由于统ー编程接ロ隔离了具体的分布式计算平台的具体实现,用户只需要与这些编程接ロ交互即可,无需关心底层的分布式计算平台的细节,当需要将分布式应用从ー个平台移植到另ー个平台时,只需要选用与执行分布式应用程序的分布式计算平台对应的实现模块即可。因此,上述构建的统ー编程接ロ很好的隔离了不同分布式计算平台的差异性,通过使用这些编程接ロ开发的分布式应用程序能够在不改动或极少改动的情况下在不同的分布式计算平台上执行,因此提高了不同分布式计算平台之间的可移植性。如图2所示,中间部分展示了根据分布式计算平台的特定类型而编写的编程接ロ的具体实现。不同的分布式计算平台对文件的操作以及执行期的上下文信息都不同,图2的中间部分即为对文件操作以及程序执行期的上下文信息进行的具体实现。例如,HadoopFile类封装了对HDFS (Hadoop平台的分布式文件系统)文件的操作,XFSFile类封装了对XFS (TBorg平台的分布式文件系统)文件的操作,NativeFile类封装了对本地文件的操作,HadoopContext类封装了 Hadoop程序执行期的上下文信息,NativeContext类封装了本地虚拟分布式环境的执行期的上下文信息。应当说明的是,图2的中间部分仅仅展示了一个实施例中针对Hadoop分布式计算平台的封装,针对其他不同的分布式计算平台会有不同的封装,其方法原理相同,在此则不再赘述。当用户要对某个指定的具体分布式计算平台上,利用本实施例的框架开发平台无关的应用时,就需要使用对应的文件操作与执行期上下文的具体实现模块(如HadoopFile, HadoopContext)。这些实现模块可以由本实施例的框架来提供,如果框架没有提供,则需要用户通过IFile和IContext等接口来实现。在一个实施例中,所生成的分布式应用程序,需要依靠分发脚本来提交到分布式计算平台。分发脚本是由本实施例方案提供的,用于向用户提供统一的平台无关的提交任务方式,将分布式应用程序和数据提交到具体的分布式计算平台。不同的分布式计算平台的提交指令差异很大,分发脚本通过接受一组统一格式的功能选项,并将其翻译成具体的分布式计算平台对应的指令去执行,从而隔离了不同分布式计算平台在提交任务时的差异性。分发脚本所定义的提交任务方式都非常基本、常用、重要,相当于取了各个分布式计算平台的任务提交功能的交集。当分布式计算平台支持MapReduce范式时,调用分发脚本支持的主要选项包括用户输入的文件列表、输出目录、mapper的可执行程序及选项、reducer的可执行程序及选项等,这些选项在各种MapReduce分布式计算平台上都是普遍适用的。例如,调用的分发脚本 的语法(此处仅为示例,分发脚本并不限于下述形式,只要具有相同的功能即可)为homework, py[OPTION]INPUTFILES. · · OUTPUT_DIR其中,homework, py为分发脚本的名称;INPUTFILES表示输入文件的路径,可以写多组,以空格分割,可以用通配符;OUTPUT_DIR表示输出存放的路径;[OPTION]可包括以下的选项_m〈mapper>,<num_of_key_fields>,〈number of mappers>其中,〈mapper〉指定mapper 的程序路径;〈num_of_key_f ields> 为 mapper 输出的键值对中key part所占的字段数目;〈number of mappers〉表示执行任务的mapper的数目。_m参数必须填写。_r〈reducer>,〈number of reducers)其中,〈reducer〉指定reducer的程序路径;〈number of reducers〉表不执行任务的reducer的数目。_r参数是可选的。-n〈job_name>其中,<job-name>表示任务的标识名,用户可以任意选取。-o<gz I bz2>其中,<gz|bz2>表示输出数据的默认压缩格式,若不填写则表示不压缩。-a<... >表示其他参数,用于在必要时,可由用户手动传入一些与分布式计算平台相关的设置信息。例如,调用的分发脚本为homework.py-m wc_map, 1,10_r wc_reduce, 3\-obz2_nword_count inputl/a*input2/b*output_dir,表示调用该分发脚本启动的待执行任务的名称为word_count,提交可执行程序wc_map, wc_reduce到集群,用于处理inputl目录下以a开头的文件和input2目录下以b开头的文件,将结果存放到output_dir中,并以bz2压缩。分布式计算时采用10个mapper和3个reducer。如图4所示,在一个实施例中,调用分发脚本将分布式应用程序提交到分布式计算平台的步骤包括以下过程
步骤S402,获取输入文件列表,生成待处理文件列表。对于不同的分布式计算平台,需要采用不同的命令来获取待处理的文件列表。待处理文件列表中记录了每一个待处理文件的全路径,并以文本文件的形式保存在一个本地临时文件中。
步骤S404,根据分布式计算平台中的mapper数目切分待处理文件列表。mapper数目可由用户指定,步骤S402中所生成的待处理文件列表中的每个文件都要作为输入送至mapper,由于用户可以指定多个mapper并行处理,因此需要对待处理文件列表进行切分,以便让每个mapper的工作量尽量平均。在本实施例中,按文件个数进行切分,例如,待处理文件列表中有10个待处理文件,用户指定了 3个mapper,则可分为(3, 3,4),即有两个mapper分别处理3个待处理文件,有一个mapper处理4个待处理文件。切分后的待处理文件列表与每个mapper相对应,切分后的待处理文件列表的个数与mapper的数目一致,每个切分后的待处理文件列表作为一个临时文件,其中记录了每个mapper待处理的文件的路径。步骤S406,将切分后的待处理文件列表提交给分布式计算平台。切分后的待处理文件列表上传到分布式计算平台的一个临时路径中,以便mapper读取到。如图5所示,在一个实施例中,调用分发脚本将所述分布式应用程序提交到分布式计算平台的步骤还包括以下过程步骤S502,通过命令行参数收集输入的配置信息。调用分发脚本,通过命令行参数来收集用户输入的配置信息,这些配置信息包括上述用户指定的mapper的数目,输入文件列表的目录、输出目录,以及一些与分布式计算平台的设置和用户自定义设置等。步骤S504,根据配置信息,对分布式计算平台中的mapper和reducer分别生成封装脚本。根据收集到的配置信息,对mapper和reducer分别生成一个封装脚本,保存在本地临时文件中,用于将用户输入的配置信息以环境变量的形式传递给mapper和reducer。例如,在Linux操作系统下,生成的封装脚本将配置信息插入到mapper和reducer的环境变量列表中。由于主流操作系统(例如Windows、Linux、Mac操作系统等)上的应用程序都支持环境变量,采用环境变量来传递用户输入的配置信息,更具有通用性。步骤S506,将封装脚本提交给分布式计算平台。步骤S504中生成的封装脚本,连同其他运行待执行的任务所必需的文件,一起提交到分布式计算平台的临时路径中。其他运行待执行的任务所必需的文件包括用户指定要上传的本地文件(可通过分发脚本中的参数指定)和与分布式计算平台相关的底层文件。应当说明的是,图4中的流程与图5中的流程可同时执行,也可以在执行完任何其中一个流程后执行另外一个流程。在一个实施例中,切分后的待处理文件列表中记录了待处理文件的文件路径。该实施例中,在分布式计算平台下执行分布式应用程序的步骤具体为通过分布式计算平台获取切分后的待处理文件列表,根据待处理文件的文件路径对待处理文件进行处理,输出
处理结果。
具体的,切分后的待处理文件列表和上述生成的封装脚本提交到分布式计算平台后,则通知分布式计算平台启动待执行的任务。由于切分后的待处理文件列表为多个文本文件,其中每行记录了一个mapper需要处理的文件路径,分布式计算平台中的mapper所得到输入则是每行的文本,每一行分配给mapper要处理的文件路径,而reducer则接收mapper的输出数据。这样,限制了 mapper的输入总是一行行的文件路径,mapper获取到文件路径后则去读取文件路径对应的文件内容。由于不同的分布式计算平台传递输入数据的方式大不不同,这样设计则将输入数据的方式进行了统一,相对于传统的分布式计算方法中直接将文件内容传递给mapper的方式;与此同时,框架并未限制待处理文件内容的实际格式,最大程度的保留了处理数据的灵活性,从而实现跨平台的通用性和可用性。
通过分布式计算平台对待处理文件进行处理后,则输出处理结果。在任务执行完后还可输出一些统计信息、错误信息等。在一个实施例中,如图6所示,一种分布式计算系统,包括平台封装模块102、应用封装模块104和执行封装模块106,其中平台封装模块102用于基于不同分布式计算平台的通用功能,构建多个分布式计算平台间的统一编程接口,并以统一编程接口与应用封装模块104交互。在一个实施例中,如图2所示,基于分布式计算平台的共性,构建多个分布式计算平台间的统一编程接口,使得这些编程接口具有各个分布式计算平台的通用的基本功能(通常也是最常用最重要的功能)。这些编程接口包括上下文接口、用于解析输入数据并生成输出数据的接口、文件访问接口和输入输出字节流接口。编程接口的具体描述参照上文,在此则不再赘述。应用封装模块104用于根据用户的应用需求,通过统一编程接口进行编程,构建分布式应用程序。本实施例中,应用封装模块104用于根据用户具体的应用个需求,调用平台封装模块102来完成具体的数据处理业务,通过统一编程接口进行编程,构建一个完整的分布式应用程序。执行模块106用于调用分发脚本将分布式应用程序提交到分布式计算平台,启动待执行的任务,在分布式计算平台上执行分布式应用程序。在一个实施例中,所生成的分布式应用程序,需要依靠分发脚本来提交到分布式计算平台。分发脚本是由本实施例方案提供的,用于向用户提供统一的平台无关的提交任务方式,将分布式应用程序和数据提交到具体的分布式计算平台。不同的分布式计算平台的提交指令差异很大,分发脚本通过接受一组统一格式的功能选项,并将其翻译成具体的分布式计算平台对应的指令去执行,从而隔离了不同分布式计算平台在提交任务时的差异性。分发脚本所定义的提交任务方式都非常基本、常用、重要,相当于取了各个分布式计算平台的任务提交功能的交集。当分布式计算平台支持MapReduce范式时,调用分发脚本支持的主要选项包括用户输入的文件列表、输出目录、mapper的可执行程序及选项、reducer的可执行程序及选项等,这些选项在各种MapReduce分布式计算平台上都是普遍适用的。如图7所示,在一个实施例中,执行封装模块106包括文件列表生成模块116、切分模块126、配置信息收集模块136、封装脚本生成模块146和处理模块156,其中
文件列表生成模块116用于获取输入文件列表,生成待处理文件列表。对于不同的分布式计算平台,需要采用不同的命令来获取待处理的文件列表。待处理文件列表中记录了每一个待处理文件的全路径,并以文本文件的形式保存在一个本地临时文件中。切分模块126用于根据分布式计算平台中的mapper数目切分待处理文件列表,将切分后的待处理文件列表提交给分布式计算平台。mapper数目可由用户指定,生成的待处理文件列表中的每个文件都要作为输入送至mapper,由于用户可以指定多个mapper并行处理,因此需要对待处理文件列表进行切分,以便让每个mapper的工作量尽量平均。在本实施例中,按文件个数进行切分,例如,待处理文件列表中有10个待处理文 件,用户指定了 3个mapper,则可分为(3, 3,4),即有两个mapper分别处理3个待处理文件,有一个mapper处理4个待处理文件。切分后的待处理文件列表与每个mapper相对应,切分后的待处理文件列表的个数与mapper的数目一致,每个切分后的待处理文件列表作为一个临时文件,其中记录了每个mapper待处理的文件的路径。切分后的待处理文件列表上传到分布式计算平台的一个临时路径中,以便mapper读取到。配置信息收集模块136用于通过命令行参数收集输入的配置信息。调用分发脚本,通过命令行参数来收集用户输入的配置信息,这些配置信息包括上述用户指定的mapper的数目,输入文件列表的目录、输出目录,以及一些与分布式计算平台的设置和用户自定义设置等。封装脚本生成模块146用于根据配置信息,对分布式计算平台中的mapper和reducer分别生成封装脚本,将封装脚本提交给分布式计算平台。根据收集到的配置信息,对mapper和reducer分别生成一个封装脚本,保存在本地临时文件中,用于将用户输入的配置信息以环境变量的形式传递给mapper和reducer。由于主流操作系统(例如Windows、Linux、Mac操作系统等)上的应用程序都支持环境变量,采用环境变量来传递用户输入的配置信息,更具有通用性。所生成的封装脚本,连同其他运行待执行的任务所必需的文件,一起提交到分布式计算平台的临时路径中。其他运行待执行的任务所必需的文件包括用户指定要上传的本地文件(可通过分发脚本中的参数指定)和与分布式计算平台相关的底层文件。处理模块156用于通过分布式计算平台获取切分后的待处理文件,根据待处理文件的文件路径对待处理文件进行处理,输出处理结果。具体的,切分后的待处理文件列表和上述生成的封装脚本提交到分布式计算平台后,则通知分布式计算平台启动待执行的任务。由于切分后的待处理文件列表为多个文本文件,其中每行记录了一个mapper需要处理的文件路径,分布式计算平台中的mapper所得到输入则是每行的文本,每一行分配给mapper要处理的文件路径,而reducer则接收mapper的输出数据。这样,限制了 mapper的输入总是一行行的文件路径,mapper获取到文件路径后则去读取文件路径对应的文件内容。由于不同的分布式计算平台传递输入数据的方式大不不同,这样设计则将输入数据的方式进行了统一,相对于传统的分布式计算方法中直接将文件内容传递给mapper的方式;与此同时,框架并未限制待处理文件内容的实际格式,最大程度的保留了处理数据的灵活性,从而实现跨平台的通用性和可用性。
通过分布式计算平台对待处理文件进行处理后,则输出处理结果。在任务执行完后还可输出一些统计信息、错误信息等。应当说明的是,本发明所提供的分布式计算方法及系统,特别适用于支持MapReduce范式的分布式计算平台,对于其他范式的分布式计算平台,也可采用类似原理实现。采用上述分布式计算方法及系统,能提高不同分布式计算平台之间的可移植性,实现平台无关的分布式计算。以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。·
权利要求
1.ー种分布式计算方法,包括以下步骤 基于不同分布式计算平台的通用功能,构建多个分布式计算平台间的统一编程接ロ ; 根据用户的应用需求,通过所述统ー编程接ロ进行编程,构建分布式应用程序; 调用分发脚本将所述分布式应用程序提交到分布式计算平台,启动待执行的任务,在所述分布式计算平台下执行所述分布式应用程序。
2.根据权利要求I所述的分布式计算方法,其特征在于,所述编程接ロ包括上下文接ロ、用于解析输入数据并生成输出数据的接ロ、文件访问接口和输入输出字节流接ロ。
3.根据权利要求I或2所述的分布式计算方法,其特征在于,所述调用分发脚本将所述分布式应用程序提交到分布式计算平台的步骤包括 获取输入文件列表,生成待处理文件列表; 根据分布式计算平台中的mapper数目切分所述待处理文件列表; 将所述切分后的待处理文件列表提交给所述分布式计算平台。
4.根据权利要求3所述的分布式计算方法,其特征在于,所述调用分发脚本将所述分布式应用程序提交到分布式计算平台的步骤还包括 通过命令行參数收集输入的配置信息; 根据所述配置信息,对所述分布式计算平台中的mapper和reducer分别生成封装脚本; 将所述封装脚本提交给所述分布式计算平台。
5.根据权利要求4所述的分布式计算方法,其特征在于,所述切分后的待处理文件列表中记录了待处理文件的文件路径; 所述在分布式计算平台下执行所述分布式应用程序的步骤还包括 通过所述分布式计算平台获取切分后的待处理文件列表,根据所述待处理文件的文件路径对所述待处理文件进行处理,输出处理結果。
6.ー种分布式计算系统,其特征在于,包括 平台封装模块,用于基于多个分布式计算平台的通用功能,构建多个分布式计算平台间的统一编程接ロ; 应用封装模块,用于根据用户的应用需求,通过所述统ー编程接ロ进行编程,构建分布式应用程序; 执行模块,用于调用分发脚本将所述分布式应用程序提交到分布式计算平台,启动待执行的任务,在所述分布式计算平台上执行所述分布式应用程序。
7.根据权利要求6所述的分布式计算系统,其特征在于,所述编程接ロ包括上下文接ロ、用于解析输入数据并生成输出数据的接ロ、文件访问接口和输入输出字节流接ロ。
8.根据权利要求6或7所述的分布式计算系统,其特征在于,所述执行封装模块包括: 文件列表生成模块,用于获取输入文件列表,生成待处理文件列表; 切分模块,用于根据分布式计算平台中的mapper数目切分所述待处理文件列表,并将所述切分后的待处理文件列表提交给所述分布式计算平台。
9.根据权利要求8所述的分布式计算系统,其特征在于,所述执行封装模块还包括 配置信息收集模块,用于通过命令行參数收集输入的配置信息; 封装脚本生成模块,用于根据所述配置信息,对所述分布式计算平台中的mapper和reducer分别生成封装脚本,并将所述封装脚本提交给所述分布式计算平台。
10.根据权利要求9所述的分布式计算系统,其特征在于,所述切分后的待处理文件列表中记录了待处理文件的文件路径; 所述执行封装模块还包括 处理模块,用于通过所述分布式计算平台获取切分后的待处理文件列表,根据所述待处理文件的文件路径对所述待处理文件进行处理,输出处理结果。
全文摘要
本发明提供了一种分布式计算方法,包括以下步骤基于不同分布式计算平台的通用功能,构建多个分布式计算平台间的统一编程接口;根据用户具体的应用需求,通过所述统一编程接口进行编程,构建分布式应用程序;调用分发脚本将所述分布式应用程序提交到分布式计算平台,启动待执行的任务,在所述分布式计算平台下执行所述分布式应用程序。采用该方法,使得分布式应用程序能够在不改动或者极少改动的情况下在不同的分布式计算平台上执行,因此提高了不同的分布式计算平台之间的可移植性。此外,还提供了一种分布式计算系统。
文档编号G06F9/46GK102915229SQ201110219900
公开日2013年2月6日 申请日期2011年8月2日 优先权日2011年8月2日
发明者沈雷 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1