Hadoop 序列化机制:从 Writable 到 Avro
序列化是分布式计算框架的核心组件,负责将对象转换为字节流以便在网络传输或磁盘存储。Hadoop 生态系统提供了多种序列化方案,其中 Writable 接口 是最基础的实现,而 Avro、Protobuf 等则在兼容性和性能上进行了扩展。本文将深入解析 Hadoop 序列化机制的原理、应用场景及优化策略。
Writable 接口核心原理
接口定义与作用
Writable 是 Hadoop 自定义的序列化接口,所有可序列化的类必须实现该接口:
1 | public interface Writable { |
- 设计目标:轻量级、高效的序列化,减少网络和磁盘 I/O 开销;
- 应用场景:MapReduce 中 Key/Value 类型(如
IntWritable、Text)必须实现 Writable。
核心实现类分析:IntWritable
IntWritable 是 Hadoop 对 int 类型的封装,示例代码如下:
1 | public class IntWritable implements Writable { |
特性:
- 固定长度存储(4 字节),无需额外元数据;
- 读写操作直接映射为 JDK 的
DataOutput/DataInput,性能高效。