Hadoop的RPC机制

远程过程调用协议(RPC),是一种通过网络从远程计算机程序上请求服务,而不需要了解网络技术的协议。它采用C/S模式,在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序变得简单。它的进程运行在不同的机器上。RPC在Hadoop上主要是用jdk的动态代理实现不同进程之间的方法调用。
下面在Centos7上写一个RPC通信的例子:
1、导入Hadoop相关的源码包。
2、创建一个协议端口

package RPCPackage01;

public interface ClientProtocal {
    public static final long versionID=12345l;/波段
    public String getMetaData(String filename);


}

3、服务器端实现协议端口

package RPCPackage01;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.Server;
public class RPCServer_NameNode implements ClientProtocal {
    public static void main(String[] args) throws Exception 
    {//设置协议,地址,端口号
    Server server=  new RPC.Builder(new Configuration()).setInstance(new RPCServer_NameNode()).setProtocol(ClientProtocal.class).setBindAddress("192.168.110.113").setPort(1234).build();
    server.start(); 
    }
    public String getMetaData(String filename)
    {
        System.out.println("正在找元数据信息running......");
        return filename+"的元数据信息找到了,给你.....";
    }

}

4、客户端通过代理调用服务器方法

package RPCPackage01;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

public class RPCClient_Hdfs {//客户端拿到代理对象
    public static void main(String[] args) throws Exception {
        ClientProtocal proxy = RPC.getProxy(ClientProtocal.class, 12345l,
                new InetSocketAddress("192.168.110.113",1234), new Configuration());
        String mataData = proxy.getMetaData("/words.txt");//代理对象调用server的方法
        String mataData=proxy.getMetaData("/words.txt");
        System.out.println(mataData);
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值