###hadoop的!序列化!机制
在org.apache.hadoop.hdfs.protocol包下
存放了Block
由于java本身自带的序列化机制在序列化时夹杂着太多的类的元数据信息,
使得一个简单的java类序列化出来的数据十分臃肿。
hadoop自己实现了Writable接口,该接口有如下两个方法
//写出
void write(DataOutput out) throws IOException;
//读入
void readFields(DataInput in) throws IOException;
org.apache.hadoop.io包中的 RawComparator 接口允许直接从流中进行对比,从而省去了创建对象的开销。
###Hadoop的序列化框架
hadoop提供了一个简单的序列化框架
在org.apache.hadoop.io.serializer包中
Serialization<T>
//客户端用于判断序列化是否支持该对象
boolean accept(Class<?> c);
//获得Serializer的实现
Serializer<T> getSerializer(Class<T> c);
//获得反序列化对象Deserializer的实现
Deserializer<T> getDeserializer(Class<T> c);
Serialization中包含多个Serializer<T>(串行器),其中有
static class Deserializer
static class Serializer
###Hadoop!压缩!
在org.apache.hadoop.io.compress包中提供了编码和解码的一些工具
CompressionCodec提供了编码工具和解码工具
Decompressor(解压器)
Compressor(压缩器)
CompressionInputStream(压缩流)
DecompressorStream(解压流)
###hadoop的RPC
###Java动态代理
###Java NIO
#通道 Channel
#缓冲区Buffer
#Buffer遵守以下4个不变式
#0<mark<position<limit<capacity
#选择器selector
#IPC连接
在org.apache.hadoop.ipc中,存在Client
connections成员变量,用来保存ConnectionId和Connection的对应关系
private Hashtable<ConnectionId, Connection> connections = new Hashtable<ConnectionId, Connection>();