Hadoop RPC使用方法示例-阿里云开发者社区

开发者社区> cloudcoder> 正文

Hadoop RPC使用方法示例

简介:
+关注继续查看

定义RPC协议

import java.io.IOException;

import org.apache.hadoop.ipc.VersionedProtocol;

/**
 * DateTime: 2014年12月28日 上午9:32:12
 *
 */
public interface ClientProtocol extends VersionedProtocol {
	//版本号,默认情况下,不同版本号的RPC客户端与Server之间不能相互通信
	public static final long versionID = 1L;
	public String hello(String msg) throws IOException;
}

实现RPC协议

import java.io.IOException;

import org.apache.hadoop.ipc.ProtocolSignature;

/**
 * DateTime: 2014年12月28日 上午9:41:38
 *
 */
public class ClientProtocolImpl implements ClientProtocol {

	@Override
	public long getProtocolVersion(String protocol, long clientVersion)
			throws IOException {
		return versionID;
	}

	@Override
	public ProtocolSignature getProtocolSignature(String protocol,
			long clientVersion, int clientMethodsHash) throws IOException {
		return new ProtocolSignature(versionID, null);
	}

	@Override
	public String hello(String msg) throws IOException {
		return "hello " + msg;
	}
	
	
}

构建并启动RPC Server

import java.io.IOException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.RPC.Server;

/**
 * DateTime: 2014年12月28日 上午9:47:05
 *
 */
public class RPCServer {
	private static final String HOST = "localhost";
	private static final int PORT = 2181;
	public static void main(String[] args) throws IOException {
		Configuration conf = new Configuration();

		Server server = new RPC.Builder(conf).setProtocol(ClientProtocol.class)
				.setInstance(new ClientProtocolImpl()).setBindAddress(HOST)
				.setNumHandlers(2)
				.setPort(PORT).build();
		server.start();
	}
}

构造并启动RPC Clinet并发送RPC请求

import java.io.IOException;
import java.net.InetSocketAddress;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;

/**
 * DateTime20141228日 上午9:52:19
 *
 */
public class RPCClient {
	private static final String HOST = "localhost";
	private static final int PORT = 2181;

	public static void main(String[] args) throws IOException {
		Configuration conf = new Configuration();
		ClientProtocol proxy = RPC.getProxy(ClientProtocol.class, ClientProtocol.versionID,
				new InetSocketAddress(HOSTPORT), conf);
		String result = proxy.hello("world");
		System.out.println(result);
	}
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【Hadoop Summit Tokyo 2016】使用Amaterasu项目进行数据操作
本讲义出自Yaniv Rodenski与Karel Alfonso在Hadoop Summit Tokyo 2016上的演讲,主要分享了数据管道的相关知识以及其主要作用,并且分享了数据管道建造者的原型、数据操作以及协作等相关内容,还分享了大数据应用的持续集成的案例,最后还介绍了Apache下的开源分布式资源管理框架Mesos的相关内容。
1408 0
分享录制的正则表达式入门、高阶以及使用 .NET 实现网络爬虫视频教程
我发布的「正则表达式入门以及高阶教程」,欢迎学习。 课程简介 正则表达式是软件开发必须掌握的一门语言,掌握后才能很好地理解到它的威力; 课程采用概念和实验操作 4/6 分隔,帮助大家理解概念后再使用大量的实例加深对概念的理解; 实例操作是对概念最好的理解,也是学习新语言最有效的办法; 在课程中也穿插着大量软件开发的技巧和大家分享; 应该是把晦涩的正则表达式讲解的最生动的课程; 掌握了正则表达式后,您一定会觉得这是一门最值得掌握的语言。
887 0
windows下使用Eclipse编译运行MapReduce程序 Hadoop2.6.0/Ubuntu
一、环境介绍 宿主机:windows8 虚拟机:Ubuntu14.04 hadoop2.6伪分布:搭建教程http://blog.csdn.net/gamer_gyt/article/details/46793731 Eclipse:eclipse-jee-luna-SR2-win32-x86_64 二、准备阶段 网上下载hadoop-eclipse-plugin-2.
1219 0
.NET数据库编程求索之路--7.使用ADO.NET实现(工厂模式-实现多数据库切换)(4)
7.使用ADO.NET实现(工厂模式-实现多数据库切换)(4) 7.7 业务逻辑层HomeShop.BLL OrderBiz.cs View Code  1 using System; 2 using System.
754 0
c++ GDI 中SelectObject使用方法和注意事项
介绍 CPen* SelectObject( CPen* pPen ); CBrush* SelectObject( CBrush* pBrush ); virtual CFont* SelectObject( CFont* pFont ); CBitmap* SelectObject( CBitmap* pBitmap ); int SelectObject( CRgn* pRgn ); CGdiObject* SelectObject( CGdiObject* pObject ); 函数功能:该函数选择一对象到指定的设备上下文环境中,该新对象替换先前的相同类型的对象。
1169 0
+关注
cloudcoder
热衷于大数据处理技术研究、使用 关注中间件技术
146
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载