1. RPC(Remote Procedure Call Protocol)远程方法调用,客户端对服务端进行访问,服务端通过创建一个服务端的代理对象对服务端中的方法进行访问。要理解代理。
2.远程方法调用的实现有:webservice, hessian,RMI,但是他们与Hadoop的RPC的实现目的相同,都是通过客户端对服务端进行访问。
3. 工程进行建立后需要导入jar包
(1)E:hadoophadoop-2.6.0sharehadoopcommon文件夹中的jar。
(2)E:hadoophadoop-2.6.0sharehadoopcommonlib文件夹中的jar
(3)E:hadoophadoop-2.6.0sharehadoophdfs文件夹中的jar
(4)E:hadoophadoop-2.6.0sharehadoophdfslib文件夹中的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