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

  • 相关阅读:
    PHPStorm--美化
    Laravel5.1 模型--关联关系(复杂)
    HTML5 getUserMedia/AudioContext 打造音谱图形化
    如何在终端实时展现当前运行的git分支
    关于ionic的跨域问题
    ionic插件安装与卸载
    虚拟机调试ionic项目
    ionic双击退出键退出APP
    npm install 镜像
    对Date的扩展,将 Date 转化为指定格式的String
  • 原文地址:https://www.cnblogs.com/yanghaolie/p/11680492.html
Copyright © 2011-2022 走看看