数据节点与namenode之间的通信使用org.apache.hadoop.ipc包;而数据节点之间的通信则基于简单的套接字通信。
这种设计背后的动机是什么?
发布于 2012-03-27 04:38:11
根据它们的需求,有两个不同的任务,所以两个不同的实现可以通过期望来解释,以更好地满足需求。
DataNode -> NameNode通信比DataNode-DataNode通信更复杂,因此有理由使用DataNode。
DataNode-DataNode通信非常简单,需要高效地传输大量数据。可以说,对于这种情况,套接字是最有效的解决方案。
发布于 2012-03-27 02:55:04
根据JavaDoc的说法,DatanodeProtocol和InterDatanodeProtocol都是从org.apache.hadoop.ipc.VersionedProtocol派生出来的。
话虽如此,根据文档,看起来DataNode (它实现了DatanodeProtocol)做得更多(到名称节点、其他数据节点和客户端的连接)。其中,as DataNodes之间的通信(通过InterDataNodeProtocol)表示简单的通信。
https://stackoverflow.com/questions/9875093
复制相似问题