美文网首页
(初级)HDFS中的RPC

(初级)HDFS中的RPC

作者: 呆老板 | 来源:发表于2017-07-24 15:04 被阅读0次

RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

hadoop的整个体系结构就是构建在RPC之上的(见org.apache.hadoop.ipc)

package rpc;

import org.apache.hadoop.ipc.VersionedProtocol;

public interface MyBizable extends VersionedProtocol{

long VERSION = 2345245L;

public abstract String hello(String name);

}

--------------------------------------------------------

package rpc;

import java.io.IOException;

import org.apache.hadoop.ipc.VersionedProtocol;

public class MyBiz implements VersionedProtocol, MyBizable{

/* (non-Javadoc)

* @see rpc.MyBizable#hello(java.lang.String)

*/

@Override

public String hello(String name) {

System.out.println("服务器端,我被调用了");

return "hello "+name;

}

/* (non-Javadoc)

* @see rpc.MyBizable#getProtocolVersion(java.lang.String, long)

*/

@Override

public long getProtocolVersion(String protocol, long clientVersion) throws IOException {

return VERSION;

}

}

--------------------------------------------------------

package rpc;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.ipc.RPC;

import org.apache.hadoop.ipc.RPC.Server;

public class MyServer {

static final String ADDRESS="localhost";

static final int PORT=12345;

public static void main(String[] args) throws Exception {

/**

* @param instance the instance whose methods will be called此实例中的方法会被调用

* @param conf the configuration to use

* @param bindAddress the address to bind on to listen for connection用于监听链接的地址

* @param port the port to listen for connections on

* @param numHandlers the number of method handler threads to run

* @param verbose whether each call should be logged

*/

Server server = RPC.getServer(new MyBiz(), ADDRESS, PORT, new Configuration());

server.start();

}

}

--------------------------------------------------------

package rpc;

import java.net.InetSocketAddress;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.ipc.RPC;

public class MyClient {

public static void main(String[] args) throws Exception{

/**

* 构造一个客户端代理对象,该对象实现了命名的协议

* 代理对象会与指定地址的服务端通话

*/

MyBizable proxy = (MyBizable)RPC.waitForProxy(

MyBizable.class,//Class protocol,

MyBizable.VERSION,

new InetSocketAddress(MyServer.ADDRESS,MyServer.PORT),

new Configuration());

//hello()的调用,在RPC的环境下,是发生在server端,而非client端

String result = proxy.hello("yanxin");

System.out.println("客户端:"+result);

//关闭网络连接

RPC.stopProxy(proxy);

}

}

相关文章

  • (初级)HDFS中的RPC

    RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有...

  • HDFS-1.x、2.x的RPC接口

    HDFS中的主要RPC接口。 架构图参考前文HDFS1.x、2.x架构图。 HDFS 1.x ClientProt...

  • CDH常用端口汇总

    Hadoop:50070:HDFS WEB UI端口8020 : 高可用的HDFS RPC端口9000 : 非高可...

  • Hadoop端口

    常见端口汇总: Hadoop:50070:HDFS WEB UI端口8020 : 高可用的HDFS RPC端口90...

  • HDFS源码解析(1)-heartbeat

    heartbeat是HDFS中最重要的RPC中的一个,DataNode通过heartbeat告诉NameNode的...

  • HDFS源码解析(2)-block report

    除了heartbeat,block report应该说是HDFS中另一个最重要的RPC。 DataNode通过bl...

  • (初级)HDFS

    DFS是一种允许文件通过网络在多台主机上分享的文件系统分布式文件管理系统很多,hdfs只是其中一种. 适用于一次写...

  • HDFS 客户端常见报错整理

    概述 HDFS 客户端在使用过程中,有下面两个过程: 向 NameNode 进行 RPC 请求 向 DataNod...

  • 【HDFS】--RPC--delete

    分享一波大数据&Java的学习视频和书籍### Java与大数据资源分享​links.jianshu.com[ht...

  • hdfs 读写过程

    hdfs 文件写入过程 Client 发起文件上传请求, 通过 RPC 与 NameNode 建立通讯, Name...

网友评论

      本文标题:(初级)HDFS中的RPC

      本文链接:https://www.haomeiwen.com/subject/whebkxtx.html