Hadoop RPC通信
Remote Procedure Call(简称RPC):远程过程调用协议
1. 通过网络从远程计算机程序上请求服务
2. 不需要了解底层网络技术的协议(假定某些传输协议的存在,如TCP或UDP)
3. 采用客户机/服务机模式
请求程序就是一个客户机,服务提供程序就是一个服务器
例子:hadoop RPC机制的一个简单实现
1.导jar包,/share/hadoop/common 的相关的jar包 以及/share/hadoop/hdfs 相关的jar包
2.编程实现
1). 定义一个协议接口 如 Isay 接口
public interface Isay {
public static final long versionID=1234L;//前后一致
public String say(String username);
}
2). 创建通信的服务端 (服务程序实现协议接口)
public class SayRpcServer implements Isay{
//实现Isay接口
@Override
public String say(String username) {
// TODO Auto-generated method stub
System.out.println("server received data->["+username+"]");
return "Hello! ["+username+"]";
}
public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
Configuration conf = new Configuration();
//创建builder对象
Builder builder = new RPC.Builder(conf);
//为builder设置服务对象,服务端地址,端口,定义代理协议
builder.setInstance(new SayRpcServer()).setBindAddress("Master").setPort(8001).setProtocol(Isay.class);
//创建 server
Server server = builder.build();
//启动 server
server.start();
System.out.println("server started");
}
}
3).创建一个通信客户端
public class SayRpcClient {
private static Scanner sc;
public static void main(String[] args) throws IOException {
InetSocketAddress inetSocketAddress=new InetSocketAddress("Master", 8001);
Configuration conf=new Configuration();
//初始化 RPC 代理
Isay proxySay=RPC.getProxy(Isay.class, 1234L, inetSocketAddress, conf);
System.out.println("请输入用户名(quit退出)");
//从控制台读入数据
sc=new Scanner(System.in);
while(sc.hasNext()) {
String userName=sc.next();
if("quit".equals(userName)) {//设定退出条件
System.out.println("RPC client exited");
return ;
}
String s=proxySay.say(userName);//远程调用
System.out.println(s);
System.out.println("请再输入姓名(quit退出)");
}
}
}
4)输出结果
1.启动服务端
server started
2.启动客户端
请输入用户名(quit退出)
Jack
Hello! [Jack]
请再输入姓名(quit退出)
Mark
Hello! [Mark]
请再输入姓名(quit退出)
quit
RPC client exited
同时server的输出结果
server started
server received data->[Jack]
server received data->[Mark]
Hadoop RPC通信的更多相关文章
- Hadoop的RPC通信原理
RPC调用: RPC(remote procedure call)远程过程调用: 不同java进程间的对象方法的调用. 一方称作服务端(server),一方称为客户端(client): server端 ...
- 吴裕雄--天生自然HADOOP操作实验学习笔记:分布式及RPC通信简介
实验目的 掌握GOF设计模式的代理模式 了解掌握socket编程.java反射.动态代理 了解NIO.多线程 掌握hadoop的RPC框架使用API 实验原理 1.什么是RPC 在hadoop出现以前 ...
- Hadoop学习笔记—3.Hadoop RPC机制的使用
一.RPC基础概念 1.1 RPC的基础概念 RPC,即Remote Procdure Call,中文名:远程过程调用: (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网 ...
- Hadoop RPC机制的使用
一.RPC基础概念 1.1 RPC的基础概念 RPC,即Remote Procdure Call,中文名:远程过程调用: (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网 ...
- 【Hadoop代码笔记】通过JobClient对Jobtracker的调用详细了解Hadoop RPC
Hadoop的各个服务间,客户端和服务间的交互采用RPC方式.关于这种机制介绍的资源很多,也不难理解,这里不做背景介绍.只是尝试从Jobclient向JobTracker提交作业这个最简单的客户端服务 ...
- Hadoop RPC源码阅读-交互协议
Hadoop版本Hadoop2.6 RPC主要分为3个部分:(1)交互协议(2)客户端 (3)服务端 (1)交互协议 协议:把某些接口和接口中的方法称为协议,客户端和服务端只要实现这些接口中的方法就可 ...
- 每天收获一点点------Hadoop RPC机制的使用
一.RPC基础概念 1.1 RPC的基础概念 RPC,即Remote Procdure Call,中文名:远程过程调用: (1)它允许一台计算机程序远程调用另外一台计算机的子程序,而不用去关心底层的网 ...
- Hadoop RPC简单例子
jdk中已经提供了一个RPC框架-RMI,但是该PRC框架过于重量级并且可控之处比较少,所以Hadoop RPC实现了自定义的PRC框架. 同其他RPC框架一样,Hadoop RPC分为四个部分: ( ...
- Hadoop RPC源码分析
Hadoop RPC源码分析 上一篇文章http://www.cnblogs.com/dycg/p/rpc.html 讲了Hadoop RPC的使用方法,这一次我们从demo中一层层进行分析. RPC ...
随机推荐
- 有关fgetc配合feof逐行读取文件最后一行读取两遍的错觉?
最近在做一个wifiap设置的接口,用户首先获取到当前wifi 热点的ssid 和pwd,然后修改,保存. 获取信息的时候是fopen对应的hostapd.conf文件,逐行读取,查找匹配的参数. 修 ...
- Harbour.Space Scholarship Contest 2021-2022 (Div. 1 + Div. 2) Editorial题解
A 略,发现只有当末尾为9时才满足条件.. B 简单模拟,注意数组大小!!! C 简单模拟. D 比较暴力的一个做法就是每次找一个开始匹配的起始点,然后每次不同时向后跳2就行了. 注意这里最后还要判断 ...
- simulate_click
#!/bin/bashlet actual_x=104+144*$[$2-1]let actual_y=945+144*$[$1-1]adb shell input tap ${actual_x} $ ...
- Netfilter和iptables介绍
前言 在开始Kubernetes的网络之前我们先来学习Netfilter,Netfilter可能了解的人比较少,但是iptables用过 Linux的都应该知道.本文主要介绍Netfilter与ipt ...
- 为什么IDEA不推荐你使用@Autowired ?
@Autowired注解相信每个Spring开发者都不陌生了!在DD的Spring Boot基础教程和Spring Cloud基础教程中也都经常会出现. 但是当我们使用IDEA写代码的时候,经常会发现 ...
- 攻防世界 WEB 高手进阶区 XCTF Web_python_template_injection Writeup
攻防世界 WEB 高手进阶区 XCTF Web_python_template_injection Writeup 题目介绍 题目考点 SSTI模板注入漏洞 Writeup 知识补充 模板注入:模板引 ...
- 'pybot' 不是内部或外部命令,也不是可运行的程序 或批处理文件
在dos下运行pybot --version提示不是内部命令 这是pip list 打印信息: 解决方法: 在python/Scripts目录下加一个pybot.bat 文件 内容为: @Echo o ...
- PTA 6-1 求采用邻接矩阵作为存储结构的无向图各顶点的度 (6分)
PTA 6-1 求采用邻接矩阵作为存储结构的无向图各顶点的度 (6分) 函数接口定义: 函数接口为: void dgree(MGraph G); G为采用邻接矩阵作为存储结构的有向图 裁判测试程序样例 ...
- 开源支持东财自动交易的简单量化交易框架pytrader
pytrader是基于 easytrader 和 easyquotation 的量化交易框架,支持东方财富自动交易,支持进行策略回测. 开源地址:https://github.com/jadepeng ...
- Java 代码执行流程
Java 代码执行流程 类加载过程 加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 -> 卸载 类加载时机:代码使用到这个类时 验证阶段 &qu ...