Hadoop序列化学习笔记(一)

什么是序列化?

序列化(serialization),是指将结构化对象转化为字节流,以便在网络上传输或写入磁盘进行永久存储。

反序列化(deserialization),是指将字节流重新转换为结构化对象。

Hadoop使用哪种序列化框架?

Hadoop使用自己的序列化格式Writable,除开Writable,Hadoop也支持Avro序列化框架。

Writable格式紧凑,速度快。,但很难使用除开Java之外的语言对它进行扩展。

Avro支持跨语言使用,意思是,可以用Python写入文件,而用C语言来读取文件。

Hadoop提供的Writable类型

Writable接口

package org.apache.hadoop.io;

import java.io.DataOutput;
import java.io.DataInput;
import java.io.IOException;

public interface Writable {
	/**
	 * * Serialize the fields of this object to <code>out</code>. * @param out
	 * <code>DataOuput</code> to serialize this object into.
	 *
	 * @throws IOException
	 */
	void write(DataOutput out) throws IOException;

	/**
	 * * Deserialize the fields of this object from <code>in</code>. * *
	 * <p>
	 * For efficiency, implementations should attempt to re-use storage in the *
	 * existing object where possible.
	 * </p>
	 * * * @param in <code>DataInput</code> to deseriablize this object from.
	 *
	 * @throws IOException
	 */
	void readFields(DataInput in) throws IOException;
}

如何定制writable

     虽然Hadoop内建了多种Writable供用户选择,但当我们需要使用更加复杂的对象的时候,内建的Writable有可能不能满足我们的需求,这就需要我们定制自己的Writable了。

一个定制的Writable类首先必须实现Writable或者WritableComparable接口,然后为定制的Writable类编写

write(DataOutput out)和readFields(DataInput in)方法,来控制定制的Writable类如何转化为字节流(write方法)和如何从字节流转回为Writable对象。

时间: 2024-08-18 11:39:11

Hadoop序列化学习笔记(一)的相关文章

Hadoop入门学习笔记---part4

紧接着<Hadoop入门学习笔记---part3>中的继续了解如何用java在程序中操作HDFS. 众所周知,对文件的操作无非是创建,查看,下载,删除.下面我们就开始应用java程序进行操作,前提是按照<Hadoop入门学习笔记---part2>中的已经在虚拟机中搭建好了Hadoop伪分布环境:并且确定现在linux操作系统中hadoop的几个进程已经完全启动了. 好了,废话不多说!实际的例子走起. 在myeclipse中新建一个java工程: 在项目工程中新建一个lib包用于存放

Hadoop入门学习笔记---part1

随着毕业设计的进行,大学四年正式进入尾声.任你玩四年的大学的最后一次作业最后在激烈的选题中尘埃落定.无论选择了怎样的选题,无论最后的结果是怎样的,对于大学里面的这最后一份作业,也希望自己能够尽心尽力,好好做.正是因为选题和hadoop有关,现在正式开始学习hadoop.将笔记整理于此,希望与志同道合的朋友共同交流. 作者:itRed 邮箱:[email protected] 个人博客链接:http://www.cnblogs.com/itred 好了,废话不多说.进入正题!开始hadoop的学习

Hadoop入门学习笔记---part3

2015年元旦,好好学习,天天向上.良好的开端是成功的一半,任何学习都不能中断,只有坚持才会出结果.继续学习Hadoop.冰冻三尺,非一日之寒! 经过Hadoop的伪分布集群环境的搭建,基本对Hadoop有了一个基础的了解.但是还是有一些理论性的东西需要重复理解,这样才能彻底的记住它们.个人认为重复是记忆之母.精简一下: NameNode:管理集群,并且记录DataNode文件信息: SecondaryNameNode:可以做冷备份,对一定范围内的数据作快照性备份: DataNode:存储数据:

Hadoop概括——学习笔记&lt;一&gt;

之前有幸在MOOC学院抽中小象学院hadoop体验课. 这是小象学院hadoop2.X概述第一章的笔记 第一章主要讲的是hadoop基础知识.老师讲的还是比较全面简单的,起码作为一个非专业码农以及数据库管理人员,也能狗大致了解其特点.后面因为8月比较忙,就主要看案例那一部分了,应用及基础部分笔记基本没怎么做. 基本上是3/4屏幕放视频,1/4开着马克飞象 首先是概括图(以hadoop2.0为例)  不在博客园上阅读时才会看到的,这篇博文归http://www.cnblogs.com/weibaa

智传播客hadoop视频学习笔记(共2天)

第一天:1.答疑解惑•  就业前景•  学习hadoop要有什么基础•  hadoop会像塞班一样,热一阵子吗•  hadoop学习起来容易还是困难•  课堂上的学习方法(所有实验必须按照要求做,重原理.重实践)•  通过本课程能学到什么 2. 课程简介•  以真实的电信详单分析程序为主线,讲解Hadoop,Hbase,Hive在大数据处理的应用场景与过程•  通过此课程,你能     •  掌握Hadoop基本知识,进行HadoopHDFS和MapReduce应用开发,搭建Hadoop集群  

使用java调用hadoop接口学习笔记

[简介] 由于hadoop是安装在linux系统,因此需要在linux系统使用eclipse开发java.现在很多公司都要求有在linux上开发java的经验 ,因此这也是一个练手的绝好机会.学习hadoop不仅仅是学习了hadoop,我相信等hadoop入门,linux也入门了,shell也入门了,linux上开发java也会了,或许这就是学习的魅力吧,让人欲罢不能!废话不多说,进入正题. [安装eclipse] 工欲善其事,必先利其器,想在linux上用java开发hadoop程序,搭建环境

Hadoop入门学习笔记之一

http://hadoop.apache.org/docs/r1.2.1/api/index.html 适当的利用 null 在map中可以实现对文件的简单处理,如排序,和分集合输出等. 需要关心的内容 一个节点面对的是一个Map任务,一个Map任务面对的是一个split文件,一个map方法面对的是一个split文件生成的键值对. mapper类中map方法的输入是InputFormat的ReadeRecord类读取到的键值对 学习一周之后问题总结: 1.实验时使用的文件过小,大量小文件问题,需

hadoop 学习笔记:mapreduce框架详解

hadoop 学习笔记:mapreduce框架详解 开始聊mapreduce,mapreduce是hadoop的计算框架,我 学hadoop是从hive开始入手,再到hdfs,当我学习hdfs时候,就感觉到hdfs和mapreduce关系的紧密.这个可能是我做技术研究的 思路有关,我开始学习某一套技术总是想着这套技术到底能干什么,只有当我真正理解了这套技术解决了什么问题时候,我后续的学习就能逐步的加快,而学习 hdfs时候我就发现,要理解hadoop框架的意义,hdfs和mapreduce是密不

Hadoop学习笔记(6) ——重新认识Hadoop

Hadoop学习笔记(6) ——重新认识Hadoop 之前,我们把hadoop从下载包部署到编写了helloworld,看到了结果.现是得开始稍微更深入地了解hadoop了. Hadoop包含了两大功能DFS和MapReduce, DFS可以理解为一个分布式文件系统,存储而已,所以这里暂时就不深入研究了,等后面读了其源码后,再来深入分析. 所以这里主要来研究一下MapReduce. 这样,我们先来看一下MapReduce的思想来源: alert("I'd like some Spaghetti!