zoukankan      html  css  js  c++  java
  • hadoop自带RPC的使用 代码demo

    引入的三方包

      <dependency>
           <groupId>org.apache.hadoop</groupId>
           <artifactId>hadoop-common</artifactId>
           <version>2.7.0</version>
      </dependency>

    引入的common包依赖了好多jar,建议用maven工程引入(不要copy到lib在add build path)。

     1.创建自己的协议版本

    import org.apache.hadoop.ipc.VersionedProtocol;
    public interface  ClientProtocol extends VersionedProtocol {
        public static final long versionID=1111L;
        String echo(String value);
    }

    2.实现协议

    import java.io.IOException;
    import org.apache.hadoop.ipc.ProtocolSignature;
    public class ClientProtocolImpl implements ClientProtocol {
    
        @Override
        public ProtocolSignature getProtocolSignature(String arg0, long arg1, int arg2) throws IOException {
            return new ProtocolSignature(ClientProtocol.versionID,null);
        }
    
        @Override
        public long getProtocolVersion(String arg0, long arg1) throws IOException {
            // TODO Auto-generated method stub
            return ClientProtocol.versionID;
        }
    
        @Override
        public String echo(String value) {
             return "hello "+value;
        }
    
    }

    3.创建并且启动server 

    import org.apache.hadoop.ipc.Server;
    
    import java.io.IOException;
    import org.apache.hadoop.HadoopIllegalArgumentException;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.ipc.RPC;
    public class MyRpcServer {
    
        public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
               Server server =new RPC.Builder(new Configuration()).setProtocol(ClientProtocol.class)
                        .setInstance(new ClientProtocolImpl()).setBindAddress("127.0.0.1").setPort(8787)
                        .setNumHandlers(5).build();
                server.start();
        }
    }

    4.创建并且启动client

    import java.io.IOException;
    import java.net.InetSocketAddress;
    
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.ipc.RPC;
    
    public class Client {
    
        public static void main(String[] args) throws IOException {
             ClientProtocol proxy = (ClientProtocol) RPC.getProxy(ClientProtocol.class,ClientProtocol.versionID,new InetSocketAddress("127.0.0.1",8787),new Configuration());
                String result = proxy.echo("123");
                System.out.println(result);  
        }
    }

    参考:https://www.cnblogs.com/dycg/p/rpc.html

  • 相关阅读:
    Anti-Aliasing SSAA MSAA MLAA SRAA 简介
    开源二维码QR CODE编码/解码 识别 库
    Shadow Map阴影贴图技术之探
    3D场景的制作步骤
    python实现对excel数据进行修改/添加
    selenium3 + python 爬虫
    Mock实现模拟python的对象
    Moco模拟服务器实现请求&响应 (一)
    python之Beautiflusoup操作
    python使用ddt模块对用例执行操作
  • 原文地址:https://www.cnblogs.com/yanghaolie/p/11680492.html
Copyright © 2011-2022 走看看