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通信原理相关推荐

  1. python socket读取数据不能解析_通过实例解析return运行原理,除了quot;生孩子quot;python真是无所不能啊...

    文章内容主要介绍了通过实例解析Python return运行原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下!!! return 语句就是讲结果返 ...

  2. Java 网络实例三(获取URL响应头的日期信息、获取URL响应头信息、解析URL、ServerSocket和Socket通信实例)

    获取 URL响应头的日期信息 以下实例演示了如何使用 HttpURLConnection 的 httpCon.getDate() 方法来获取 URL响应头的日期信息: import java.net. ...

  3. java socket发送定长报文_一个基于TCP协议的Socket通信实例

    原标题:一个基于TCP协议的Socket通信实例 1. 前言 一般接口对接多以http/https或webservice的方式,socket方式的对接比较少并且会有一些难度.正好前段时间完成了一个so ...

  4. java 蓝牙读取数据格式,单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信实例...

    原标题:单片机与安卓手机通过蓝牙串口模块利用JSON数据格式通信实例 JSON 指的是 Java 对象表示法(Java Object Notation),JSON 是轻量级的文本数据交换格式,JSON ...

  5. ROS实现串口GPS数据的解析与通信(这篇文章所用的代码和我买的带有ROS功能包的GPS模块的功能包的代码一样)

    我发现这篇文章所用的代码和我买的带有ROS功能包的GPS模块的功能包的代码一样!!! https://gitee.com/maxibooksiyi/gps_driver 转载自:https://blo ...

  6. 51单片机串口通信模板_深入理解51单片机串口通信及通信实例

    串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...

  7. 网络与通信程序设计-基于UDP的广播通信实例

    目录 实验内容和设计思想 实验的内容 UDP的设计思想 UDP的协议头部 UDP通信编程思想 UDP的工作流程 UDP编程收发函数 广播通信 广播模式设置 广播套接字 UDP Socket的使用过程 ...

  8. php 实例说明 socket通信机制

    php 实例说明 socket通信机制 张映 发表于 2010-04-24 分类目录: php 一,socket是什么 什么是socket 所谓socket通常也称作"套接字",用 ...

  9. android socket通信如何抓取,安卓Socket通信实例(客户端、服务端)

    安卓Socket通信实例 本文摘自:https://whatsblog.icu/index.php/Android/17.html 1.Socket通信必须知道的地方 1.首先,Socket通信采用T ...

最新文章

  1. Python超过R,成为数据科学和机器学习的首选语言!
  2. echarts导入mysql数据库_Echarts最新:Django中从mysql数据库中获取数据传到echarts方式_爱安网 LoveAn.com...
  3. 一元操作符和使用Number()方法的区别
  4. ibatis中使用like模糊查询
  5. linux 删除20日前数据,Linux 维护常用命令
  6. 春运前五日全国累计发送旅客3.49亿人次 同比增0.58%
  7. PID控制器改进笔记之五:改进PID控制器之串级设定
  8. oracle 10g安装企业版,企业版Oracle10g的安装-过程
  9. android 图库分析,Android开发之ImageSwitcher相册功能实例分析
  10. odex vdex art区别
  11. Storm Player 字幕加载
  12. Setinterl全面介绍
  13. 你知道吗?我喜欢你六年了——微博Redis定制化之路
  14. 【树莓派】树莓派安装中文输入法
  15. 工商管理专业的毕业论文怎么选题?
  16. 【量化课堂】彼得·林奇的成功投资
  17. Redis缓存读写策略
  18. 李白打酒加强版(dp)
  19. 代码管理工具—GitLab
  20. 【游戏逆向】FPS游戏自瞄透视之堆栈分析

热门文章

  1. 爬虫—有道翻译案例(史上最详细分析教程)
  2. element-ui dialog(多弹框、嵌套弹框)被蒙版遮住
  3. Win10右击个性化后报错“该文件没有与之关联的应用来执行该操作
  4. 使用css和js实现鼠标拖尾特效(七彩泡泡)
  5. ORA-12737:Instant Client Light:unsupported server character set ZHS16GBK
  6. 项目7 创建与使用触发器
  7. 876. 链表的中间结点 (Python 实现)
  8. 记一次成功把Vue2后台项目改造成Vite2的踩坑经历
  9. h5 换脸 php,HTML5/WebGL变脸(换脸)动画
  10. 基于Java实现在线翻译【100010578】