模拟hadoop-rpc通信
一、RPC服务类
package com.css.rpc.server; 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; import com.css.rpc.protocol.ClientNamenodeProtocol; /**
* RPC服务类
*/
public class PublishServer {
public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
// 1.构建RPC框架
Builder builder = new RPC.Builder(new Configuration());
// 2.绑定地址
builder.setBindAddress("localhost");
// 3.绑定端口号
builder.setPort(7777);
// 4.绑定协议
builder.setProtocol(ClientNamenodeProtocol.class);
// 5.调用协议的实现类
builder.setInstance(new MyNameNode());
// 6.创建服务
Server server = builder.build();
server.start();
}
}
二、自定义遵循的协议类
package com.css.rpc.protocol; /**
* 自定义遵循的协议类
*/
public interface ClientNamenodeProtocol {
// 1.定义协议的id
public static final long versionID = 1L;
// 2.定义方法(拿到元数据的方式)
public String getMetaData(String path);
}
三、自定义协议的实现类
package com.css.rpc.server; import com.css.rpc.protocol.ClientNamenodeProtocol; /**
* 自定义协议的实现类
*/
public class MyNameNode implements ClientNamenodeProtocol{
@Override
public String getMetaData(String path) {
return path + ": 3 - {BLK_1,BLK_2,BLK_3...}";
}
}
四、获取元数据信息(客户端)
package com.css.rpc.client; import java.io.IOException;
import java.net.InetSocketAddress; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC; import com.css.rpc.protocol.ClientNamenodeProtocol; /**
* 获取元数据信息
*/
public class GetHDFS {
public static void main(String[] args) throws IOException {
// 1.拿到协议
ClientNamenodeProtocol proxy = RPC.getProxy(ClientNamenodeProtocol.class, 1L, new InetSocketAddress("localhost", 7777), new Configuration());
// 2.发送请求
String metaData = proxy.getMetaData("/hello");
// 3.拿到元数据信息
System.out.println(metaData);
}
}
模拟hadoop-rpc通信的更多相关文章
- Hadoop RPC通信
Remote Procedure Call(简称RPC):远程过程调用协议 1. 通过网络从远程计算机程序上请求服务 2. 不需要了解底层网络技术的协议(假定某些传输协议的存在,如TCP或UDP) 3 ...
- 吴裕雄--天生自然HADOOP操作实验学习笔记:分布式及RPC通信简介
实验目的 掌握GOF设计模式的代理模式 了解掌握socket编程.java反射.动态代理 了解NIO.多线程 掌握hadoop的RPC框架使用API 实验原理 1.什么是RPC 在hadoop出现以前 ...
- Hadoop的RPC通信原理
RPC调用: RPC(remote procedure call)远程过程调用: 不同java进程间的对象方法的调用. 一方称作服务端(server),一方称为客户端(client): server端 ...
- Hadoop系列番外篇之一文搞懂Hadoop RPC框架及细节实现
@ 目录 Hadoop RPC 框架解析 1.Hadoop RPC框架概述 1.1 RPC框架特点 1.2 Hadoop RPC框架 2.Java基础知识回顾 2.1 Java反射机制与动态代理 2. ...
- 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分为四个部分: ( ...
随机推荐
- 【转载】SAP_ECC6.0_EHP4或SAP_ECC6.0_EHP5_基于Windows_Server_2008R2_和SQL_server_2008下的安装
其实这是之前Michael_z 5篇文章的集合,但作者做了一些补充 参考重要安装文档:http://www.cnblogs.com/Michael_z/category/322108.html(本博客 ...
- aix 常用命令
官网上的介绍: AIX 常用命令汇总 http://www.ibm.com/developerworks/cn/aix/library/au-dutta_cmds.html 我们先SSH 到AIX 系 ...
- js去掉双引号
替换: d = d.replace("\"","").replace("\"",""); 全部替换: ...
- 防止js拦截跳转请求的方法
不要直接使用window.open这个方法. 考虑下使用下面这个: openWindow: function(url){ var link = document.createElement('a'); ...
- 数据库 proc编程五
#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <stri ...
- 游戏开发之coco2dx ---2d 游戏特效
http://www.cnblogs.com/gamedes/p/4547722.html
- 学习:inets
inets模块 MODULE SUMMARY The inets services API. inets:start():启动应用.
- Windows远程访问OEM乱码解决
问题描述 发现用Windows访问Linux安装的Oracle时oem按钮总是乱码,整理解决方法如下: OEM简介及按钮乱码问题 http://www.linuxidc.com/Linux/2013 ...
- VC++ ListCtrl Report使用
1.在VC++ 6.0中新建基于对话框的MFC应用程序ListCtrl; 2.在主对话框上添加一个List Control至合适的位置及大小: 3.在对话框OnInitDialog中初始化ListCt ...
- iOS文件路径相关的方法
文件路径相关的方法在NSPathUtilities中,主要是操作路径 获得一个路径 NSString *documents = [NSSearchPathForDirectoriesInDomains ...