专业只做数据库实训和认证的品牌机构

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > Hadoop > Hadoop课程 > Hadoop培训教程:RPC怎么使用

Hadoop培训教程:RPC怎么使用

文章来源: 更新时间:2016/7/13 13:32:15

在线老师点击咨询:

最新学讯:近期OCP认证正在报名中,因考试人员较多请尽快报名获取最近考试时间,报名费用请联系在线老师,甲骨文官方认证,报名从速!

我要咨询

Hadoop培训教程:RPC怎么使用,通常而言,使用Hadoop RPC可分为以下4个步骤。

Hadoop RPC对外主要提供了两种接口(见类org.apache.Hadoop.ipc.RPC),分别是:

public static ProtocolProxy getProxy/waitForProxy(…):构造一个客户端代理对象(该对象实现了某个协议),用于向服务器发送RPC请求。

public static Server RPC.Builder (Configuration).build():为某个协议(实际上是Java接口)实例构造一个服务器对象,用于处理客户端发送的请求。

1. 定义RPC协议

RPC协议是客户端和服务器端之间的通信接口,它定义了服务器端对外提供的服务接口。如下所示,我们定义一个ClientProtocol通信接口,声明了echo()和add()两个方法。需要注意的是,Hadoop中所有自定义RPC接口都需要继承VersionedProtocol接口,它描述了协议的版本信息。

interface ClientProtocol extends org.apache.Hadoop.ipc.VersionedProtocol { //版本号,默认情况下,不同版本号的RPC Client和Server之间不能相互通信 public static final long versionID = 1L; String echo(String value) throws IOException; int add(int v1, int v2) throws IOException; }

2. 实现RPC协议

Hadoop RPC协议通常是一个Java接口,用户需要实现该接口。对ClientProtocol接口进行简单的实现如下所示:

public static class ClientProtocolImpl implements ClientProtocol {  

//重载的方法,用于获取自定义的协议版本号, 

public long getProtocolVersion(String protocol, long clientVersion) {

return ClientProtocol.versionID; } 

//重载的方法,用于获取协议签名 

public ProtocolSignature getProtocolSignature(String protocol, long clientVersion, inthashcode) { 

return new ProtocolSignature(ClientProtocol.versionID, null); 

}

public String echo(String value) throws IOException {

return value; 

public int add(int v1, int v2) throws IOException {

return v1 + v2; 

}

}

3. 构造并启动RPC Server

直接使用静态类Builder构造一个RPC Server,并调用函数start()启动该Server:

Server server = new RPC.Builder(conf).setProtocol(ClientProtocol.class)

.setInstance(new ClientProtocolImpl()).setBindAddress(ADDRESS).setPort(0) 

.setNumHandlers(5).build(); 

server.start();

其中,BindAddress(由函数setBindAddress设置)和Port(由函数setPort设置,0表示由系统随机选择一个端口号)分别表示服务器的host和监听端口号,而NnumHandlers(由函数setNumHandlers设置)表示服务器端处理请求的线程数目。到此为止,服务器处理监听状态,等待客户端请求到达。

4. 构造RPC Client并发送RPC请求

使用静态方法getProxy构造客户端代理对象,直接通过代理对象调用远程端的方法,具体如下所示:

proxy = (ClientProtocol)RPC.getProxy( 

ClientProtocol.class, ClientProtocol.versionID, addr, conf); 

int result = proxy.add(5, 6); 

String echoResult = proxy.echo("result");

经过以上四步,我们便利用Hadoop RPC搭建了一个非常高效的客户机–服务器网络模型。接下来,我们将深入到Hadoop RPC内部,剖析它的设计原理及技巧。

本文地址:http://www.cuug.com.cn/hadoop/kecheng/12463755590.html 转载请注明!


在线预约 抢先报名 获取课程排期

Oracle培训机构

金牌讲师<>

冉乃纲-老师CUUG金牌讲师
冉老师 CUUG金牌讲师 Oracle及RedHat高级讲师、Unix/Linux 资深专家...[详细了解老师]

免费咨询上课流程 客服在线中

陈卫星-老师CUUG金牌讲师
陈老师 CUUG金牌讲师 精通Oracle管理、备份恢复、性能优化 11年Ora...[详细了解老师]

免费咨询上课流程 客服在线中

选学校如何选择适合自己的学校

CUUG -CHINA UNIX USER GROUP,是国际UNIX组织UNIFORUM的中国代表,是国内悠久的专业UNIX培训机构,被誉为中国UNIX 的摇篮。多年来,以提高教学质量为本,强调素质教育,积极引进、消化国外的新技术,有效的结合中国....[详情]

一站式服务(从入学到就业一帮到底)

入学

学习

就业

实操

食宿
地址:北京市海淀区北清路164号28-38号院
课程咨询:010-59426307 010-59426319 400-0909-964
企业服务:137 1818 8639(陈经理)
部分信息来源于网络,如有错误请联系指正!
版权所有@北京神脑资讯技术有限公司 (CUUG,中国UNIX用户协会) Copyright 2016 ALL Rights Reserved 京ICP备11008061号-1