2015-11-24 41 views

回答

2

Java序列化需要在序列化格式中的对象的每个实例之前加上前缀类的哈希值。因此,要读取对象,您不需要指定类名称。这会导致读取对象的开销,因为每个对象都可能是不同类的实例。

在Hadoop序列化中,我们在检索它时指定了类名。因此,由于我们已经知道我们正在检索什么,因此不需要前缀。因此我们设置了InputFormat。这在RPC的各个方面提高了速度和性能。

+0

感谢您的回应,这真的很有帮助。 – rraghuva

3

在Hadoop中,进程间通信是使用远程过程调用(RPC)构建的。 RPC协议使用序列化在发送者处将消息呈现为二进制流,并且将在接收器处将其从二进制流反序列化为原始消息。

对于Hadoop的有效性,序列化/反序列化过程应该进行优化,因为群集中的节点之间会发生大量的远程调用。所以序列化格式应该是fast, compact, extensible and interoperable。由于这个原因,Hadoop框架提供了一个IO类来替换Java原始数据类型。例如IntWritbale for int, LongWritable for long, Text for String etc.

有关更多详细信息,请参阅Hadoop权威指南第4版。

从Apache的website可写的目的是引述:

Serializable对象实现简单,高效,序列化协议的基础上的DataInput和DataOutput中。

+0

感谢您的回应,这真的很有帮助。 – rraghuva

相关问题