一、什麼是序列化與反序列化
序列化是把對象轉換為位元組序列的過程,使之持久化到磁盤和網絡傳輸(write過程)
反序列化是把位元組序列轉換為對象的過程,使之成為記憶體中的對象(read過程)
二、為什麼要進行序列化與反序列化
對象隻能在記憶體中
對象隻能在本地的程序中使用
通過序列化與反序列的操作:
永久儲存對象
将對象使用在網絡傳輸中
三、Java的序列化與Hadoop的序列化
在MapReduce過程中大量使用序列化機制,Java會不斷的建立對象,是以必須減少序列化與反序列化的開銷。
(本文側重于Hadoop的序列化,Serializable自行檢視學習)
Java的序列化架構Serializable屬于重量級架構,資訊詳細結構很完整但是不便于在網絡中進行高效傳輸
Hadoop的序列化機制有以下優點:
緊湊:高效實用存儲空間
快速:讀寫資料的額外開銷小
可擴充:随着通信協定的更新而更新
互操作:支援多語言的互動(自行了解IPC機制)
Hadoop的Writable源碼
自定義的bean對象隻需要實作Writable接口重寫接口中的兩個方法即可實作序列化與反序列化

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