【Hadoop】Hadoop 中 RPC框架原理、代码示例
0、内容

1、hadoop中的RPC框架封装思想

2、Hadoop RPC 实现方法

3、服务调用动态转发和负载均衡的实现思考

4、协议代码:
package com.ares.hadoop.rpc;
public interface HelloProtocol {
public static final long versionID = 1L;
public String helloMethod(String name);
}
5、服务端代码:
package com.ares.hadoop.rpc; import java.io.IOException; import org.apache.hadoop.HadoopIllegalArgumentException;
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 org.apache.log4j.Logger; public class HelloServer implements HelloProtocol { private static final Logger LOGGER = Logger.getLogger(HelloServer.class); @Override
public String helloMethod(String name) {
// TODO Auto-generated method stub
LOGGER.debug("name: " + name);
return "Hello, " + name;
} public static void main(String[] args) throws HadoopIllegalArgumentException, IOException {
Builder builder = new RPC.Builder(new Configuration());
String bindAddress = "HADOOP-NODE1";
int port = ;
builder.setBindAddress(bindAddress)
.setPort()
.setProtocol(HelloProtocol.class)
.setInstance(new HelloServer());
Server server = builder.build();
LOGGER.debug("Server start to listen on " + port);
server.start();
} }
6、客户端代码:
package com.ares.hadoop.rpc; import java.io.IOException;
import java.net.InetSocketAddress; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.ipc.RPC;
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test; public class HelloClientTest {
private static final Logger LOGGER = Logger.getLogger(HelloClientTest.class); @Before
public void setUp() {
}
@After
public void tearDown() {
} @Test
public void testHello() throws IOException {
// TODO Auto-generated method stub
LOGGER.debug("RPCClientTest: testHello");
String bindAddress = "HADOOP-NODE1";
int port = ;
InetSocketAddress addr = new InetSocketAddress(bindAddress, port);
HelloProtocol proxy = RPC.getProxy(
HelloProtocol.class, HelloProtocol.versionID,
addr, new Configuration());
String resp = proxy.helloMethod("JunneYang");
LOGGER.debug(resp);
resp = proxy.helloMethod("Ares");
LOGGER.debug(resp);
}
}
【Hadoop】Hadoop 中 RPC框架原理、代码示例的更多相关文章
- Java中java.util.concurrent包下的4中线程池代码示例
先来看下ThreadPool的类结构 其中红色框住的是常用的接口和类(图片来自:https://blog.csdn.net/panweiwei1994/article/details/78617117 ...
- Python-气象-大气科学-可视化绘图系列(三)—— 地图上自动标注省会名称(demo调整中)(代码+示例)
本文为原创文章 本文链接:https://www.cnblogs.com/zhanling/p/12606990.html # -*- coding: utf-8 -*- ''' Author: He ...
- Hadoop RCFile存储格式详解(源码分析、代码示例)
RCFile RCFile全称Record Columnar File,列式记录文件,是一种类似于SequenceFile的键值对(Key/Value Pairs)数据文件. 关键词:Reco ...
- MapReduce 示例:减少 Hadoop MapReduce 中的侧连接
摘要:在排序和reducer 阶段,reduce 侧连接过程会产生巨大的网络I/O 流量,在这个阶段,相同键的值被聚集在一起. 本文分享自华为云社区<MapReduce 示例:减少 Hadoop ...
- Hadoop: MapReduce2的几个基本示例
1) WordCount 这个就不多说了,满大街都是,网上有几篇对WordCount的详细分析 http://www.sxt.cn/u/235/blog/5809 http://www.cnblogs ...
- hadoop环境安装及简单Map-Reduce示例
说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511 一.参考书:<hadoop权威指南--第二版(中文 ...
- 在Eclipse中运行JAVA代码远程操作HBase的示例
在Eclipse中运行JAVA代码远程操作HBase的示例 分类: 大数据 2014-03-04 13:47 3762人阅读 评论(2) 收藏 举报 下面是一个在Windows的Eclipse中通过J ...
- Hadoop计算中的Shuffle过程(转)
Hadoop计算中的Shuffle过程 作者:左坚 来源:清华万博 时间:2013-07-02 15:04:44.0 Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解Ma ...
- 从零自学Hadoop(12):Hadoop命令中
阅读目录 序 HDFS Commands User Commands Administration Commands Debug Commands 引用 系列索引 本文版权归mephisto和博客园共 ...
随机推荐
- December 16th 2016 Week 51st Friday
My life is a straight line, turning only for you. 我的人生是一条直线,转弯只是为了你. My life is a straight line that ...
- codeforces 156D Clues(prufer序列)
codeforces 156D Clues 题意 给定一个无向图,不保证联通.求添加最少的边使它联通的方案数. 题解 根据prufer序列,带标号无根树的方案数是\(n^{n-2}\) 依这个思想构建 ...
- 2、Node.js 第一个应用
内容:三种变量申明方式,Node.js应用组成,第一个应用创建+代码 ################################################################# ...
- java多态-优化上个实例
开闭原则:对修改是封闭的,对扩展是开放的,不要违反开闭原则. 可以使用多态解决这个问题.父类的引用变量可以引用子类是对象. 写的越是抽象,越是稳定 public class printerDemo { ...
- jQueryeasyUI+Hibernate+struts2实现商城后台管理之复合类别
一.在Category.java中添加父类别和子类别两个变量,并生成get/set方法
- Java异常总结和Spring事务处理异常机制浅析
异常的概念和Java异常体系结构 异常是程序运行过程中出现的错误.本文主要讲授的是Java语言的异常处理.Java语言的异常处理框架,是Java语言健壮性的一个重要体现. Thorwable类所有异常 ...
- Django的视图响应类型
Django的视图响应类型 一. 视图函数编写原则 视图函数接受HTTP请求并返回响应,可以放在任何地方,可以是任何功能:视图函数可以返回Web文本,页面.重定向.错误.图片等任何内容:视图函数通过H ...
- C++获取毫秒级时间戳
#include<chrono> auto timeNow = chrono::duration_cast<chrono::milliseconds>(chrono::sy ...
- Java中的集合和常用类
Java中的常用类: ▪ Object类 ▪ Math类 ▪ String类和StringBuffer类(字符串) ▪ 8种基本类型所对应的包装类 ▪ java.util包中的类——Date类 Obj ...
- Web—11-手机端页面适配
流式布局: 就是百分比布局,非固定像素,内容向两侧填充,理解成流动的布局,成为流式布局 视觉窗口: viewport是移动端持有.这是一个虚拟的区域,承载网页的. 承载关系:浏览器—->view ...