书签 分享 收藏 举报 版权申诉 / 8

一种分布式计算系统中对象传递的方法.pdf

  • 上传人:54
  • 文档编号:2235433
  • 上传时间:2018-08-03
  • 格式:PDF
  • 页数:8
  • 大小:451.97KB
  • 摘要
    申请专利号:

    CN201310512599.2

    申请日:

    2013.10.25

    公开号:

    CN104572763A

    公开日:

    2015.04.29

    当前法律状态:

    撤回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的视为撤回IPC(主分类):G06F 17/30申请公布日:20150429|||公开

    IPC分类号:

    G06F17/30; H04L29/08

    主分类号:

    G06F17/30

    申请人:

    西安群丰电子信息科技有限公司

    发明人:

    不公告发明人

    地址:

    710065陕西省西安市高新区高新路86号领先时代广场(B座)第2幢3单元17层31701号房

    优先权:

    专利代理机构:

    代理人:

    PDF完整版下载: PDF下载
    内容摘要

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

    权利要求书

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

    2.  根据权利要求1所述的分布式计算系统中对象传递的方法,其特征在于,所述将对象序列化、编码是由客户端将对象分解成字节流,然后再将所述字节流经过Base64编码,转换成ASCII字符。

    说明书

    说明书一种分布式计算系统中对象传递的方法
    技术领域
    本发明涉及一种分布式计算系统,尤其涉及一种分布式计算系统中对象传递的方法。
    背景技术
    分布式计算,是把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些小的部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果,它是一门计算机科学。
    分布式计算系统(Map/Reduce),是一个用于大规模数据处理的分布式计算模型,作为目前最为常见的分布式计算系统,它最初是由Google工程师设计并实现的。其中对它的定义是,Map/Reduce是一个编程模型(programming model),是一个用于处理和生成大规模数据集(processing and generating large data sets)的相关的实现。用户定义一个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)中的字符是有一定限制的,不能够随便将内存中一段缓存(buffer)拷贝至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编码,是网络上最常见的用于传输8Bit字节代码的编码方式之一。在RFC2045中Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识别的形式。Base64产生的原因还有一个就是,在Email的传送过程中,由于历史原因,Email只被允许传送ASCII字符,即一个8位字节的低7位。Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8=4*6=24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。
    Hadoop的Map/Reduce系统中使用job.xml来传递不同任务服务器(计算节点)之间的信息,对象序列化之后的字节流不能够直接写入xml的元素(element)进行传递,可以将对象序列化形成的字节流经过Base64编码之后,转换成可以写入xml元素(element)的合法ASCII字符,在Map/Reduce系统中的各任务服务器(计算节点)之间进行传递,系统中接收到job.xml的任务服务器,先将job.xml中的元素(element)进行Base64解码,再对解码形成的字节流做对象的反序列化,就可以转换成所需要的对象实例,这样就达到了在Hadoop的Map/Reduce系统中不同任务服务器(计算节点)之间传递对象。
    图2为根据本发明的分布式计算系统中对象传递的方法流程图,下面将参考图2,对本发明的分布式计算系统中对象传递的方法进行详细描述。
    首先,在步骤201,客户端(Map/Reduce Client)作为作业发起端,将对象分解成字节流进行序列化,然后再将对象序列化形成的字节流经过Base64编码,转换成可以写入xml元素(element)的合法ASCII字符,写入作业文件(job.xml),作业文件是标准的XML(可扩展标准语言)文件,每一项具体信息均以XML的元素(element)形成存在其中。
    在步骤202,客户端将包含经过序列化、Base64编码的作业文件(job.xml)提交给作业服务器(Map/Reduce Master)。
    在步骤203,作业服务器接收到包含经过序列化、Base64编码的作业文件后,对该作业文件中的Base64编码序列进行解码,并反序列化,提取并使用该对象内容。
    在步骤204,作业服务器将收到包含经过序列化、Base64编码的作业文件传递给各个任务服务器(Map/Reduce Slave)。
    在步骤205,任务服务器接收到包含经过序列化、Base64编码的作业文件后,对作业文件中的Base64编码序列进行解码,并反序列化,提取并使用该对象内容。
    通过本发明的分布式计算系统中对象传递的方法,Map/Reduce系统中的作业(job)处理能力得到了有效的扩展,Map/Reduce系统在进行分布式运算时,就不会局限于只能在不同节点之间传递字符串这样的简单数据结构信息,而是可以传递复杂的对象(class)实例,有效的增强了整个Map/Reduce系统的处理能力,可以进行更为高级的分布式运算过程。
    本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而己,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

    关 键  词:
    一种 分布式 计算 系统 对象 传递 方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:一种分布式计算系统中对象传递的方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-2235433.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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