码迷,mamicode.com
首页 > 其他好文 > 详细

hadoop的RPC调用原理

时间:2015-08-17 23:31:44      阅读:324      评论:0      收藏:0      [点我收藏+]

标签:

  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

hadoop的RPC调用原理

标签:

原文地址:http://www.cnblogs.com/honeybusybee/p/4737811.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!