天天看點

個人淺析Hadoop序列化與反序列化

一、什麼是序列化與反序列化

序列化是把對象轉換為位元組序列的過程,使之持久化到磁盤和網絡傳輸(write過程)

反序列化是把位元組序列轉換為對象的過程,使之成為記憶體中的對象(read過程)

二、為什麼要進行序列化與反序列化

對象隻能在記憶體中

對象隻能在本地的程序中使用

通過序列化與反序列的操作:

永久儲存對象

将對象使用在網絡傳輸中

三、Java的序列化與Hadoop的序列化

在MapReduce過程中大量使用序列化機制,Java會不斷的建立對象,是以必須減少序列化與反序列化的開銷。

(本文側重于Hadoop的序列化,Serializable自行檢視學習)

Java的序列化架構Serializable屬于重量級架構,資訊詳細結構很完整但是不便于在網絡中進行高效傳輸

Hadoop的序列化機制有以下優點:

緊湊:高效實用存儲空間

快速:讀寫資料的額外開銷小

可擴充:随着通信協定的更新而更新

互操作:支援多語言的互動(自行了解IPC機制)

Hadoop的Writable源碼

自定義的bean對象隻需要實作Writable接口重寫接口中的兩個方法即可實作序列化與反序列化

個人淺析Hadoop序列化與反序列化

總結:Hadoop的序列化機制:高效,快速,消耗小