一种分布式计算系统中对象传递的方法技术方案

技术编号:5504504 阅读:292 留言:0更新日期:2012-04-11 18:40
一种分布式计算系统中对象传递的方法,该方法包括以下步骤:将对象序列化、编码,写入作业文件;传送含有编码序列的作业文件;将含有编码序列的作业文件中的编码序列进行解码和反序列化,提取并使用对象内容。其中,所述将对象序列化、编码是由客户端将对象分解成字节流,然后再将所述字节流经过编码,转换成ASCII字符。其中,所述作业文件是标准的XML文件;其中,所述将对象编码是采用Base64编码。本发明专利技术的分布式计算系统中对象传递的方法,可以使分布式计算系统的各个节点之间传递复杂的对象实例,有效的增强了整个分布式计算系统系统的处理能力,可以进行更为高级的分布式运算过程。

【技术实现步骤摘要】

本专利技术涉及一种分布式计算系统,尤其涉及。
技术介绍
分布式计算,是把一个需要非常巨大的计算能力才能解决的问题分成许多小的部 分,然后把这些小的部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到 最终的结果,它是一门计算机科学。分布式计算系统(Map/Reduce),是一个用于大规模数据处理的分布式计算模型, 作为目前最为常见的分布式计算系统,它最初是由Google工程师设计并实现的。其中对它 的定义是,Map/Reduce是一个编程模型(programming model ),是一个用于处理和生成大规 11 ^: (processing and generating large data sets) ^ ^° ffiPtl—f map函数来处理一个key/value对以生成一批中间的key/value对,再定义一个reduce函 数将所有这些中间的有着相同key的values合并起来。很多现实世界中的任务都可用这 个模型来表达。Hadoop,是由Apache基金会开发,采用JAVA开发语言实现了分布式文件系统HDFS 和Map-Reduce分布式计算平台,用户只要继承该系统提供的基类MapReduceBase,分别实 现Map和Reduce的两个类,并注册Job即可自动分布式运行定制的任务。Hadoop的Map/Reduce实现中,对于每一个具体的作业(Job),均需要在不同的节 点之间传递运行时所需的配置信息,它是通过job. xml来实现的,即由作业(Job)发起端将 运行时所需信息,例如作业(Job)名称,输入/输出格式,Map/Reduce任务个数等等,写入一 个job. xml文件,然后传递到不同的系统节点。job. xml是标准的XML(可扩展标准语言)文 件,每一项具体信息均以XML的元素(element)形成存在其中。系统中其他运行节点从这个 job. xml文件中读取相关信息,用以配置该节点上面运行的部分任务,从而实现真个Map/ Reduce的分布式运行。图1为现有分布式计算系统基本结构示意图,如图1所示,分布式计 算系统一般包括客户端、作业服务器和任务服务器。客户端将作业及其相关内容和配置写 入一个job. xml,提交到作业服务器去,并时刻监控执行的状况;作业服务器,在Hadoop中 称为JobTracker或Master,负责将作业文件(xml文件)分发到多个任务服务器,作业服务 器负责管理运行在此框架下所有作业;任务服务器,具体的负责执行用户定义操作的,每一 个作业被拆分成很多的任务,包括Map任务和Reduce任务等,任务是具体执行的基本单元, 它们都需要分配到合适任务服务器上去执行,任务服务器一边执行一边向作业服务器汇报 各个任务的状态,以此来帮助作业服务器了解作业执行的整体情况,分配新的任务等。现有的分布式计算系统,即Hadoop Map/Reduce系统中无法传递对象(class)实 例,job. xml仅仅只能用来传递有限的简单数据类型,例如int,long, float, String, boolean等,由于XML对于传输的字符,即每个元素(element)中的字符是有一定限制的,不 能够随便将内存中一段缓存(buf f er )拷贝至xml中进行传递,那样会造成XML编解码失败,不能进行传输。然而用户定制的应用一般不只是有上述这些简单的数据类型,用户的应用中经常 会需要在Map-Reduce系统的各个节点之间传递复杂的对象(class)实例,进行一些高级的 分布式计算,则目前Hadoop的Map/Reduce实现则不能提供这种功能。
技术实现思路
为了解决现有技术存在的不足,本专利技术的目的在于提供一种分布式计算系统中对 象传递的方法,可以使分布式计算系统的各个节点之间传递复杂的对象实例。为实现上述目的,本专利技术提供的,该方法 包括以下步骤将对象序列化、编码,写入作业文件; 传送含有编码序列的作业文件;将含有编码序列的作业文件中的编码序列进行解码和反序列化,提取并使用对象内容。其中,所述将对象序列化、编码是由客户端将对象分解成字节流,然后再将所述字 节流经过编码,转换成ASCII字符。其中,所述作业文件是标准的XML文件。其中,所述将对象编码是采用Base64编码。其中,所述传送含有编码序列的作业文件的步骤进一步包括客户端将所述含有 编码序列的作业文件传送给作业服务器和作业服务器将所述含有编码序列的作业文件传 送给任务服务器的步骤。其中,所述将含有编码序列的作业文件中的编码序列进行解码和反序列化,提取 并使用对象内容的步骤进一步包括作业服务器将含有编码序列的作业文件中的编码序列 进行解码和反序列化,提取并使用对象内容和任务服务器将含有编码序列的作业文件中的 编码序列进行解码和反序列化,提取并使用对象内容的步骤。其中,所述对象序列化是将可串行化接口的对象转换成一个字节序列。本专利技术提供的分布式计算系统中对象传递的方法解决了当前最常见的分布式计 算系统,即Hadoop Map/Reduce系统中无法传递对象实例的问题,对Map/Reduce系统中 的job的处理能力进行了有效的扩展,Map/Reduce系统在进行分布式运算时,就不会局限 于只能在不同节点之间传递字符串这样的简单数据结构信息,而是可以传递复杂的对象 (class)实例,有效的增强了整个Hadoop Map/Reduce分布式计算系统的处理能力,可以进 行更为高级的分布式运算过程。本专利技术的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变 得显而易见,或者通过实施本专利技术而了解。附图说明附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,并与本专利技术的 实施例一起,用于解释本专利技术,并不构成对本专利技术的限制。在附图中图1为现有分布式计算系统基本结构示意图;图2为根据本专利技术的分布式计算系统中对象传递的方法流程图。具体实施方式以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实 施例仅用于说明和解释本专利技术,并不用于限定本专利技术。为了实现在Hadoop的Map/Reduce系统中传递用户的对象(class)实例,扩展现 有Map/Reduce系统中作业(job)的处理能力,亦即有效增强整个Map/Reduce系统的处理 能力,本申请提案采用了 Java对象序列化与Base64编解码相结合的技术方案。Java对象序列化,是将实现了可串行化(Serializable)接口的对象转换成一个 字节序列,并能够在以后将这个字节序列完全恢复为原来的对象。序列化的过程就是对象 写入字节流和从字节流中读取对象。将对象状态转换成字节流之后,可以用Java, io包中 的各种字节流类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到 另一主机。序列化分为两大部分序列化和反序列化。序列化是这个过程的第一部分,将数 据分解成字节流,以便存储在文件中或在网络上传输。反序列化就是打开字节流并重构对 象。对象序列化不仅要将基本数据类型转换成字节表示,还要恢复数据,恢复数据要求恢复 数据的对象实例。Base64编码,是网络上最常见的用于传输SBit字节代码的编码方式之一。在 RFC本文档来自技高网
...

【技术保护点】
一种分布式计算系统中对象传递的方法,该方法包括以下步骤:将对象序列化、编码,写入作业文件;传送含有编码序列的作业文件;将含有编码序列的作业文件中的编码序列进行解码和反序列化,提取并使用对象内容。

【技术特征摘要】

【专利技术属性】
技术研发人员:谢天
申请(专利权)人:北京播思软件技术有限公司
类型:发明
国别省市:11[中国|北京]

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

1