Hadoop之Hadoop序列化
Hadoop之Hadoop序列化
目錄
1. 什么是序列化
序列化就是把內(nèi)存中的對(duì)象,轉(zhuǎn)換成字節(jié)序列(或其他數(shù)據(jù)傳輸協(xié)議)以便于存儲(chǔ)(持久化)和網(wǎng)絡(luò)傳輸。
反序列化就是將收到字節(jié)序列(或其他數(shù)據(jù)傳輸協(xié)議)或者是硬盤的持久化數(shù)據(jù),轉(zhuǎn)換成內(nèi)存中的對(duì)象。
2. 為什么要序列化
一般來說,“活的”對(duì)象只生存在內(nèi)存里,關(guān)機(jī)斷電就沒有了。而且“活的”對(duì)象只能由本地的進(jìn)程使用,不能被發(fā)送到網(wǎng)絡(luò)上的另外一臺(tái)計(jì)算機(jī)。 然而序列化可以存儲(chǔ)“活的”對(duì)象,可以將“活的”對(duì)象發(fā)送到遠(yuǎn)程計(jì)算機(jī)。
3. 為什么不用Java的序列化
Java的序列化是一個(gè)重量級(jí)序列化框架(Serializable),一個(gè)對(duì)象被序列化后,會(huì)附帶很多額外的信息(各種校驗(yàn)信息,header,繼承體系等),不便于在網(wǎng)絡(luò)中高效傳輸。所以,hadoop自己開發(fā)了一套序列化機(jī)制(Writable),特點(diǎn)如下:
緊湊的格式能讓我們充分利用網(wǎng)絡(luò)帶寬,而帶寬是數(shù)據(jù)中心最稀缺的資源
進(jìn)程通信形成了分布式系統(tǒng)的骨架,所以需要盡量減少序列化和反序列化的性能開銷,這是基本的;
協(xié)議為了滿足新的需求變化,所以控制客戶端和服務(wù)器過程中,需要直接引進(jìn)相應(yīng)的協(xié)議,這些是新協(xié)議,原序列化方式能支持新的協(xié)議報(bào)文;
能支持不同語言寫的客戶端和服務(wù)端進(jìn)行交互;
4. 常用數(shù)據(jù)序列化類型
| boolean | BooleanWritable |
| byte | ByteWritable |
| int | IntWritable |
| float | FloatWritable |
| long | LongWritable |
| double | DoubleWritable |
| String | Text |
| map | MapWritable |
| array | ArrayWritable |
5. 自定義bean對(duì)象實(shí)現(xiàn)序列化接口(Writable)
自定義bean對(duì)象要想序列化傳輸,必須實(shí)現(xiàn)序列化接口,需要注意以下7項(xiàng)。
總結(jié)
以上是生活随笔為你收集整理的Hadoop之Hadoop序列化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Hadoop之MapReduce入门
- 下一篇: Hadoop之MapReduce工作流程