• 大数据学习——hadoop的RPC框架


    项目结构

    服务端代码 test-hadoop-rpc

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.cyf</groupId>
        <artifactId>test-hadoop-rpc</artifactId>
        <version>1.0-SNAPSHOT</version>
        <packaging>war</packaging>
    
        <name>test-hadoop-rpc Maven Webapp</name>
        <!-- FIXME change it to the project's website -->
        <url>http://www.example.com</url>
    
        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <maven.compiler.source>1.7</maven.compiler.source>
            <maven.compiler.target>1.7</maven.compiler.target>
        </properties>
        <dependencies>
            <dependency>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-common</artifactId>
                <version>2.6.4</version>
            </dependency>
        </dependencies>
    </project>
    ClientNameNodeProtocal.java
    package cn.itcast.rpc.protocal;
    
    /**
     * Created by Administrator on 2019/1/3.
     */
    public interface ClientNameNodeProtocal {
        public static final long versionID = 1L;
    
        public String getMetadata(String path);
    }
    NameNode.java
    package cn.itcast.rpc.client;
    
    import cn.itcast.rpc.protocal.ClientNameNodeProtocal;
    
    /**
     * Created by Administrator on 2019/1/3.
     */
    public class NameNode implements ClientNameNodeProtocal {
        @Override
        public String getMetadata(String path) {
    
            return path + "2 {blk_1,blk_2} {blk_1:mini2,mini3}";
        }
    }
    ServerPublisher.java

    package cn.itcast.rpc.client;
    
    
    import cn.itcast.rpc.protocal.ClientNameNodeProtocal;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.ipc.RPC;
    
    import java.io.IOException;
    
    /**
     * Created by Administrator on 2019/1/3.
     */
    public class ServerPublisher {
        public static void main(String[] args) throws IOException {
            RPC.Builder builder = new RPC.Builder(new Configuration());
    
            builder.setBindAddress("localhost").setPort(8787).setProtocol(ClientNameNodeProtocal.class).setInstance(new NameNode());
            RPC.Server server = builder.build();
            server.start();
        }
    }

    客户端代码

    test-hadoop-rpc-client

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.cyf</groupId>
      <artifactId>test-hadoop-rpc-client</artifactId>
      <version>1.0-SNAPSHOT</version>
      <packaging>war</packaging>
    
      <name>test-hadoop-rpc-client Maven Webapp</name>
      <!-- FIXME change it to the project's website -->
      <url>http://www.example.com</url>
    
      <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>org.apache.hadoop</groupId>
          <artifactId>hadoop-common</artifactId>
          <version>2.6.4</version>
        </dependency>
      </dependencies>
    
    </project>
    ClientNameNodeProtocal.java

    package cn.itcast.rpc.protocal;
    
    /**
     * Created by Administrator on 2019/1/3.
     */
    public interface ClientNameNodeProtocal {
        public static final long versionID = 1L;
    
        public String getMetadata(String path);
    }
    HdfsClient.java

    package cn.itcast.rpc.client;
    
    import cn.itcast.rpc.protocal.ClientNameNodeProtocal;
    import org.apache.hadoop.conf.Configuration;
    import org.apache.hadoop.ipc.RPC;
    
    import java.io.IOException;
    import java.net.InetSocketAddress;
    
    /**
     * Created by Administrator on 2019/1/3.
     */
    public class HdfsClient {
        public static void main(String[] args) throws IOException {
    
            ClientNameNodeProtocal nameNode = RPC.getProxy(ClientNameNodeProtocal.class, 1L, new InetSocketAddress("localhost", 8787), new Configuration());
            String metaData = nameNode.getMetadata("a.txt");
            System.out.println(metaData);
    
        }
    }
  • 相关阅读:
    runc create container 流程分析
    cri-o pod 创建源码分析
    hyperstart 容器创建流程分析
    MIT jos 6.828 Fall 2014 训练记录(lab 4)
    python 邮件发送 脚本
    jvm: 理解gc日志
    jvm:垃圾收集器
    GC 垃圾收集
    jvm结构
    Java transient关键字使用小记
  • 原文地址:https://www.cnblogs.com/feifeicui/p/10217404.html
Copyright © 2020-2023  润新知