###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>();