自编写RPC通信实例解析HadoopRPC通信原理
1、HDFS、YARN、MapReduce三者关系
2、需求解说
模拟RPC的客户端、服务端、通信协议三者如何工作的
3、代码编写
(0)在pom.xml中增加如下依赖
<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-client</artifactId><version>3.1.3</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.30</version></dependency> </dependencies>
(1)在项目的src/main/resources目录下,新建一个文件,命名为“log4j.properties”,在文件中填入
log4j.rootLogger=INFO, stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d%p [%c] - %m%n log4j.appender.logfile=org.apache.log4j.FileAppender log4j.appender.logfile.File=target/spring.log log4j.appender.logfile.layout=org.apache.log4j.PatternLayout log4j.appender.logfile.layout.ConversionPattern=%d%p [%c] - %m%n
(2)在HDFSClient项目基础上创建包名com.atguigu.rpc
(3)创建RPC协议
package com.atguigu.rpc;public interface RPCProtocol {long versionID = 666;void mkdirs(String path); }
(4)创建RPC服务端
package com.atguigu.rpc;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.ipc.RPC; import org.apache.hadoop.ipc.Server;import java.io.IOException;public class NNServer implements RPCProtocol{@Overridepublic void mkdirs(String path) {System.out.println("服务端,创建路径" + path);}public static void main(String[]args) throws IOException {Server server = new RPC.Builder(new Configuration()).setBindAddress("localhost").setPort(8888).setProtocol(RPCProtocol.class).setInstance(newNNServer()).build();System.out.println("服务器开始工作");server.start();} }
(5)创建RPC客户端
package com.atguigu.rpc;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.ipc.RPC;import java.io.IOException; import java.net.InetSocketAddress;public class HDFSClient {public static void main(String[]args) throws IOException {RPCProtocol client = RPC.getProxy(RPCProtocol.class,RPCProtocol.versionID,newInetSocketAddress("localhost", 8888),new Configuration());System.out.println("我是客户端");client.mkdirs("/input");} }
4、测试
(1)启动服务端
观察控制台打印:服务器开始工作
在控制台Terminal窗口输入,jps,查看到NNServer服务
(2)启动客户端
观察客户端控制台打印:我是客户端
观察服务端控制台打印:服务端,创建路径/input
(3)总结
RPC的客户端调用通信协议方法,方法的执行在服务端;
通信协议就是接口规范。
自编写RPC通信实例解析HadoopRPC通信原理相关推荐
- python socket读取数据不能解析_通过实例解析return运行原理,除了quot;生孩子quot;python真是无所不能啊...
文章内容主要介绍了通过实例解析Python return运行原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下!!! return 语句就是讲结果返 ...
- Java 网络实例三(获取URL响应头的日期信息、获取URL响应头信息、解析URL、ServerSocket和Socket通信实例)
获取 URL响应头的日期信息 以下实例演示了如何使用 HttpURLConnection 的 httpCon.getDate() 方法来获取 URL响应头的日期信息: import java.net. ...
- java socket发送定长报文_一个基于TCP协议的Socket通信实例
原标题:一个基于TCP协议的Socket通信实例 1. 前言 一般接口对接多以http/https或webservice的方式,socket方式的对接比较少并且会有一些难度.正好前段时间完成了一个so ...
- java 蓝牙读取数据格式,单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信实例...
原标题:单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信实例 JSON 指的是 Java 对象表示法(Java Object Notation),JSON 是轻量级的文本数据交换格式,JSON ...
- ROS实现串口GPS数据的解析与通信(这篇文章所用的代码和我买的带有ROS功能包的GPS模块的功能包的代码一样)
我发现这篇文章所用的代码和我买的带有ROS功能包的GPS模块的功能包的代码一样!!! https://gitee.com/maxibooksiyi/gps_driver 转载自:https://blo ...
- 51单片机串口通信模板_深入理解51单片机串口通信及通信实例
串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...
- 网络与通信程序设计-基于UDP的广播通信实例
目录 实验内容和设计思想 实验的内容 UDP的设计思想 UDP的协议头部 UDP通信编程思想 UDP的工作流程 UDP编程收发函数 广播通信 广播模式设置 广播套接字 UDP Socket的使用过程 ...
- php 实例说明 socket通信机制
php 实例说明 socket通信机制 张映 发表于 2010-04-24 分类目录: php 一,socket是什么 什么是socket 所谓socket通常也称作"套接字",用 ...
- android socket通信如何抓取,安卓Socket通信实例(客户端、服务端)
安卓Socket通信实例 本文摘自:https://whatsblog.icu/index.php/Android/17.html 1.Socket通信必须知道的地方 1.首先,Socket通信采用T ...
最新文章
- Python超过R,成为数据科学和机器学习的首选语言!
- echarts导入mysql数据库_Echarts最新:Django中从mysql数据库中获取数据传到echarts方式_爱安网 LoveAn.com...
- 一元操作符和使用Number()方法的区别
- ibatis中使用like模糊查询
- linux 删除20日前数据,Linux 维护常用命令
- 春运前五日全国累计发送旅客3.49亿人次 同比增0.58%
- PID控制器改进笔记之五:改进PID控制器之串级设定
- oracle 10g安装企业版,企业版Oracle10g的安装-过程
- android 图库分析,Android开发之ImageSwitcher相册功能实例分析
- odex vdex art区别
- Storm Player 字幕加载
- Setinterl全面介绍
- 你知道吗?我喜欢你六年了——微博Redis定制化之路
- 【树莓派】树莓派安装中文输入法
- 工商管理专业的毕业论文怎么选题?
- 【量化课堂】彼得·林奇的成功投资
- Redis缓存读写策略
- 李白打酒加强版(dp)
- 代码管理工具—GitLab
- 【游戏逆向】FPS游戏自瞄透视之堆栈分析
热门文章
- 爬虫—有道翻译案例(史上最详细分析教程)
- element-ui dialog(多弹框、嵌套弹框)被蒙版遮住
- Win10右击个性化后报错“该文件没有与之关联的应用来执行该操作
- 使用css和js实现鼠标拖尾特效(七彩泡泡)
- ORA-12737:Instant Client Light:unsupported server character set ZHS16GBK
- 项目7 创建与使用触发器
- 876. 链表的中间结点 (Python 实现)
- 记一次成功把Vue2后台项目改造成Vite2的踩坑经历
- h5 换脸 php,HTML5/WebGL变脸(换脸)动画
- 基于Java实现在线翻译【100010578】