根据他们的要求有两个不同的任务,因此可以通过希望更好地满足要求来解释两个不同的实现。 DataNode - > NameNode通信比DataNode-DataNode通信更复杂,从而证明了RPC的合理性。 DataNode-DataNode通信一方面非常简单,需要高效传输大量数据。可以说套接字是这种情况下最有效的解决方案。
根据JavaDoc,两者都有 DatanodeProtocol 和 InterDatanodeProtocol 源自org.apache.hadoop.ipc.VersionedProtocol。
话虽如此,基于文档,它看起来像DataNode(实现DatanodeProtocol)做得更多(连接到Namenode,其他数据节点和客户端)。其中DataNodes之间的通信(通过InterDataNodeProtocol)表示简单的通信。