欢迎投稿

今日深度:

Hadoop RPC,

Hadoop RPC,


remote procedure call,远程过程调用
不同进程之间的方法调用
hadoop namenode、datanode等之间的通信依赖rpc

Server端

import java.io.IOException;
import org.apache.hadoop.HadoopIllegalArgumentException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Server;

public class RPCServer implements Biz{
    @Override
    public String sayHi(String name){
        return "hi:"+name;
    }
    public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
        Server server = new RPC.Builder(new Configuration())
                            .setProtocol(Biz.class)
                            .setInstance(new RPCServer())
                            .setBindAddress("192.168.1.104")    //绑定的地址
                            .setPort(9999)              //端口
                            .build();
        server.start();     //server一个main方法,一个进程
    }
}
client端

import java.io.IOException;
import java.net.InetSocketAddress;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
public class RPCClient {
    public static void main(String[] args) throws IOException {
        /**
         * 构建客户端代理的对象
         */
        Biz proxy = RPC.getProxy(Biz.class,100000, new InetSocketAddress("192.168.1.104",9999), new Configuration());
        String result = proxy.sayHi("hadoop");
        System.out.println(result);
        RPC.stopProxy(proxy);
    }
}
public interface Biz {
    public static final long versionID = 100000;
    public String sayHi(String name);
}
结果:
log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
hi:hadoop

首先启动server,然后启动client
不同进程,不同主机上之间的服务的通信。version应该一致

扩展下
可以在一台主机启动server,另一台主机启动client,现象比较明了

需要打jar包
运行
java -jar RPCServer.jar
java -jar RPCClient.jar

www.htsjk.Com true http://www.htsjk.com/Hadoop/40822.html NewsArticle Hadoop RPC, remote procedure call,远程过程调用 不同进程之间的方法调用 hadoop namenode、datanode等之间的通信依赖rpc Server端 import java.io.IOException; import org.apache.hadoop.HadoopIllegalArgumentException; im...
相关文章
    暂无相关文章
评论暂时关闭