为什么Hadoop对于datanode和datanode namenode之间的通信有不同的通信机制?

为什么Hadoop对于datanode和datanode namenode之间的通信有不同的通信机制?,hadoop,Hadoop,datanode namenode通信使用org.apache.hadoop.ipc包;而数据节点间的通信是基于简单的套接字通信 这种设计背后的动机是什么?根据JavaDoc的说法,两者都源自org.apache.hadoop.ipc.VersionedProtocol 话虽如此,从文档来看,DataNode(实现DatanodeProtocol)做得更多(连接到Namenode、其他数据节点和客户机)。其中,数据节点之间的通信(通过InterDataNodeProtocol)表示简单的通信。根

datanode namenode通信使用org.apache.hadoop.ipc包;而数据节点间的通信是基于简单的套接字通信


这种设计背后的动机是什么?

根据JavaDoc的说法,两者都源自org.apache.hadoop.ipc.VersionedProtocol


话虽如此,从文档来看,DataNode(实现DatanodeProtocol)做得更多(连接到Namenode、其他数据节点和客户机)。其中,数据节点之间的通信(通过InterDataNodeProtocol)表示简单的通信。

根据它们的需求有两个不同的任务,因此可以通过更好地满足需求来解释两个不同的实现
DataNode->NameNode通信比DataNode DataNode通信更复杂,因此证明RPC是正确的

DataNode DataNode通信一方面非常简单,需要高效传输大量数据。可以说,对于这种情况,套接字是最有效的解决方案

最好是在hadoop邮件列表上,特别是在开发者列表上询问这样的问题……不确定为什么有人认为这个回答没有帮助,但让我解释一下。问题是Datanode namenode通信使用org.apache.hadoop.ipc packge,我只是指出发布的两个通信OP都基于同一个包。看起来拥有相同的包与DataNode和Namenode之间的通信类型无关。