Hadoop-rpc调用案例,服务端,客户端代码案例
来源:互联网 发布:美丽说网络兼职客服 编辑:程序博客网 时间:2024/06/01 20:31
1. Hadoop-rpc框架
在hadoop中提供了一个rpc框架,通过这个rpc框架可以编写一个rpc服务端程序,然后发布出去供客户端调用。
1.1.服务端代码
其中服务端(example-hadoop-rpc-server),其中代码结果如下:
代码说明:
ClientNamenodeProtocal
接口定义
NameNode
接口的实现
ServerPublisher
用于发布服务的类
若写服务端代码,需要一个服务端的接口,其中接口如下:
package cn.toto.rpc.protocal;
public interface ClientNamenodeProtocal {
//为了保证客户端和服务端的版本是一致的,如果没有定义将报错
public static final long versionID = 1L;
public String getMetaData(String path);
}
接口的实现类是:
package cn.toto.rpc.server;
import cn.toto.rpc.protocal.ClientNamenodeProtocal;
public class NameNode implements ClientNamenodeProtocal {
@Override
public String getMetaData(String path) {
return path + " 2 {BLK1,BLK2} {BLK1:min1,mini2} {BLK2:mini4,mini5}";
}
}
用于发布的接口类:
package cn.toto.rpc.server;
import java.io.IOException;
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 cn.toto.rpc.protocal.ClientNamenodeProtocal;
public class ServerPublisher {
public static void main(String[] args) throws Exception, IOException {
Builder builder = new RPC.Builder(new Configuration());
//暴露的仅仅是ClientNamenodeProtocal.class中的new NameNode()实现的方法
builder.setBindAddress("localhost").setPort(8787)
.setProtocol(ClientNamenodeProtocal.class)
.setInstance(new NameNode());
//构建一个Server,并且启动一下
Server server = builder.build();
server.start();
}
}
1.2.客户端
写完客户端后,可以开始写客户端调用进行测试了。
客户端的代码如下:
代码说明:
ClientNamenodeProtocal
和服务端一样的接口
HdfsClient
用于调用的客户端代码
接口代码如下:
package cn.toto.rpc.protocal;
public interface ClientNamenodeProtocal {
//为了保证客户端和服务端的版本是一致的,如果没有定义将报错
public static final long versionID = 1L;
public String getMetaData(String path);
}
客户端代码:
package cn.toto.rpc.client;
import java.io.IOException;
import java.net.InetSocketAddress;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import cn.toto.rpc.protocal.ClientNamenodeProtocal;
public class HdfsClient {
/**
* 在使用这个之前,需要先启动服务端
*/
public static void main(String[] args) throws IOException {
//通过这种方式获取到一个远程调用对象
ClientNamenodeProtocal nameNode = RPC.getProxy(ClientNamenodeProtocal.class,
1L,
new InetSocketAddress("localhost",8787),
new Configuration());
//调用服务端的接口,看看返回的结果
String metaData = nameNode.getMetaData("/a.doc");
System.out.println(metaData);
}
}
输出的结果:
- Hadoop-rpc调用案例,服务端,客户端代码案例
- Unix聊天室案例 客户端+服务端
- Mina 简单案例(客户端与服务端)
- soap客户端调用服务端代码
- 沪深股市api调用代码案例
- java applet调用客户端dll 简单案例
- RESTful的java客户端调用案例源码
- Java Socket通信之客户端服务端交互聊天案例
- RabbitMQ案例七之RPC远程过程调用
- hadoop一代集群运行代码案例
- Hadoop-2.6.0 Eclipse运行代码案例
- C# Socket服务端 案例
- MT4服务端插件案例
- IOCP 服务端案例
- 如何在客户端调用服务端代码 ?
- JAVA多态调用案例代码
- Solr单集代码调用案例
- 案例代码
- QtAV 1.5.0 发布,跨平台高性能音视频框架
- Android 7.0系统调用相机崩溃
- iOS bringSubviewToFront和exchangeSubviewAtIndex方法应用
- Struts2 登录
- 最全三大框架整合(使用映射)——index.jsp
- Hadoop-rpc调用案例,服务端,客户端代码案例
- Vladik and Favorite Game CodeForces
- 快速提高编程能力---一年时间可以改变很多事
- iOS小demo之二阶贝塞尔画线
- 工厂方法模式
- 20170531_动态优化的一个小例子
- leetcode 199. Binary Tree Right Side View
- 省赛 Binary to Prime
- UR5机械臂仿真环境搭建