Hadoop之Hadoop序列化
Hadoop之Hadoop序列化
目录
- 什么是序列化
- 为什么要序列化
- 为什么不用Java的序列化
- 常用数据序列化类型
- 自定义bean对象实现序列化接口(Writable)
1. 什么是序列化
序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输。
反序列化就是将收到字节序列(或其他数据传输协议)或者是硬盘的持久化数据,转换成内存中的对象。
2. 为什么要序列化
一般来说,“活的”对象只生存在内存里,关机断电就没有了。而且“活的”对象只能由本地的进程使用,不能被发送到网络上的另外一台计算机。 然而序列化可以存储“活的”对象,可以将“活的”对象发送到远程计算机。
3. 为什么不用Java的序列化
Java的序列化是一个重量级序列化框架(Serializable),一个对象被序列化后,会附带很多额外的信息(各种校验信息,header,继承体系等),不便于在网络中高效传输。所以,hadoop自己开发了一套序列化机制(Writable),特点如下:
- 紧凑
紧凑的格式能让我们充分利用网络带宽,而带宽是数据中心最稀缺的资源 - 快速
进程通信形成了分布式系统的骨架,所以需要尽量减少序列化和反序列化的性能开销,这是基本的; - 可扩展
协议为了满足新的需求变化,所以控制客户端和服务器过程中,需要直接引进相应的协议,这些是新协议,原序列化方式能支持新的协议报文; - 互操作
能支持不同语言写的客户端和服务端进行交互;
4. 常用数据序列化类型
Java类型 | Hadoop Writable类型 |
---|---|
boolean | BooleanWritable |
byte | ByteWritable |
int | IntWritable |
float | FloatWritable |
long | LongWritable |
double | DoubleWritable |
String | Text |
map | MapWritable |
array | ArrayWritable |
5. 自定义bean对象实现序列化接口(Writable)
自定义bean对象要想序列化传输,必须实现序列化接口,需要注意以下7项。
- 必须实现Writable接口
- 反序列化时,需要反射调用空参构造函数,所以必须有空参构造
public FlowBean() {super();
}
- 重写序列化方法
@Overridepublic void write(DataOutput out) throws IOException {out.writeLong(upFlow);out.writeLong(downFlow);out.writeLong(sumFlow);}
- 重写反序列化方法
@Override
public void readFields(DataInput in) throws IOException {upFlow = in.readLong();downFlow = in.readLong();sumFlow = in.readLong();
}
- 注意反序列化的顺序和序列化的顺序完全一致
- 要想把结果显示在文件中,需要重写toString(),可用”\t”分开,方便后续用。
- 如果需要将自定义的bean放在key中传输,则还需要实现comparable接口,因为mapreduce框中的shuffle过程一定会对key进行排序。
@Override
public int compareTo(FlowBean o) {// 倒序排列,从大到小return this.sumFlow > o.getSumFlow() ? -1 : 1;
}
Hadoop之Hadoop序列化相关推荐
- Java拾遗:004 - JDK、Hadoop、Hessian序列化
2019独角兽企业重金招聘Python工程师标准>>> JDK序列化 在分布式架构中,序列化是分布式的基础构成之一,我们需要把单台设备上的数据通过序列化(编码.压缩)后通过网络传输给 ...
- 【云计算 Hadoop】Hadoop 版本 生态圈 MapReduce模型
忘的差不多了, 先补概念, 然后开始搭建集群实战 ... . 一 Hadoop版本 和 生态圈 1. Hadoop版本 (1) Apache Hadoop版本介绍 Apache的开源项目开发流程 : ...
- Hadoop——(Hadoop框架,Hadoop的优缺点,Hadoop1.x和2.x的版本区别,Hadoop架构,Hadoop目录结构)
文章目录 大数据的简介 Hadoop框架 Hadoop的优缺点 Hadoop1.x和2.x的版本区别 Hadoop架构 Hadoop目录结构 正常工作的Hadoop集群中Hadoop都分别需要启动哪些 ...
- 零基础linux安装hadoop步骤,hadoop的Linux下简单安装步骤
首先安装Hadoop cluster版本: $ curl -O http://archive.cloudera.com/cdh/3/hadoop-0.20.2-cdh3u6.tar.gz $ cd / ...
- 「hadoop」hadoop启动需要相关的命令(仅供本人使用)
#拷贝配置文件 cp -R /mnt/hgfs/D/SharedFiles/etc/hadoop/* /usr/hadoop/etc/hadoop #拷贝日志到win7 cp -R /usr/hado ...
- [Linux][Hadoop] 将hadoop跑起来
前面安装过程待补充,安装完成hadoop安装之后,开始执行相关命令,让hadoop跑起来 使用命令启动所有服务: hadoop@ubuntu:/usr/local/gz/hadoop-2.4.1$ . ...
- BigData之Hadoop:Hadoop的简介、深入理解、下载、案例应用之详细攻略
BigData之Hadoop:Hadoop的简介.深入理解.下载.案例应用之详细攻略 目录 Hadoop的简介 1.HDFS体系结构图 Hadoop的深入理解 0.深入了解Hadoop的其它相关基础知 ...
- Hadoop之Hadoop企业优化(HDFS小文件优化)
Hadoop之Hadoop企业优化 目录 MapReduce 跑的慢的原因 MapReduce优化方法之数据输入 MapReduce优化方法之Map阶段 MapReduce优化方法之Reduce阶段 ...
- Hadoop之Hadoop数据压缩
Hadoop之Hadoop数据压缩 目录 概述 MR支持的压缩编码 Gzip压缩 Bzip2压缩 Lzo压缩 Snappy压缩 压缩位置选择 压缩参数配置 1. 概述 压缩技术能够有效减少底层存储系统 ...
最新文章
- ICCV2021|首届城市规模点云语义理解挑战赛启动了
- lintcode480- Binary Tree Paths- easy
- 数据结构(C语言实现)勘误
- kernel 中标准的 ir 模块的 时间的定义_Linux开机流程详解:BIOSgt;MBRgt;GRUBgt;Kernel...
- 最全的 pip 使用指南,50% 你可能没用过。
- PHP两个字符串比较(人为出错),两字符串类型和数据表面相等,但strcmp()结果不为0...
- [Docker]Docker快速上手学习笔记
- 服务器不删档的设置_不删档预捏脸开启,快来体验次世代黑科技!
- JQuery根据值设置radio选中
- NUC1445 Euclid's Game【博弈】
- cisco路由器菜单的制作
- 机电传动控制第二周作业
- 营销模式线上与线下相结合
- heic文件怎么转换成jpg?实用图片格式转换方法分享
- 嵌入式Linux学习笔记(1-4)——下载bootoader
- windows winrar 指令_Windows上WinRAR.exe命令行参数说明
- 杰理之MIC 免电容方案需要设置【篇】
- ROM和硬盘的关系(ROM-RAM-NANDFLASH-HDD-SSD)
- 蓝牙Ibeacon室内定位之微信摇一摇原理浅析--蓝牙定位--新导智能
- ramos一键处理多合一_PrimoCache驱RAMOS一键制作工具四合一 V2.99版
热门文章
- 猫猫学IOS(二十一)UIApplication设置程序图标右上⾓红⾊数字_联⺴指⽰器等
- (转)开源 Apache 服务器安全防护技术精要及实战
- memcached 相关
- 数据结构与算法-数组
- CodeForces - 1480D2 Painting the Array II(dp)
- 服务器修改密码复杂性,【已解决】在windows server 2008域环境中如何禁用密码复杂性要求?...
- UVA140 Bandwidth带宽
- 无法全新安装_好墙板更需好安装:护墙板安装新方法
- arduino自带程序_arduino代码运行时间测试函数,代码性能运行时间测试方法
- L1-045. 宇宙无敌大招呼