hadoopRPC 实现代码

repc针对接口进行实现和调用

定义接口:

package hadoopRpcinfo;

public interface HadoopServiceInfo {
    
  public static final long versionID=1L;
  public String getNameNodeData(String path);
    
}

server端发布应用:
    1.接口实现

  

package hadoopRPCService;

import hadoopRpcinfo.HadoopServiceInfo;

public class HadoopServiceProtocol implements HadoopServiceInfo {


    public String getNameNodeData(String path) {
          return path+"this is your path";
    }

}

2、发布应用

package hadoopRPCService;

import java.io.IOException;

import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Builder;

import hadoopRpcinfo.HadoopServiceInfo;

public class HadoopServicePublishUtil {
    public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
        Builder builder =new RPC.Builder(new Configuration());
        builder.setBindAddress("localhost")
        .setPort(8888)
        .setProtocol(HadoopServiceInfo.class)
        .setInstance(new HadoopServiceProtocol());        
       org.apache.hadoop.ipc.RPC.Server server=     builder.build();
       server.start();
        
    }

}

3、客户端调用  

package hadoopRPCClient;

import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

import hadoopRpcinfo.HadoopServiceInfo;

public class Client {
    public static void main(String[] args) throws IOException {
       HadoopServiceInfo hinfo=    RPC.getProxy(HadoopServiceInfo.class, 1L, new InetSocketAddress("localhost", 8888), new Configuration());
         String str=  hinfo.getNameNodeData("/abc");
         System.out.println(str);
    }

}
 

  

猜你喜欢

转载自blog.csdn.net/XiaoqiangNan/article/details/85230756