为什么hadoop要自己建立序列化框架
来源:互联网 发布:sql数据库基本语句 编辑:程序博客网 时间:2024/04/30 03:21
最主要有:
一:精简性
java序列化后数据过大,有很多不需要的信息包括类名(同一种类后续出现引用第一次出现的句柄,句柄不适合随机读取而且占用空间大)
java序列化后的数据中保留有该对象的类型名等信息,用来反序列化.在反序列化过程中,将使用该类的公用或受保护的无参数构造方法初始化不可序列化类的字段。可序列化的子类必须能够访问无参数构造方法。可序列化子类的字段将从该流中恢复.序列化运行时使用一个称为
serialVersionUID
的版本号与每个可序列化类相关联,该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类。如果接收者加载的该对象的类的
serialVersionUID 与对应的发送者的类的版本号不同,则反序列化将会导致
InvalidClassException。可序列化类可以通过声明名为 “serialVersionUID” 的字段(该字段必须是静态
(static)、最终 (final) 的 long 型字段)显式声明其自己的 serialVersionUID:private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;
private void readObjectNoData()
throws ObjectStreamException;而hadoop的二进制流中不会记录类名.客户端已经知道数据类型,所以可以让数据流中每一条记录独立与其他,这样保证了随机存储和排序的可能性.
二.hadoop的WriteableComparable接口可以减小开销.
- 而hadoop的节点间通信通过RPC实现.hadoop继承WriteableComparable接口,其类型比较继承自Java
Comparator的rawComparator,允许hadoop直接比较二进制流中数据而不必先反序列化为对象.减少了比较对象时建立对象带来的系统开销.
其次,从数据流中反序列化对象时,Writeable接口允许对象重用.对于大量的对象反序列化我们可以先建立一个私有化对象,然后不断给对象赋值来实现只建立一次对象的反序列化.
三:可拓展性:可以引入新的协议
四:互操性:支持不同语言
- 为什么hadoop要自己建立序列化框架
- 为什么hadoop要自己建立序列化框架
- hadoop序列化框架
- 为什么要序列化
- 为什么要序列化
- 为什么说Java的序列化不适合Hadoop
- 什么是序列化,为什么要序列化?
- 什么是序列化,为什么要序列化。
- 什么是序列化,为什么要序列化
- java序列化 为什么要序列化?
- 为什么要使用序列化
- 为什么要序列化javabean
- 【框架解析】Hadoop系统分析(十)--对象序列化
- hadoop深入研究:(十三)——序列化框架
- hadoop深入研究:(十三)——序列化框架
- 设计模式之抽象工厂模式:Hadoop序列化框架
- 为什么要建立数据仓库
- 从Hadoop Writable序列化框架到java的序列化原理
- 欢迎使用CSDN-markdown编辑器
- java基础—对一个字符串中的数值进行从小到大的排序
- linux中使用pthread_kill函数测试线程是否存活的例子
- VMware Workstation 10.0 许可证密钥
- JS高级编程2-使用高阶函数
- 为什么hadoop要自己建立序列化框架
- Android签名问题之Proguard returned with error code 1. See console
- Android之Intent
- ls -l文件类型
- ajax乱码
- Django异常 - ImportError: No module named django.core.management
- JAVA基础教程入门教程(第四章到第六章)
- 宣布Office 2016 applications DLP 公共预览版
- [IOS]调用手机邮件系统发送邮件