Hadoop中的RPC调用原理

本文深入探讨了Hadoop RPC(Remote Procedure Call Protocol)的实现原理,包括客户端和服务端如何通过创建代理对象和接口调用来进行远程方法调用。详细介绍了构建RPCClient和RPCServer的过程,并提供了具体代码示例。同时,阐述了如何打包并运行生成的jar文件,以及在Linux环境下执行jar文件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     1. RPC(Remote Procedure Call Protocol)远程方法调用,客户端对服务端进行访问,服务端通过创建一个服务端的代理对象对服务端中的方法进行访问。要理解代理。 

     2.远程方法调用的实现有:webservice, hessian,RMI,但是他们与Hadoop的RPC的实现目的相同,都是通过客户端对服务端进行访问。

     3.  工程进行建立后需要导入jar包

(1)E:\hadoop\hadoop-2.6.0\share\hadoop\common文件夹中的jar。

(2)E:\hadoop\hadoop-2.6.0\share\hadoop\common\lib文件夹中的jar

(3)E:\hadoop\hadoop-2.6.0\share\hadoop\hdfs文件夹中的jar

(4)E:\hadoop\hadoop-2.6.0\share\hadoop\hdfs\lib文件夹中的jar


5. 下面上代码来对整个过程进行理解。

客户端代码

package com.jn.hadoop.rpc;

import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

public class RPCClient {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
//		利用代理获取一个服务端代理
		RPCServer proxy = RPC.getProxy(RPCServer.class, 456435L, new InetSocketAddress("192.168.40.235", 9999),new Configuration());
//		调用接口sayHello
		String result = proxy.sayHello("jiangning");
		System.out.println(result);
	}

}


服务端代码

package com.jn.hadoop.rpc;
/**
 * 
 * @author jiangning
 *	服务端接口
 */
public interface RPCServer {
//  必须有这个versionID否则会报错
	public static final long versionID = 89899L;
//	接口,java的代理必须有接口
	public String sayHello(String name);
}

package com.jn.hadoop.rpc;

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.Server;
/**
 * 服务端接口实现类
 * @author jiangning
 *
 */
public class RPCServerImpl implements RPCServer{

	public String sayHello(String name){
		return "goodluck " + name;
	}
	public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
//		获取Configuration对象
		Configuration conf = new Configuration();
//		创建服务端服务
		Server server = new RPC.Builder(conf).setProtocol(RPCServer.class).setInstance(new RPCServerImpl()).setBindAddress("192.168.40.235").setPort(9999).build();
//		启动服务
		server.start();
	}

}

打包进行运行

客户端打包能够直接运行的jar

(1) 在工程上点击右键,选择Export

(2) 点击“RunnableJAR file”


(3) 选择Main方法的类。选择jar包生成的目录,选择“Extractrequired libraries into generated JAR” 点击“Finish”


完成。

 

将生成的jar包上传到Linux

 

执行下面命令:java -jar RPCClient.jar

 



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值