Hadoop的 RPC机制的使用
来源:互联网 发布:吕雉与戚夫人知乎 编辑:程序博客网 时间:2024/05/16 00:42
1.RPC 概念
RPC:远程过程调用
(1)它允许一台计算机调用另一台计算机的子程序,不用关心底层网络通信细节,通常使用在分布式网络通信中。
(2)Hadoop 进程之间交互都是通过 RPC 来进行的,如 Namenode 与 Datanode 直接通信,jobtacker 与 Tasktracker 之间。
2.RPC 的特点
(1)透明性:远程调用其他机器的程序
(2)高性能:Server 并发处理来自多个 Client 的请求
(3)可控性:Java 中已经提供一个 RPC 框架,但是 Hadoop RPC 实现自定义的 RPC 框架
3.定义一个RPC通信接口。
/** * Created by hubo on 2017/11/30 * 定义一个 RPC 通信接口 */public interface LoginServiceProtocal { final long versionID = 1L; //版本号,不同版本号的 client 和 server 之间不能通信 String login(String username, String password);}
默认情况下,不同版本号的RPC Client和Server之间不能相互通信,因此客户端和服务端通过版本号标识。VERSION 就是版本号。
4.实现 RPC 协议
RPC 协议通常是一个 Java 接口,用户实现接口方法:
/** * Created by hubo on 2017/11/30 */public class LoginService implements LoginServiceProtocal{ @Override public String login(String username,String password){ return "成功调用"; }}
5.构造 RPC server 并启动服务
import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import org.apache.hadoop.ipc.Server;import java.io.IOException;/** * Created by hubo on 2017/11/30 */public class ServicePublisher { public static int PORT = 5432; public static String IPAddress = "127.0.0.1"; public static void main(String[] args) throws IOException { Configuration conf = new Configuration(); RPC.Builder builder = new RPC.Builder(conf); builder.setBindAddress(IPAddress) .setPort(PORT) .setProtocol(LoginServiceProtocal.class) .setInstance(new LoginService()); Server server = builder.build(); //创建 sorck 服务器 server.start(); }}主要是创建的 RPC.Builder
6.构造 RPC Client 并发出请求
import HadoopRPC.LoginServiceProtocal;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import java.io.IOException;import java.net.InetSocketAddress;/** * Created by hubo on 2017/11/30 */public class ClientDemo { public static int PORT = 5432; public static String IPAddress = "127.0.0.1"; public static void main(String[] args) throws IOException { LoginServiceProtocal loginService = RPC.getProxy (LoginServiceProtocal.class, 1L, new InetSocketAddress(IPAddress,PORT), new Configuration()); String result = loginService.login("angloaksd","1314521"); System.out.println(result); }}
7.查看运行结果
(1)启动服务端,开始监听客户端请求
可以查看多出一个进程15411就是服务端启动成功
(2)启动客户端查看是否调用
阅读全文
0 0
- Hadoop RPC机制的使用
- Hadoop的 RPC机制的使用
- Hadoop的RPC机制
- hadoop的RPC机制
- HADOOP的RPC机制
- Hadoop的RPC机制
- Hadoop学习笔记—3.Hadoop RPC机制的使用
- Hadoop学习笔记—3.Hadoop RPC机制的使用
- Hadoop学习笔记—3.Hadoop RPC机制的使用
- Hadoop的RPC机制浅谈
- Hadoop的rpc机制分析
- Hadoop RPC机制的使用(笔记3)
- Hadoop的RPC框架使用
- Hadoop的RPC机制_Client组件
- hadoop的RPC机制源码分析
- Hadoop RPC机制及使用
- 【Hadoop】HDFS笔记(一):Hadoop的RPC机制
- 直接使用HADOOP-RPC的编码实例
- js、运算符
- linux 安装 golang /git/node.js/postgresql
- 1. Two Sum
- shiro-jdbc-Realm
- 论人工智能背后的伦理问题
- Hadoop的 RPC机制的使用
- forward和redirect的区别
- JVM内存分配与回收策略
- 递归法
- Java中的static关键字理解和总结
- linux下实现彩色进度条
- Nginx为什么比Apache Httpd高效:原理篇
- (算法分析Week13)Combination Sum IV[Medium]
- 经验技巧套路收获总结(附上ccf第二类中的三道)