Server 实现:
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.Server;
import org.apache.hadoop.net.NetUtils;
public class rpctestServer {
public static final int DEFAULT_PORT = 8020;
/** RPC server */
private Server server;
/** RPC server address */
private InetSocketAddress serverAddress = null;
public void TestServer(){
String address = "127.0.0.1";
InetSocketAddress socAddr = NetUtils.createSocketAddr(address, DEFAULT_PORT);
// create rpc server
TestProtocolImpl testProtocolImpl1 = new TestProtocolImpl();
int handlerCount = 2;
Configuration conf = new Configuration();
try{
server = RPC.getServer(testProtocolImpl1, socAddr.getHostName(), socAddr.getPort(), handlerCount, false, conf);
this.serverAddress = this.server.getListenerAddress();
this.server.start(); //start RPC server
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] args){
new rpctestServer().TestServer();
while(true){
}
// System.out.println("server close!");
}
}
Client 实现:
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.net.NetUtils;
public class rpctestClient {
public static final int DEFAULT_PORT = 8020;
public TestProtocol namenode = null;
public void TestClient(){
// connect to name node
String address = "127.0.0.1";
InetSocketAddress socAddr = NetUtils.createSocketAddr(address, DEFAULT_PORT);
Configuration conf = new Configuration();
try {
namenode = (TestProtocol)RPC.waitForProxy(TestProtocol.class, TestProtocol.versionID,socAddr,conf);
namenode.sayHello();
System.out.println(namenode.getName());
namenode.sendMessage("I like play basketball!!! ");
RPC.stopProxy(namenode);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args){
new rpctestClient().TestClient();
}
}
TestProtocol 接口:
import org.apache.hadoop.ipc.VersionedProtocol;
public interface TestProtocol extends VersionedProtocol {
public static final long versionID = 19L;
public void sayHello();
public String getName();
public void sendMessage(String message);
}
TestProtocol 接口实现:
import java.io.IOException;
public class TestProtocolImpl implements TestProtocol{
String serverName = "success Test";
public long getProtocolVersion(String protocol, long clientVersion) throws IOException {
if (protocol.equals(TestProtocol.class.getName())) {
return TestProtocol.versionID;
}else {
throw new IOException("Unknown protocol to name node: " + protocol);
}
}
public void sayHello(){
System.out.println("hello server!!");
}
public String getName(){
System.out.println("client get server Name");
return serverName;
}
public void sendMessage(String message){
System.out.println("get message: "+message);
}
}
分享到:
相关推荐
《Hadoop RPC机制详解》 在分布式计算领域,Hadoop是一个不可或缺的名字,它提供了一整套处理大数据的框架。在Hadoop中,远程过程调用(RPC)是核心组件之一,它使得节点间的通信变得高效且可靠。本文将深入探讨...
在分布式计算领域,Hadoop RPC(Remote Procedure Call)是一个至关重要的组件,它使得Hadoop生态系统中的各个服务能够相互通信,实现数据的高效处理和共享。在这个实例中,我们将深入探讨Hadoop RPC的工作原理、...
Hadoop rpc源码是从Hadoop分离出的ipc,去掉了认证部分,附录使用文档.使用前请add lib包commons-logging-*.*.*.jar(我用的是1.0.4)和log4j-*.*.*.jar(我的1.2.13) 相关blog post: ...
Hadoop RPC 详细分析 Hadoop RPC(Remote Procedure Call,远程过程调用)是 Hadoop 项目中的一个重要组件,用于实现分布式系统中的通信和数据交换。下面是对 Hadoop RPC 的详细分析。 RPCInterface Hadoop RPC ...
RPC(RemoteProcedureCall)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPCServer实现了一种抽象的RPC服务,同时提供Call队列。RPCServer作为服务提供者由两个...
Java操作Hadoop的RPC(Remote Procedure Call)是分布式计算领域中的关键技术,它允许在不同的进程或机器之间进行远程调用,如同本地调用一样。Hadoop作为一个开源的大数据处理框架,其RPC机制是实现各个组件如...
1.java接口操作Hadoop文件系统(文件上传下载删除创建......2.RPC远程过程调用的java代码实现,便于理解Hadoop的RPC协议,具体使用方法可参考我的博客https://blog.csdn.net/qq_34233510/article/details/88142507
在分布式计算领域,Hadoop RPC(Remote Procedure Call)框架是一个至关重要的组件,它允许不同的进程之间进行通信,尤其是在大规模数据处理的场景下。Hadoop RPC是Hadoop生态系统中的基础服务,使得不同模块如HDFS...
### Hadoop RPC 深入理解 #### 一、引言 随着大数据处理需求的日益增长,Apache Hadoop 作为一款流行的开源分布式计算框架,在处理海量数据方面展现出了极高的性能和灵活性。其中,Hadoop 的远程过程调用(RPC)...
### Hadoop的RPC通信程序详解 #### 一、引言 在分布式系统中,远程过程调用(Remote Procedure Call, RPC)是一种重要的通信机制,它允许一台计算机上的程序调用另一台计算机上的子程序,而无需程序员了解底层网络...
在Hadoop中,远程过程调用(Remote Procedure Call, RPC)是一种重要的通信机制,它允许分布式系统中的组件之间进行高效且便捷的交互。Hadoop的RPC机制基于Java的客户端-服务器模型,允许客户端调用服务器上的方法,...
在Java中模拟Hadoop的RPC通讯,主要是为了理解其连接和心跳机制,这是保证Hadoop集群稳定运行的关键部分。 RPC的核心思想是透明性,即客户端可以像调用本地方法一样调用远程服务,由RPC框架负责数据的序列化、网络...
RPC,即RemoteProcdureCall,中文名:远程过程调用;...(2)Hadoop的进程间交互都是通过RPC来进行的,比如Namenode与Datanode直接,Jobtracker与Tasktracker之间等。因此,可以说:Hadoop的运行就是建立在
《Hadoop 2.X HDFS源码剖析》以Hadoop 2.6.0源码为基础,深入剖析了HDFS 2.X中各个模块的实现细节,包括RPC框架实现、Namenode实现、Datanode实现以及HDFS客户端实现等。《Hadoop 2.X HDFS源码剖析》一共有5章,其中...
1.2.1 Hadoop RPC接口 4 1.2.2 流式接口 20 1.3 HDFS主要流程 22 1.3.1 HDFS客户端读流程 22 1.3.2 HDFS客户端写流程 24 1.3.3 HDFS客户端追加写流程 25 1.3.4 Datanode启动、心跳以及执行名字节点指令...
在IT行业中,分布式计算系统的重要性日益凸显,而Hadoop作为其中的佼佼者,其核心组件之一就是远程过程调用(RPC,Remote Procedure Call)。RPC允许一个程序在某个网络中的计算机上执行另一个计算机上的程序,而...