hadoop的RPC

                             hadoop rpc简单helloworld实现

1.rpc获取到服务器server
  Server server = RPC.getServer(new ServerInstanceImpl(),PRC_ADDRESS,PRC_PORT,
                  new Configuration());
2.rpc启动服务器
  server.start();
3.创建服务器实例接口
import org.apache.hadoop.ipc.VersionedProtocol;
public interface ServerInstance extends VersionedProtocol {
public static final long version = 123455L;
public String Hello(String name);

}
4.创建服务器端的实例 ServerInstanceImpl
  public class ServerInstanceImpl implements ServerInstance {

public String Hello(String name){
System.out.println("发生在服务器端的......");
return "hello"+ name;
}
@Override
public long getProtocolVersion(String protocol, long clientVersion)
throws IOException {
// TODO Auto-generated method stub
return ServerInstance.version;
}

}
5.创建rpc客户端
ServerInstance proxy =
(ServerInstance)RPC.waitForProxy( ServerInstance.class,
server.ServerInstance.version,new
InetSocketAddress(RPCServer.PRC_ADDRESS, RPCServer.PRC_PORT),
new Configuration());
6.调用服务器实例对象方法
String result = proxy.Hello("liyu");
7.关闭rpc代理
RPC.stopProxy(proxy);
8.应用jps 在cmd中可以看见rpc服务器启动,rpc客户端在客户端运行完之后关闭了,故不能看见rpc的客户端进程。
总结:hadoop的rpc是一种cs模式的下的框架,rpc是远程调用协议。hadoop的namenode,secondenamenode,datanode,jobtrack,tasktrack均是服务端,namenode中是一个类似于tomcat的容器,jetty.
----------------------------------

猜你喜欢

转载自hadasione.iteye.com/blog/2110576