序列化是指将一个对象编码成字节流,之后从字节流中重构对象;
为什么需要序列化?
答:用序列化接口可以将对象实例从存储到本地文件或者传送到网络的另一端的节点上;
序列化过程:
序列化的三种主要用途:
1.作为一种持久化的格式
2. 一种网络节点间通信的数据格式
3. 拷贝和克隆
hadoop的序列化机制:
调用write()方法将对象序列化到流中,调用readFile()方法进行反序列化;
java序列化和hadoop序列化的主要区别:
java序列化后的对象不能复用,故在反序列化过程中不断创建新对象
hadoop序列化后的对象可以复用,故反序列化过程中可以复用对象,可以得到一个序列化后的对象的多个反序列化后的结果
hadoop的序列化机制减少了对java对象的分配和回收,提高了应用效率;
hadoop序列化机制的优势:
1.紧凑:Hadoop中最稀缺的资源是宽带,所以紧凑的序列化机制可以充分的利用宽带。
2.快速:通信时大量使用序列化机制,因此,需要减少序列化和反序列化的开销。
3.可扩展:随着通信协议的升级而可升级。
4.互操作:支持不同开发语言的通信。
Hadoop 序列化机制:
Hadoop通过Writable接口实现的序列化机制。
接口提供两个方法,write和readFiles。
Hadoop还包含另外几个重要的序列化接口,WritableCompareable、RawComparator、WritableComparator。