c语言sscanf函数的用法是什么
251
2022-11-24
Hadoop序列化
1. why 序列化
"活的"对象只存在内存中,关机断电就没有,"活的"对象只能本地进程使用,不能发到网络上另外一台计算机,序列化可以存储"活的对象",并发送到远程计算机
2. what 序列化
序列化就是把内存中对象转换成字节序列(或其他数据传输协议)以便于存储(持久化)和网络传输
反序列化就是将受到字节序列(或其他数据传输协议)或者硬盘中持久化的数据,转换为内存中对象
3. why不用java的序列化
java序列化是重量级序列化框架(Serializable) ,一个对象被序列化后,附带很多额外信息(校验,header,继承体系等),不便于网络中高效传输,所以Hadoop自己开发了一套序列化机制(Writable),精简高效
4. why is important to Hadoop
因为Hadoop在集群之间进行通讯或者RPC调用时,需要序列化,要求序列化快,体积小,占用带宽小 ,所以必须理解Hadoop的序列化机制
序列化和反序列化在分布式数据处理领域常见:进程通信和永久存储,然而Hadoop中各个节点之间的通信是通过远程调用(RPC)实现的
5.RPC序列化要求:
(1)紧凑:紧凑的格式可以充分利用网络带宽,带宽是数据中心最稀缺的资源
(2)快速:进程通信形成了分布式系统的骨架,所以需要尽量减少序列化和反序列化的性能开销
(3)可扩展:协议为了满足新的需求变化,所以控制客户端和服务器过程中,需要直接引进相应协议.这些新协议,反序列化的方式能够支持新的协议报文
(4)相互操作:支持不同语言写的客户端和服务端进行交互
JAVA类型 | Hadoop Writable |
---|---|
boolean | Boolean Writable |
byte | Byte Writable |
int | IntWritable |
float | FloatWritable |
long | LongWritable |
duble | DoubleWritable |
string | Text |
map | Map Writable |
array | ArrayWritable |
.6. 自定义Bean对象实现序列化接口(Writable)
(1) 自定义bean对象要想序列化传输,必须实现序列化接口注意
1. 实现Writable接口 |
2.反序列化,需要反射调用空构造函数,所以必须有空构造 public FlowBean() { |
3.重写序列化方法
@Override
|
4. 重写反序列化方法 @Override |
5. 反序列化的顺序和序列化的顺序完全一致 |
6. 要想把结果显示在文件中,需要重写toString().可以用"\t"分开 |
7. 如果需要将自定义的bean放在key中传输,则还需要实现comparable接口 ,MapReduce框中的shuffle过程会对key进行排序 Override |
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~