Hadoop 中RPC使用
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使用相关推荐
- Hadoop中RPC机制详解之Server端
2019独角兽企业重金招聘Python工程师标准>>> Hadoop 中 RPC 机制详解之 Client 端 1. Server.Listener RPC Client 端的 RP ...
- Hadoop中RPC机制
Hadoop中RPC机制 RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.Hadoo ...
- Hadoop中RPC协议小例子报错java.lang.reflect.UndeclaredThrowableException解决方法
最近在学习传智播客吴超老师的Hadoop视频,里面他在讲解RPC通信原理的过程中给了一个RPC的小例子,但是自己编写的过程中遇到一个小错误,整理如下: log4j:WARN No appenders ...
- Hadoop的RPC工作原理
RPC远程过程调用: Hadoop的远程过程调用(Remote Procedure Call,RPC)是Hadoop中核心通信机制,RPC主要通过所有Hadoop的组件元数据交换,如MapReduce ...
- 3 weekend110的hadoop中的RPC框架实现机制 + hadoop中的RPC应用实例demo
hadoop中的RPC框架实现机制 RPC是Remotr Process Call, 进程间的远程过程调用,不是在一个jvm里. 即,Controller拿不到Service的实例对象. hadoop ...
- 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日志: ...
- hadoop 中各种概念解释记忆
https://blog.csdn.net/marvel_cheng/article/details/45480521 https://blog.csdn.net/qq_26437925/articl ...
- Hadoop Yarn RPC远程命令执行
影响范围 Hadoop Yarn RPC 漏洞类型 远程命令执行 利用条件 可未授权访问 漏洞概述 2021年11月15日,有安全研究人员披露Hadoop Yarn RPC存在未授权访问漏洞,此漏洞存 ...
- Zookeeper 在Hadoop中的应用
Zookeeper 简单介绍 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目.它主要是用来解决分布式应用中常常遇到的一些数据管理问题,如:统一命名服务.状态同步服务.集 ...
最新文章
- #Ruby# Introspect (2)
- WINDOWS下调用GetTokenInformation的奇怪之处--两次调用
- phpstudy mysql端口_完美解决phpstudy安装后mysql无法启动(无需删除原数据库,无需更改任何配置,无需更改端口)直接共存...
- ajax respon有数据,Ajax怎么通过response在后台传递数据?(附代码)
- Linux Setuid(SUID)和Setgid(SGID) sticky bit
- RPM 的介绍和应用
- day15【前台】项目发布
- NQL.Net 简介
- 组件中使用_尚德高效组件全线投入壳牌首个光伏项目中使用
- 水经注万能地图下载器下载的瓦片如何应用到web端的cesium中
- flask—本地图片,视频上传
- 118、交换机配置规范
- js 通过正则表达式验证身份证格式
- 【第一组】第四次冲刺例会纪要
- android双屏不同apk,双屏可折叠 通吃.exe和.apk 微软终于发大招了!
- 如何使用winrar压缩工具实现:文件打包为自解压EXE类型
- 又一恐怖技能!卡耐基梅隆大学发布超强智能体,炸翻科研圈
- android模拟器设置静态ip,静态IP地址版EVE模拟器部署和使用说明
- 软件测试报告编写指南
- 亚马逊商城最新品牌授权流程-2022年
热门文章
- Android button 居中
- Document is invalid: no grammar found. at (null:3:8)
- android EventBus的简单使用
- ant external lib
- Android 如何快速定位当前页面是哪个Activity or Fragment
- 结构光三维重建Projector-Camera Calibration投影仪相机标定
- OpenCV FileStorage类的数据读写操作
- javascript的内置对象以及BOM(定时器,location)
- WebCast《实战ASP.NET AJAX系列课程(2):使用客户端框架创建“纯粹”的Ajax应用程序》相关资源...
- tensorflow--卷积神经网络