CN102033959A - 一种分布式计算系统中对象传递的方法 - Google Patents
一种分布式计算系统中对象传递的方法 Download PDFInfo
- Publication number
- CN102033959A CN102033959A CN2010106106798A CN201010610679A CN102033959A CN 102033959 A CN102033959 A CN 102033959A CN 2010106106798 A CN2010106106798 A CN 2010106106798A CN 201010610679 A CN201010610679 A CN 201010610679A CN 102033959 A CN102033959 A CN 102033959A
- Authority
- CN
- China
- Prior art keywords
- job
- coded sequence
- file
- job file
- computing system
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
一种分布式计算系统中对象传递的方法,该方法包括以下步骤:将对象序列化、编码,写入作业文件;传送含有编码序列的作业文件;将含有编码序列的作业文件中的编码序列进行解码和反序列化,提取并使用对象内容。其中,所述将对象序列化、编码是由客户端将对象分解成字节流,然后再将所述字节流经过编码,转换成ASCII字符。其中,所述作业文件是标准的XML文件;其中,所述将对象编码是采用Base64编码。本发明的分布式计算系统中对象传递的方法,可以使分布式计算系统的各个节点之间传递复杂的对象实例,有效的增强了整个分布式计算系统系统的处理能力,可以进行更为高级的分布式运算过程。
Description
技术领域
本发明涉及一种分布式计算系统,尤其涉及一种分布式计算系统中对象传递的方法。
背景技术
分布式计算,是把一个需要非常巨大的计算能力才能解决的问题分成许多小的部分,然后把这些小的部分分配给许多计算机进行处理,最后把这些计算结果综合起来得到最终的结果,它是一门计算机科学。
分布式计算系统(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系统的处理能力,可以进行更为高级的分布式运算过程。
本领域普通技术人员可以理解:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种分布式计算系统中对象传递的方法,该方法包括以下步骤:
将对象序列化、编码,写入作业文件;
传送含有编码序列的作业文件;
将含有编码序列的作业文件中的编码序列进行解码和反序列化,提取并使用对象内容。
2.根据权利要求1所述的分布式计算系统中对象传递的方法,其特征在于,所述将对象序列化、编码是由客户端将对象分解成字节流,然后再将所述字节流经过Base64编码,转换成ASCII字符。
3.根据权利要求1所述的分布式计算系统中对象传递的方法,其特征在于,所述作业文件是标准的XML文件。
4.根据权利要求1所述的分布式计算系统中对象传递的方法,其特征在于,所述将对象序列化是将可串行化接口的对象转换成一个字节序列。
5.根据权利要求1-4任一项所述的分布式计算系统中对象传递的方法,其特征在于,所述传送含有编码序列的作业文件的步骤进一步包括:客户端将所述含有编码序列的作业文件传送给作业服务器和作业服务器将所述含有编码序列的作业文件传送给任务服务器的步骤。
6.根据权利要求1-4任一项所述的分布式计算系统中对象传递的方法,其特征在于,所述将含有编码序列的作业文件中的编码序列进行解码和反序列化,提取并使用对象内容的步骤进一步包括:作业服务器将含有编码序列的作业文件中的编码序列进行解码和反序列化,提取并使用对象内容和任务服务器将含有编码序列的作业文件中的编码序列进行解码和反序列化,提取并使用对象内容的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106106798A CN102033959A (zh) | 2010-12-29 | 2010-12-29 | 一种分布式计算系统中对象传递的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010106106798A CN102033959A (zh) | 2010-12-29 | 2010-12-29 | 一种分布式计算系统中对象传递的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102033959A true CN102033959A (zh) | 2011-04-27 |
Family
ID=43886852
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010106106798A Pending CN102033959A (zh) | 2010-12-29 | 2010-12-29 | 一种分布式计算系统中对象传递的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102033959A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103390056A (zh) * | 2013-07-26 | 2013-11-13 | 国家电网公司 | 一种文件传输方法及系统 |
CN104113390A (zh) * | 2014-06-20 | 2014-10-22 | 广州市集智信息科技有限公司 | 一种移动网络数据序列化方法 |
CN105740215A (zh) * | 2016-01-23 | 2016-07-06 | 北京掌阔移动传媒科技有限公司 | 一种数据通信编码和解码方法 |
CN108062368A (zh) * | 2017-12-08 | 2018-05-22 | 北京百度网讯科技有限公司 | 全量数据翻译方法、装置、服务器及存储介质 |
CN108462553A (zh) * | 2017-02-17 | 2018-08-28 | 中国移动通信集团内蒙古有限公司 | 一种数据传输方法、装置及电子设备 |
CN109743305A (zh) * | 2018-12-27 | 2019-05-10 | 浪潮软件股份有限公司 | 实现智能对话系统应用中应用文本数据保护的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514976A (zh) * | 1998-07-24 | 2004-07-21 | �ָ��� | 用于进行对象检索的分布式计算机数据库系统和方法 |
CN101026622A (zh) * | 2007-01-12 | 2007-08-29 | 华为技术有限公司 | 分布式系统对象请求传输方法、设备和分布式系统 |
-
2010
- 2010-12-29 CN CN2010106106798A patent/CN102033959A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1514976A (zh) * | 1998-07-24 | 2004-07-21 | �ָ��� | 用于进行对象检索的分布式计算机数据库系统和方法 |
CN101026622A (zh) * | 2007-01-12 | 2007-08-29 | 华为技术有限公司 | 分布式系统对象请求传输方法、设备和分布式系统 |
Non-Patent Citations (3)
Title |
---|
《http://hi.baidu.com/rolandwz/blog/item/82a5842b77a039ffe7cd400d.html》 20080412 rolandwz Java对象转为可传递的字符串 , * |
《计算机应用与软件》 20060531 郭荷清,王增勋 XML数据绑定及对象序列化的应用研究 第23卷, 第5期 2 * |
ROLANDWZ: "Java对象转为可传递的字符串", 《HTTP://HI.BAIDU.COM/ROLANDWZ/BLOG/ITEM/82A5842B77A039FFE7CD400D.HTML》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103390056A (zh) * | 2013-07-26 | 2013-11-13 | 国家电网公司 | 一种文件传输方法及系统 |
CN104113390A (zh) * | 2014-06-20 | 2014-10-22 | 广州市集智信息科技有限公司 | 一种移动网络数据序列化方法 |
CN105740215A (zh) * | 2016-01-23 | 2016-07-06 | 北京掌阔移动传媒科技有限公司 | 一种数据通信编码和解码方法 |
CN108462553A (zh) * | 2017-02-17 | 2018-08-28 | 中国移动通信集团内蒙古有限公司 | 一种数据传输方法、装置及电子设备 |
CN108462553B (zh) * | 2017-02-17 | 2021-04-13 | 中国移动通信集团内蒙古有限公司 | 一种数据传输方法、装置及电子设备 |
CN108062368A (zh) * | 2017-12-08 | 2018-05-22 | 北京百度网讯科技有限公司 | 全量数据翻译方法、装置、服务器及存储介质 |
CN109743305A (zh) * | 2018-12-27 | 2019-05-10 | 浪潮软件股份有限公司 | 实现智能对话系统应用中应用文本数据保护的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN100580661C (zh) | 结构化文档、尤其xml文档的编码/译码的方法和装置 | |
CN102033959A (zh) | 一种分布式计算系统中对象传递的方法 | |
CN1166072C (zh) | 用于数据压缩、传输、存储以及通信的方法、设备和系统 | |
CN109902274B (zh) | 一种将json字符串转化为thrift二进制流的方法及系统 | |
CN108985448B (zh) | 神经网络表示标准框架结构 | |
Bohlouli et al. | Towards an integrated platform for big data analysis | |
CN104123364A (zh) | 一种移动终端发送和接收数据的方法及装置 | |
CN104253858B (zh) | 一种基于数据包的移动数据同步冲突预处理与消解方法 | |
Jeong et al. | An IoT platform for civil infrastructure monitoring | |
CN103530538B (zh) | 一种基于Schema的XML安全视图查询方法 | |
CN106789898B (zh) | 远程数据传输终端、系统及其编码、解码方法 | |
CN109683873B (zh) | 利用asn1规则的航天信息接口编码方法及系统架构 | |
CN112905571B (zh) | 一种列车轨道交通传感器数据管理方法及装置 | |
CN112988954B (zh) | 文本分类方法、装置、电子设备和计算机可读存储介质 | |
US11490134B2 (en) | Method and system for codec of visual feature data | |
Ledeul et al. | Data streaming with apache kafka for cern supervision, control and data acquisition system for radiation and environmental protection | |
CN104572763A (zh) | 一种分布式计算系统中对象传递的方法 | |
CN112884120A (zh) | 图神经网络表示架构 | |
US10666731B2 (en) | IRC-infoid data standardization for use in a plurality of mobile applications | |
CN114385139B (zh) | 一种flink框架运行ETL流程的消息序列化以及比较方法与装置 | |
Janet et al. | Optimizing data movement within cloud environment using efficient compression techniques | |
CN111159200B (zh) | 一种基于深度学习的数据存储方法和装置 | |
CN104298718B (zh) | 一种基于soa的分布式图档系统 | |
Lv et al. | Efficient XML Document Compressing Method Based on Internet of Things | |
Zheng et al. | A Storage Method of Online Educational Resources for College Courses Based on Artificial Intelligence Technology |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20110427 |