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

微信公众号新浪微博
免费咨询电话:400-0909-964
当前位置: 网站首页 > Hadoop > Hadoop课程 > Hadoop基础教程:RPC框架基础

Hadoop基础教程:RPC框架基础

文章来源: 更新时间:2016/7/12 17:26:15

在线老师点击咨询:

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

我要咨询

RPC,远程程序调用,分布式计算中C/S模型的一个应用实例。

同其他RPC框架一样,Hadoop分为四个部分:序列化层:支持多种框架实现序列化与反序列化;函数调用层:利用Java反射与动态代理实现;网络传输层:基于TCP/IP的Socket机制;服务的处理框架:基于Reactor模式的事件驱动IO模型

Hadoop RPC主要对外提供2种接口

public static ProtocolProxy getProxy/waitForProxy:

构造一个客户端代理对象,向服务器发送RPC请求

public static Server RPC.Builder(Configuration).build(…):

为某个协议实例构造一个服务器对象,用于处理客户端发送请求。

如何使用Hadoop RPC?

其实很简单,按照下面四步即可完成高性能CS网络模型

1.定义RPC协议

2.实现RPC协议

3.构造和启动RPC SERVER

4.构造RPC Client并发送请求

下面是代码实例, 依赖Hadoop-common-版本.jar

1.定义RPC协议

Hadoop中所有自定义RPC接口都必须继承VersionedProtocol接口

package myrpc;

import org.apache.Hadoop.ipc.VersionedProtocol;

/**

* Created by ywszjut on 14-8-22.

*/

public interface ClientProtocol extends VersionedProtocol {

public static final long versionID=1L;

String echo(String value);

}

2.实现协议

package myrpc;

import org.apache.Hadoop.ipc.ProtocolSignature;

import Java.io.IOException;

/**

* Created by ywszjut on 14-8-22.

*/

public class ClientProtocolImpl implements ClientProtocol {

@Override

public String echo(String value) {

return "hello "+value;

}

@Override

public long getProtocolVersion(String s, long l) throws IOException {

return ClientProtocol.versionID;

}

@Override

public ProtocolSignature getProtocolSignature(String s, long l, int i) throws IOException {

return new ProtocolSignature(ClientProtocol.versionID,null);

}

}

3.构造和启动RPC SERVER

package myrpc;

import org.apache.Hadoop.conf.Configuration;

import org.apache.Hadoop.ipc.RPC;

import org.apache.Hadoop.ipc.RPC.Server;

import Java.io.IOException;

/**

* Created by ywszjut on 14-8-22.

*/

public class MyRpcServer {

public static void main(String[] args) throws IOException {

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

.setInstance(new ClientProtocolImpl()).setBindAddress("127.0.0.1").setPort(8787)

.setNumHandlers(5).build();

server.start();

}

}

4.构造客户端并发送请求

package myrpc;

import org.apache.Hadoop.conf.Configuration;

import org.apache.Hadoop.ipc.RPC;

import Java.io.IOException;

import Java.net.InetSocketAddress;

/**

* Hello world!

*/

public class Client {

public static void main(String[] args) throws IOException {

ClientProtocol proxy = (ClientProtocol) RPC.getProxy(ClientProtocol.class,ClientProtocol.versionID,new InetSocketAddress("127.0.0.1",8787),new Configuration());

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

System.out.println(result);

}

}

测试的时候,先启动3,再启动4,你会发现控制台打出了hello 123

好,既然hello world 搞完, 开始学习RPC类的具体实现

本文地址:http://www.cuug.com.cn/hadoop/kecheng/12456528584.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