zoukankan      html  css  js  c++  java
  • Hadoop RPC简介

    导入依赖

            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-client</artifactId>
                <version>2.7.7</version>
            </dependency>
    

    编写Hadoop RPC协议

    public interface ClientProtocol {
        long versionID = 1234L;
    
        /**
         * 创建目录
         */
        void mkDir(String path);
    }
    

    编写Hadoop RPC 服务端

    public class NameNodeRpcServer implements ClientProtocol {
    
        /**************************************************************
         * TODO_ZH https://www.cnblogs.com/starzy
         * @Description: 创建目录
         */
        public void mkDir(String path) {
            System.out.println("服务器端:" + path);
        }
        /**************************************************************
         * TODO_ZH https://www.cnblogs.com/starzy
         * @Description: 构建Hadoop RPC并启动
         */
        public static void main(String[] args) throws IOException {
    
            /************************************************************
             * TODO_ZH starzy https://www.cnblogs.com/starzy
             *  注释:构建 Hadoop RPC 服务端
             *  使用构建者模式进行构建 Hadoop RPC
             */
            Server server = new RPC.Builder(new Configuration())
                    .setBindAddress("localhost")
                    .setPort(9999)
                    .setProtocol(ClientProtocol.class)
                    .setInstance(new NameNodeRpcServer())
                    .build();
            System.out.println("服务端 Hadoop RPC 启动");
    
            /**************************************************************
             * TODO_ZH starzy https://www.cnblogs.com/starzy
             * 注释:启动服务端Hadoop RPC
             */
            server.start();
        }
    }
    

    编写Hadoop RPC 客户端调用服务端

    /***************************************************************
     *TODO-ZH starzy https://www.cnblogs.com/starzy
     * 注释: RPC 客户端
     */
    public class HDFSClient {
        public static void main(String[] args) throws IOException {
            /*****************************************************************************************************
             *TODO-ZH starzy https://www.cnblogs.com/starzy
             * 注释: 获取服务端代理(客户端)
             */
            ClientProtocol namenode = RPC.getProxy(ClientProtocol.class,
                    1234L,
                    new InetSocketAddress("localhost", 9999),
                    new Configuration());
    
            /***************************************************************
             *TODO-ZH starzy https://www.cnblogs.com/starzy
             * 注释:调用服务端代码
             */
            namenode.mkDir("/user/local/test");
        }
    }
    

    Hadoop RPC特点

    1. RPC指不同进程之间方法的调用,分别为客户端和服务端,并且是客户端调用服务端的方法,方法执行是在服务端

    2. 如果实现RPC调用,必须实现RPC协议且协议中必须定义versionID

    3. 服务端必须实现RPC协议

    4. 凡是jps命令看到的服务都是RPC服务端

    5. 构建RPC服务端通过构建者模式进行创建

      Server server = new RPC.Builder(new Configuration())
                      .setBindAddress("localhost")
                      .setPort(9999)
                      .setProtocol(ClientProtocol.class)
                      .setInstance(new NameNodeRpcServer())
                      .build();
      
    6. RPC客户端通过RPC代理进行获取

      ClientProtocol namenode = RPC.getProxy(ClientProtocol.class,
                      1234L,
                      new InetSocketAddress("localhost", 9999),
                      new Configuration());
      

    详细实现代码参见:https://gitee.com/starzy/learn-hadoop

  • 相关阅读:
    [转]对Lucene PhraseQuery的slop的理解
    Best jQuery Plugins of 2010
    15 jQuery Plugins To Create A User Friendly Tooltip
    Lucene:基于Java的全文检索引擎简介
    9 Powerful jQuery File Upload Plugins
    Coding Best Practices Using DateTime in the .NET Framework
    Best Image Croppers ready to use for web developers
    28 jQuery Zoom Plugins Creating Stunning Image Effect
    VS2005 + VSS2005 实现团队开发、源代码管理、版本控制(转)
    禁止状态栏显示超链
  • 原文地址:https://www.cnblogs.com/starzy/p/14400300.html
Copyright © 2011-2022 走看看