###hadoop的!序列化!机制
在org.apache.hadoop.hdfs.protocol包下
存放了Blockjava
因为java自己自带的序列化机制在序列化时夹杂着太多的类的元数据信息,
使得一个简单的java类序列化出来的数据十分臃肿。apache
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);oop
Serialization中包含多个Serializer<T>(串行器),其中有
static class Deserializer
static class Serializer编码
###Hadoop!压缩!
在org.apache.hadoop.io.compress包中提供了编码和解码的一些工具代理
CompressionCodec提供了编码工具和解码工具对象
Decompressor(解压器)
Compressor(压缩器)接口
CompressionInputStream(压缩流)
DecompressorStream(解压流)ip
###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>();