使用Hadoop中的RPC框架
来源:互联网 发布:淘宝水果店名起名大全 编辑:程序博客网 时间:2024/04/27 12:53
Hadoop中自己提供了一个RPC的框架。集群中各节点的通讯都使用了那个框架,挺有意思的。我们自己来使用一下看看。
示例代码已经上传到http://download.csdn.net/detail/mrbcy/9760207
服务端
业务接口
首先定义业务方法的接口:ClientNamenodeProtocol
ClientNamenodeProtocol.java
package tech.mrbcy.hadooprpc.protocol;public interface ClientNamenodeProtocol { // 协议版本 public static final long versionID = 1L; public String getMetaData(String path);}
业务实现类
package tech.mrbcy.hadooprpc.service;import tech.mrbcy.hadooprpc.protocol.ClientNamenodeProtocol;public class MyNameNode implements ClientNamenodeProtocol{ //模拟NameNode的业务方法,获取元数据 @Override public String getMetaData(String path){ return path+": 3 - {BLK_1,BLK_2} ..."; }}
服务端代码
使用下面的代码可以把业务类发布为一个服务。
PublishServiceUtil.java
package tech.mrbcy.hadooprpc.service;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import org.apache.hadoop.ipc.RPC.Builder;import org.apache.hadoop.ipc.Server;import tech.mrbcy.hadooprpc.protocol.ClientNamenodeProtocol;public class PublishServiceUtil { public static void main(String[] args) throws Exception { Builder builder = new RPC.Builder(new Configuration()); builder.setBindAddress("localhost") .setPort(8888) .setProtocol(ClientNamenodeProtocol.class) .setInstance(new MyNameNode()); Server server = builder.build(); server.start(); }}
客户端
需要注意的是客户端使用的接口的完整签名必须跟服务端使用的一致。
这里我为了方便,直接在一个项目中写客户端了。如果服务端跟客户端项目不同,一定要记得这一点。
MyHdfsClient.java
package tech.mrbcy.hadooprpc.client;import java.net.InetSocketAddress;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.ipc.RPC;import tech.mrbcy.hadooprpc.protocol.ClientNamenodeProtocol;public class MyHdfsClient { public static void main(String[] args) throws Exception { ClientNamenodeProtocol namenode = RPC.getProxy(ClientNamenodeProtocol.class, 1L, // 这里指定的协议版本号要跟接口中的versionID的值保持一致 new InetSocketAddress("localhost", 8888), new Configuration()); String metaData = namenode.getMetaData("testRpc.log"); System.out.println(metaData); }}
我们也可以在自己的项目中使用Hadoop的RPC框架,把Hadoop的Common包导入进来就可以了。
0 0
- 使用Hadoop中的RPC框架
- 使用hadoop中的RPC框架实现远程调用
- Hadoop的RPC框架使用
- hadoop中的RPC框架封装思想
- <hadoop>hadoop RPC框架
- Hadoop V2 RPC框架使用实例
- Hadoop RPC框架解读
- Hadoop RPC 框架解析
- Hadoop RPC框架
- Hadoop RPC框架
- Hadoop RPC框架
- Hadoop RPC框架
- Hadoop RPC基本框架
- Hadoop,RPC框架基础
- Hadoop RPC框架
- Hadoop中的RPC实现
- Hadoop中的RPC
- hadoop所封装的RPC框架简单使用
- Linux系统调用列表
- ContentView实现获取手机短信内容
- Python实现计算一段文本中每个单词出现的次数
- Linux 套接字编程中的 5 个隐患
- angularJs
- 使用Hadoop中的RPC框架
- Mybatis学习笔记之mapper代理
- cocos2dx Sprite使用同一张纹理会只调用一次渲染
- 学习 Linux,101: LPIC-1 学习路线图
- JavaScript实现二分查找
- linux安装nginx并且配置负载均衡
- Codeforces Round #276 (Div. 1) D. Kindergarten dp
- android冷启动中(欢迎页splash页)中的白屏问题
- Linux centos 下 eclipse 打开文件时关闭