【hadoop】 2005-RPC协议
来源:互联网 发布:淘宝买家微淘怎么发布 编辑:程序博客网 时间:2024/06/14 05:04
1、RPC: 远程调用协议。不同进程之间的远程方法调用。
![](http://img.blog.csdn.net/20150403222203062?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hlbmZ1bGk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](http://img.blog.csdn.net/20150403222258563?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc2hlbmZ1bGk=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](file:///D:/Users/shenfl/AppData/Local/Temp/enhtmlclip/Image(28).png)
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。
例如: 不同系统之间的交互,如WebService
2、以NameNode和DataNode通信为例来说明节点之间的调用
3、通过实例演示RPC通信过程
3.1 新建RPCServer
3.2 新建RPCClient
3.3 RPCServer和RPCClient分布在不同的进程下
3.4 借助Hadoop的RPC工具类实现
3.5 RPCServer 和RPCClient 分别部署到不同的机器上,然后运行RPCServer ,在通过RPCClient远程调用
package rpc;
/**
*
* @author shenfl
*
*/
public interface ServerProtocol{
public static final long versionID = 9876L;
public String findMetaData(String fileName);
}
package 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.RPC.Server;
/**
*
* @author shenfl
*
*/
public class RPCServer implements ServerProtocol {
@Override
public String findMetaData(String fileName ) {
System. out.println("find Meta in NameNode!" );
return fileName + " already is found, " + fileName
+ ", 3,{blk_001,blk_002}";
}
public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
/**
* use jdk proxy
*/
Server server = new RPC.Builder( new Configuration()).setInstance( new RPCServer())
.setProtocol(ServerProtocol. class)
.setBindAddress( "192.168.2.31")
.setPort(9999).build();
server.start();
}
}
package rpc;
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
/**
* @author shenfl
*
*/
public class RPCClient {
public static void main(String[] args) throws IOException {
int port = 9999;
String hostName = "192.168.2.31";
/**
* get proxy object by hostName and port
*/
ServerProtocol proxy = RPC. getProxy(ServerProtocol.class, 9876L, new InetSocketAddress(hostName,port ), new Configuration());
/**
* call real method
*/
String metaData = proxy.findMetaData( "/readme01.txt");
System. out.println(metaData );
RPC. stopProxy(proxy);
}
}
4、采用图模式描述RPC的远程方法调用
![](file:///D:/Users/shenfl/AppData/Local/Temp/enhtmlclip/Image(28).png)
0 0
- 【hadoop】 2005-RPC协议
- hadoop RPC协议之WritableRpcEngine
- Hadoop RPC协议之 ProtobufRpcEngine
- Hadoop 2.2 RPC 协议源码分析
- Hadoop源码解析之RPC协议
- Hadoop之RPC协议的使用
- 学习Hadoop第九课(理解RPC协议)
- Hadoop之RPC简单使用(远程过程调用协议)
- hadoop RPC
- hadoop RPC
- Hadoop RPC
- Hadoop RPC
- Hadoop RPC
- rpc hadoop
- Hadoop RPC
- Hadoop RPC
- hadoop rpc
- Hadoop RPC
- 黑马程序员_日记20_JavaString概述
- [转]百万级访问网站前期的技术准备
- 【hadoop】 2004-hdfs datanode容错
- ARM-64学习(一)
- 安卓实习期间整理知识点(三)
- 【hadoop】 2005-RPC协议
- 关于2048小游戏项目的一些心得
- 求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。Java实现
- Bar Codes - POJ 1173 dp
- [LeetCode 93]Restore IP Addresses
- 封装数据加载方法
- 算法学习之路-归并排序
- 常用linux命令
- 六爻预测等各种预测术的本质探讨之随机数猜想