1.什么是序列化和反序列化
序列化就是把内存中的对象,转换成字节序列或其他数据传输协议,以便于存储和网络传输。
反序列化就是将收到的字节序列或其他网络传输协议和硬盘的持久化数据,转换成内存中的对象。
2.为什么不使用Java的序列化?
因为Java的序列化是一个重量的序列化,一个对象被序列化之后,附带了很多额外的信息(检验码,继承体系等),不便于在网络中高效传输,所以hadoop自己开发了一套序列化机制(Writable)
3.hadoop序列化的特点?
紧凑:可以充分利用网络带宽
快速:读写数据的额外开销小
可扩展:可以随着通信的升级而升级
互操作:支持多语言写的客户端和服务端进行交互
4.hadoop中常见的序列化类型
Java类型 |
Hadoop Writable类型 |
boolean |
BooleanWritable |
byte |
ByteWritable |
int |
IntWritable |
float |
FloatWritable |
long |
LongWritable |
double |
DoubleWritable |
String |
Text |
map |
MapWritable |
array |
ArrayWritable |