hadoop序列化机制与java序列化机制对比
2013-11-17 22:26
183 查看
1、采用的方法:
java序列化机制采用的ObjectOutputStream 对象上调用writeObject() 方法; Hadoop 序列化机制调用对象的write() 方法,带一个DataOutput 类型的参数;
2、反序列化过程:
两者都是从流中读取数据,java的反序列化过程会不断的创建新的对象;Hadoop反序列化机制不断的复用对象(在Block 的某个对象上反复调用readFields(),可以在同一个对象上得到多个反序列化的结果,而不是多个反序列化的结果对象(对象被复用了),这减少了Java 对象的分配和回收,提高了应用的效率)
3、hadoop序列化的特征:
❑ 紧凑:由于带宽是Hadoop 集群中最稀 缺的资源,一个紧凑的序列化机制可以充分利用数据中心的带宽。
❑ 快速:在进程间通信(包括MapReduce 过程中涉及的数据交互)时会大量使用序列
化机制,因此,必须尽量减少序列化和反序列化的开销。
❑ 可扩展:随着系统的发展,系统间通信的协议会升级,类的定义会发生变化,序列化
机制需要支持这些升级和变化。
❑ 互操作:可以支持不同开发语言间的通信,如C++ 和Java 间的通信。这样的通信,
可以通过文件(需要精心设计文件的格式)或者后面介绍的IPC 机制实现。
java的序列化会将类名写入输出流中,占用较多的存储空间,同时同一类的不同对象在序列化时会共享一份元数据,会通过某种引用指向这份元数据,故在序列化时的输出流时需要维持某种状态,对一个大文件不能切割,加之java的反序列化会创建新的对象,造成空间上的浪费,所以java的序列化在hadoop的场景下,不适合
下一篇将分析,hadoop序列化是如何做快速、紧凑、可扩展及互操作的?
java序列化机制采用的ObjectOutputStream 对象上调用writeObject() 方法; Hadoop 序列化机制调用对象的write() 方法,带一个DataOutput 类型的参数;
2、反序列化过程:
两者都是从流中读取数据,java的反序列化过程会不断的创建新的对象;Hadoop反序列化机制不断的复用对象(在Block 的某个对象上反复调用readFields(),可以在同一个对象上得到多个反序列化的结果,而不是多个反序列化的结果对象(对象被复用了),这减少了Java 对象的分配和回收,提高了应用的效率)
3、hadoop序列化的特征:
❑ 紧凑:由于带宽是Hadoop 集群中最稀 缺的资源,一个紧凑的序列化机制可以充分利用数据中心的带宽。
❑ 快速:在进程间通信(包括MapReduce 过程中涉及的数据交互)时会大量使用序列
化机制,因此,必须尽量减少序列化和反序列化的开销。
❑ 可扩展:随着系统的发展,系统间通信的协议会升级,类的定义会发生变化,序列化
机制需要支持这些升级和变化。
❑ 互操作:可以支持不同开发语言间的通信,如C++ 和Java 间的通信。这样的通信,
可以通过文件(需要精心设计文件的格式)或者后面介绍的IPC 机制实现。
java的序列化会将类名写入输出流中,占用较多的存储空间,同时同一类的不同对象在序列化时会共享一份元数据,会通过某种引用指向这份元数据,故在序列化时的输出流时需要维持某种状态,对一个大文件不能切割,加之java的反序列化会创建新的对象,造成空间上的浪费,所以java的序列化在hadoop的场景下,不适合
下一篇将分析,hadoop序列化是如何做快速、紧凑、可扩展及互操作的?
相关文章推荐
- hadoop序列化机制与java序列化机制对比
- hadoop序列化机制与java序列化机制对比
- Java 和 Hadoop 序列化机制浅讲
- JAVA的序列化机制serialVersionUID的作用
- java序列化读取与文本文件读取数据效率对比
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- Java序列化的机制和原理,以及自定义序列化问题
- Java序列化的机制和原理
- java与hadoop的序列化、反序列化(一)
- java之序列化Serialization 机制
- Java序列化机制和原理
- c++ && JAVA 的资源回收机制-对比
- Java 序列化机制解析
- Java序列化的机制和原理
- Java序列化的机制和原理
- Java序列化的机制和原理
- Java序列化的机制和原理
- 浅析Java Object Serialization与 Hadoop 序列化
- 解析java序列化机制
- java序列化机制