Hadoop RPC整个使用流程——以DataNode向NameNode注册为例
Hadoop RPC整个使用流程——以DataNode向NameNode注册为例 在HDFS实现过程中DataNode class中有一个成员变量namenode,其类型是DatanodeProtocol。namenode可以看作是远程NameNode服务器的一个代理,因为NameNode本身也是DatanodeProtocol接口的具体实现;DataNode通过调用namenode对象的方法与远程NameNode进行交互。 下面看一下namenode变量在DataNode当中是如何初始化的: 首先DataNode通过调用RPC.waiForProxy方法完成namenode的初始化过程,具体实现看下面的代码: this.namenode = (DatanodeProtocol) RPC.waitForProxy( DatanodeProtocol.class, DatanodeProtocol.versionID, nameNodeAddr, conf); 通过上面的代码可以看出,具体namenode是如何与远程的NameNode进行连接的需要通过查阅RPC.waitForProxy(...)来查看。waitForProxy通过RPC内部的一系列方法调用,最终通过下面的getProxy方法来实现: public static VersionedProtocol getProxy(