为什么HDFS使用协议缓冲区而不是Java序列化API进行序列化?

时间:2019-04-10 12:42:39

标签: java hadoop serialization hdfs protocol-buffers

为什么HDFS不使用协议缓冲区而不使用Java序列化API?

如果我想通过Java序列化将对象从数据节点发送到另一个数据节点怎么办?

我尝试了几件事,但遇到以下错误: java.io.WriteAbortedException:编写中止; java.io.NotSerializableException:java.lang.Thread

1 个答案:

答案 0 :(得分:0)

因为带有外部模式定义的格式(例如协议缓冲区)比内置Java序列化(生成一个非常冗长的文件)更具空间效率。

HDFS可以使用不同的格式来存储数据。通常最好选择能提供最佳空间效率而又不会占用过多CPU的格式。某些格式是为特定目标而设计的,有助于进行数据处理:

java.io.NotSerializableException: java.lang.Thread异常表明您正在尝试序列化未实现Serializable的{​​{3}}