一、引入:
例如在hadoop102服务器中的内存中有一份数据,想要发送到hadoop103内存中,但一个计算机只
有一个内存,如何将“活着的”对象发送到远程计算机上,Hadoop序列化就解决这个问题。
序列化就是把内存中的对象转换为字节序列来传输
反序列化就是把字节序列转换成内存中的对象
二、Java中有自己的序列化框架,但对象序列化后会附带很多额外的信息(各种校验信息)Hadoop序列化有三个优点:存储空间小,读写数据的开销小,支持多语言互操作;即紧凑,快速,互操作
三、一个对象要想实现序列化,要先实现序列化接口(Writable)
具体实现Bean对象序列化步骤
1.构造空参构造器
因为在反序列化时,需要反射调用空参构造
2.重写序列化与反序列化方法
序列化与反序列化的顺序要完全一致
3.如果需要传输的bean对象放在key中传输,要实现Compareable接口,因为MapReduce会对key进行排序,所以要保证key是可以排序的
4.重写toString方法