Hadoop的序列化機制

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

相關文章
相關標籤/搜索