`
bupt04406
  • 浏览: 348365 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

hadoop RPC

阅读更多
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 RPC机制详解》 在分布式计算领域,Hadoop是一个不可或缺的名字,它提供了一整套处理大数据的框架。在Hadoop中,远程过程调用(RPC)是核心组件之一,它使得节点间的通信变得高效且可靠。本文将深入探讨...

    hadoop rpc实例

    在分布式计算领域,Hadoop RPC(Remote Procedure Call)是一个至关重要的组件,它使得Hadoop生态系统中的各个服务能够相互通信,实现数据的高效处理和共享。在这个实例中,我们将深入探讨Hadoop RPC的工作原理、...

    Hadoop rpc源码

    Hadoop rpc源码是从Hadoop分离出的ipc,去掉了认证部分,附录使用文档.使用前请add lib包commons-logging-*.*.*.jar(我用的是1.0.4)和log4j-*.*.*.jar(我的1.2.13) 相关blog post: ...

    Hadoop_RPC详细分析.doc

    Hadoop RPC 详细分析 Hadoop RPC(Remote Procedure Call,远程过程调用)是 Hadoop 项目中的一个重要组件,用于实现分布式系统中的通信和数据交换。下面是对 Hadoop RPC 的详细分析。 RPCInterface Hadoop RPC ...

    hadooprpc机制&&将avro引入hadooprpc机制初探

    RPC(RemoteProcedureCall)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPCServer实现了一种抽象的RPC服务,同时提供Call队列。RPCServer作为服务提供者由两个...

    java操作hadoop的RPC,源码

    Java操作Hadoop的RPC(Remote Procedure Call)是分布式计算领域中的关键技术,它允许在不同的进程或机器之间进行远程调用,如同本地调用一样。Hadoop作为一个开源的大数据处理框架,其RPC机制是实现各个组件如...

    Hadoop Java接口+RPC代码实现

    1.java接口操作Hadoop文件系统(文件上传下载删除创建......2.RPC远程过程调用的java代码实现,便于理解Hadoop的RPC协议,具体使用方法可参考我的博客https://blog.csdn.net/qq_34233510/article/details/88142507

    Hadoop自己的Rpc框架使用Demo

    在分布式计算领域,Hadoop RPC(Remote Procedure Call)框架是一个至关重要的组件,它允许不同的进程之间进行通信,尤其是在大规模数据处理的场景下。Hadoop RPC是Hadoop生态系统中的基础服务,使得不同模块如HDFS...

    学习hadoop_源代码,RPC_部分

    ### Hadoop RPC 深入理解 #### 一、引言 随着大数据处理需求的日益增长,Apache Hadoop 作为一款流行的开源分布式计算框架,在处理海量数据方面展现出了极高的性能和灵活性。其中,Hadoop 的远程过程调用(RPC)...

    Hadoop的RPC通信程序

    ### Hadoop的RPC通信程序详解 #### 一、引言 在分布式系统中,远程过程调用(Remote Procedure Call, RPC)是一种重要的通信机制,它允许一台计算机上的程序调用另一台计算机上的子程序,而无需程序员了解底层网络...

    Hadoop里的RPC机制过程

    在Hadoop中,远程过程调用(Remote Procedure Call, RPC)是一种重要的通信机制,它允许分布式系统中的组件之间进行高效且便捷的交互。Hadoop的RPC机制基于Java的客户端-服务器模型,允许客户端调用服务器上的方法,...

    java_RPC_hadoop.zip

    在Java中模拟Hadoop的RPC通讯,主要是为了理解其连接和心跳机制,这是保证Hadoop集群稳定运行的关键部分。 RPC的核心思想是透明性,即客户端可以像调用本地方法一样调用远程服务,由RPC框架负责数据的序列化、网络...

    Hadoop学习笔记—3.HadoopRPC机制的使用

    RPC,即RemoteProcdureCall,中文名:远程过程调用;...(2)Hadoop的进程间交互都是通过RPC来进行的,比如Namenode与Datanode直接,Jobtracker与Tasktracker之间等。因此,可以说:Hadoop的运行就是建立在

    HDFS源码剖析带书签目录高清.zip

    《Hadoop 2.X HDFS源码剖析》以Hadoop 2.6.0源码为基础,深入剖析了HDFS 2.X中各个模块的实现细节,包括RPC框架实现、Namenode实现、Datanode实现以及HDFS客户端实现等。《Hadoop 2.X HDFS源码剖析》一共有5章,其中...

    hdfs源码.zip

    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启动、心跳以及执行名字节点指令...

    hadoop中RPC协议的小测试例子(吴超老师)

    在IT行业中,分布式计算系统的重要性日益凸显,而Hadoop作为其中的佼佼者,其核心组件之一就是远程过程调用(RPC,Remote Procedure Call)。RPC允许一个程序在某个网络中的计算机上执行另一个计算机上的程序,而...

Global site tag (gtag.js) - Google Analytics