2019独角兽企业重金招聘Python工程师标准>>>

导入包:

理解:rpc是一种“远程过程调用协议”

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

具体使用:方面可以理解为,例如一个公司的后台数据支持此公司多个平台的使用,如果每个平台都写一套调用逻辑,如果后台逻辑做调整则每个平台都需要涉及;如果把各个平台访问后端的操作提前出来,放在服务端,来提供服务,则各个平台都可以使用;并且对平台开发也隐藏了后端。

开发注意:

rpc服务端和rpc客户端的通信协议接口。服务端和客户端都必须有,且路径一致

实例如下:

一:建两个项目:

客户端项目:democlient

服务器端项目:demonamenode

在服务器端和客户端开发都需要建相同的接口:网络通信双方都要遵循的协议

1>开发路径一致;--hadoop.rpctest

2>名称一致。       --DemoNamenodeProtocol.java

服务器端需要一个协议的实现类:例如DemoNamenodeImpl.java;

服务器端还需要把协议的实现发布到RPC服务上

这里测试实现:ServerPublisher.java

二:服务端项目实现后,需要 打包  Runnable JAR,并上传到服务器上,

发布:  java -jar   ***.jar

三:服务器端发布后,则客户端可以调用此服务。

代码实现附上:

---------------------------------------------------------------------start
自定义协议接口:DemoNamenodeProtocol

package hadoop.rpctest;
/** 接口定义网络通信双方共同遵循的约定或协议*/
public interface DemoNamenodeProtocol {//定义通信上方一致的版本号public static final long versionID = 1L;
//定义通信双方可以调用的方法public String getMetaData(String filePath);
}

--------------------------------------------------------------end

---------------------------------------------------------------------start
服务器端 实现类:DemoNamenodeImpl

package hadoop.rpctest;
public class DemoNamenodeImpl implements DemoNamenodeProtocol{public String getMetaData(String filePath) {return filePath + "-----我给你开玩笑呢" ;}
}

--------------------------------------------------------------end

---------------------------------------------------------------------start
服务发布类:ServerPublisher

package hadoop.rpctest;
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.Builder;
import org.apache.hadoop.ipc.RPC.Server;
//用于把我们定义的业务功能发布为rpc服务
public class ServerPublisher {public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {// TODO Auto-generated method stub//获取一个创建rpc服务的builderBuilder builder = new RPC.Builder(new Configuration());//通过Builder与我名定义的业务功能建立关系//设置服务端服务实例实现的接口--及通信双方功能遵循的协议builder.setProtocol(DemoNamenodeProtocol.class);//设置提供业务服务的具体实例对象builder.setInstance(new DemoNamenodeImpl());//设置服务进程所绑定的地址信息builder.setBindAddress("hadoop02");//设置服务进程的端口builder.setPort(10000);//用builder来创建一个服务  (socket服务)Server server = builder.build();//启动服务,这样就可以被客户端调用了server.start();}
}

--------------------------------------------------------------end

客户端访问测试:DemoClient

package clienttest;
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import hadoop.rpctest.DemoNamenodeProtocol;
public class DemoClient {
public static void main(String[] args) throws IOException {//客户端访问rpc服务器代码实现InetSocketAddress addr = new InetSocketAddress("hadoop02",10000);DemoNamenodeProtocol demoNamenodeImpl = RPC.getProxy(DemoNamenodeProtocol.class, 1L, addr, new Configuration());String MetaData = demoNamenodeImpl.getMetaData("获取RPC服务:hello world");System.out.println(MetaData);
}
}

转载于:https://my.oschina.net/u/3420885/blog/1634814

Hadoop 中RPC使用相关推荐

  1. Hadoop中RPC机制详解之Server端

    2019独角兽企业重金招聘Python工程师标准>>> Hadoop 中 RPC 机制详解之 Client 端 1. Server.Listener RPC Client 端的 RP ...

  2. Hadoop中RPC机制

    Hadoop中RPC机制 RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.Hadoo ...

  3. Hadoop中RPC协议小例子报错java.lang.reflect.UndeclaredThrowableException解决方法

    最近在学习传智播客吴超老师的Hadoop视频,里面他在讲解RPC通信原理的过程中给了一个RPC的小例子,但是自己编写的过程中遇到一个小错误,整理如下: log4j:WARN No appenders ...

  4. Hadoop的RPC工作原理

    RPC远程过程调用: Hadoop的远程过程调用(Remote Procedure Call,RPC)是Hadoop中核心通信机制,RPC主要通过所有Hadoop的组件元数据交换,如MapReduce ...

  5. 3 weekend110的hadoop中的RPC框架实现机制 + hadoop中的RPC应用实例demo

    hadoop中的RPC框架实现机制 RPC是Remotr Process Call, 进程间的远程过程调用,不是在一个jvm里. 即,Controller拿不到Service的实例对象. hadoop ...

  6. INFO org.apache.hadoop.ipc.RPC: Server at master/192.168.200.128:9000 not available yet, Zzzzz...

    hadoop 启动时namenode和datanode可以启动,使用jps命令也可以看到进程,但是在浏览器中输入master:50070却没有显示datanode. 查看datanode的log日志: ...

  7. hadoop 中各种概念解释记忆

    https://blog.csdn.net/marvel_cheng/article/details/45480521 https://blog.csdn.net/qq_26437925/articl ...

  8. Hadoop Yarn RPC远程命令执行

    影响范围 Hadoop Yarn RPC 漏洞类型 远程命令执行 利用条件 可未授权访问 漏洞概述 2021年11月15日,有安全研究人员披露Hadoop Yarn RPC存在未授权访问漏洞,此漏洞存 ...

  9. Zookeeper 在Hadoop中的应用

    Zookeeper 简单介绍 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目.它主要是用来解决分布式应用中常常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集 ...

最新文章

  1. #Ruby# Introspect (2)
  2. WINDOWS下调用GetTokenInformation的奇怪之处--两次调用
  3. phpstudy mysql端口_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...
  4. ajax respon有数据,Ajax怎么通过response在后台传递数据?(附代码)
  5. Linux Setuid(SUID)和Setgid(SGID) sticky bit
  6. RPM 的介绍和应用
  7. day15【前台】项目发布
  8. NQL.Net 简介
  9. 组件中使用_尚德高效组件全线投入壳牌首个光伏项目中使用
  10. 水经注万能地图下载器下载的瓦片如何应用到web端的cesium中
  11. flask—本地图片,视频上传
  12. 118、交换机配置规范
  13. js 通过正则表达式验证身份证格式
  14. 【第一组】第四次冲刺例会纪要
  15. android双屏不同apk,双屏可折叠 通吃.exe和.apk 微软终于发大招了!
  16. 如何使用winrar压缩工具实现:文件打包为自解压EXE类型
  17. 又一恐怖技能!卡耐基梅隆大学发布超强智能体,炸翻科研圈
  18. android模拟器设置静态ip,静态IP地址版EVE模拟器部署和使用说明
  19. 软件测试报告编写指南
  20. 亚马逊商城最新品牌授权流程-2022年

热门文章

  1. Android button 居中
  2. Document is invalid: no grammar found. at (null:3:8)
  3. android EventBus的简单使用
  4. ant external lib
  5. Android 如何快速定位当前页面是哪个Activity or Fragment
  6. 结构光三维重建Projector-Camera Calibration投影仪相机标定
  7. OpenCV FileStorage类的数据读写操作
  8. javascript的内置对象以及BOM(定时器,location)
  9. WebCast《实战ASP.NET AJAX系列课程(2):使用客户端框架创建“纯粹”的Ajax应用程序》相关资源...
  10. tensorflow--卷积神经网络