Hadoop RPC简单实例

Posted z.arbitrary

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hadoop RPC简单实例相关的知识,希望对你有一定的参考价值。

1、导入Hadoop-Common-2.6.0.jar导入工程,里面的IPC实现RPC需要的文件。

2、服务器端

 (1)服务接口
package com.neu.rpc.server;

/**
 * Created by apple on 16/6/26.
 */
public interface LoginServiceInterface {
    public static final long versionID = 1L;

    public String login(String username, String password);
}

(2)服务实现

package com.neu.rpc.server;


/**
 * Created by apple on 16/6/26.
 */
public class LoginServiceImpl implements LoginServiceInterface {
    @Override
    public String login(String username, String password) {
        return username + " login success";
    }
}

(3)RPC服务端,将上述服务进行发布,监控RPC客户端发来的请求

package com.neu.rpc.server;

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

import java.io.IOException;

/**
 * Created by apple on 16/6/26.
 */
public class Starter {
    public static void main(String[] args) throws IOException {
        RPC.Builder build = new RPC.Builder(new Configuration());
        build.setBindAddress("localhost").setPort(10000).setProtocol(LoginServiceInterface.class).setInstance(new LoginServiceImpl());
        RPC.Server server = build.build();
        server.start();
    }
}

 

3、客户端

 (1)RPC服务接口【问题:因为服务协议是包名加类名,因此客户端的服务接口的包名要与服务端接口的包名一致
package com.neu.rpc.server;

/**
 * Created by apple on 16/6/26.
 */
public interface LoginServiceInterface {
    public static final long versionID = 1L;

    public String login(String username, String password);
}

(2)RPC客户端请求服务

public class LoginController {
    public static void main(String[] args) throws IOException {
        LoginServiceInterface proxy= RPC.getProxy(LoginServiceInterface.class,1L,new InetSocketAddress("localhost",10000),new Configuration());
        String msg=proxy.login("xiaoming","123123");
        System.out.println(msg);
    }
}

4、实验结果

com.intellij.rt.execution.application.AppMain com.neu.rpc.client.LoginController
2016-06-28 00:23:36,542 WARN  [main] util.NativeCodeLoader (NativeCodeLoader.java:<clinit>(62)) - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
xiaoming login success

Process finished with exit code 0

  

 

以上是关于Hadoop RPC简单实例的主要内容,如果未能解决你的问题,请参考以下文章

3 weekend110的hadoop中的RPC框架实现机制 + hadoop中的RPC应用实例demo

Hadoop RPC通信机制

Hadoop RPC远程过程调用源码解析及实例

自编写RPC通信实例解析HadoopRPC通信原理

自编写RPC通信实例解析HadoopRPC通信原理

markdown Hadoop原生的基于Writable Sequence列化的RPC框架应用实例