天天看點

Hadoop中的序列化1 簡介2 執行個體3 自定義

序列化和反序列化就是結構化對象和位元組流之間的轉換,主要用在内部程序的通訊和持久化存儲方面。

通訊格式需求

hadoop在節點間的内部通訊使用的是rpc,rpc協定把消息翻譯成二進制位元組流發送到遠端節點,遠端節點再通過反序列化把二進制流轉成原始的資訊。rpc的序列化需要實作以下幾點:

1.壓縮,可以起到壓縮的效果,占用的寬帶資源要小。

2.快速,内部程序為分布式系統建構了高速鍊路,是以在序列化和反序列化間必須是快速的,不能讓傳輸速度成為瓶頸。

3.可擴充的,新的服務端為新的用戶端增加了一個參數,老用戶端照樣可以使用。

4.相容性好,可以支援多個語言的用戶端

存儲格式需求

表面上看來序列化架構在持久化存儲方面可能需要其他的一些特性,但事實上依然是那四點:

1.壓縮,占用的空間更小

2.快速,可以快速讀寫

3.可擴充,可以以老格式讀取老資料

4.相容性好,可以支援多種語言的讀寫

hadoop的序列化格式

hadoop自身的序列化存儲格式就是實作了writable接口的類,他隻實作了前面兩點,壓縮和快速。但是不容易擴充,也不跨語言。

我們先來看下writable接口,writable接口定義了兩個方法:

1.将資料寫入到二進制流中

2.從二進制資料流中讀取資料

原貼位址:http://blog.csdn.net/lastsweetop/article/details/9193907

繼續閱讀