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框架原理、代码示例的更多相关文章

  1. Java中java.util.concurrent包下的4中线程池代码示例

    先来看下ThreadPool的类结构 其中红色框住的是常用的接口和类(图片来自:https://blog.csdn.net/panweiwei1994/article/details/78617117 ...

  2. Python-气象-大气科学-可视化绘图系列(三)—— 地图上自动标注省会名称(demo调整中)(代码+示例)

    本文为原创文章 本文链接:https://www.cnblogs.com/zhanling/p/12606990.html # -*- coding: utf-8 -*- ''' Author: He ...

  3. Hadoop RCFile存储格式详解(源码分析、代码示例)

    RCFile   RCFile全称Record Columnar File,列式记录文件,是一种类似于SequenceFile的键值对(Key/Value Pairs)数据文件.   关键词:Reco ...

  4. MapReduce 示例:减少 Hadoop MapReduce 中的侧连接

    摘要:在排序和reducer 阶段,reduce 侧连接过程会产生巨大的网络I/O 流量,在这个阶段,相同键的值被聚集在一起. 本文分享自华为云社区<MapReduce 示例:减少 Hadoop ...

  5. Hadoop: MapReduce2的几个基本示例

    1) WordCount 这个就不多说了,满大街都是,网上有几篇对WordCount的详细分析 http://www.sxt.cn/u/235/blog/5809 http://www.cnblogs ...

  6. hadoop环境安装及简单Map-Reduce示例

    说明:这篇博客来自我的csdn博客,http://blog.csdn.net/lxxgreat/article/details/7753511 一.参考书:<hadoop权威指南--第二版(中文 ...

  7. 在Eclipse中运行JAVA代码远程操作HBase的示例

    在Eclipse中运行JAVA代码远程操作HBase的示例 分类: 大数据 2014-03-04 13:47 3762人阅读 评论(2) 收藏 举报 下面是一个在Windows的Eclipse中通过J ...

  8. Hadoop计算中的Shuffle过程(转)

    Hadoop计算中的Shuffle过程 作者:左坚 来源:清华万博 时间:2013-07-02 15:04:44.0 Shuffle过程是MapReduce的核心,也被称为奇迹发生的地方.要想理解Ma ...

  9. 从零自学Hadoop(12):Hadoop命令中

    阅读目录 序 HDFS Commands User Commands Administration Commands Debug Commands 引用 系列索引 本文版权归mephisto和博客园共 ...

随机推荐

  1. Centos7中yum安装MySQL

    安装mysql [root@localhost ~]# yum update [root@localhost ~]# cat /etc/redhat-release CentOS Linux rele ...

  2. 常用算法的C++实现

    常用算法的C++实现 // // DZAppDelegate.m // AlgorithmTest // // Created by dzpqzb on 13-8-4. // Copyright (c ...

  3. Angular2 constructor VS ngOnInit

    constructor和ngOnInit钩子有什么不同? constructor constructor(构造函数)是ES6类或TypeScript类中的特殊方法,而不是Angular的方法,主要用来 ...

  4. js判断鼠标滚轴方向(向上或向下)

    var num=1; $(document).on("mousewheel DOMMouseScroll", function (e) { var delta = (e.origi ...

  5. c++抽象类,纯虚函数

  6. 2763. [JLOI2011]飞行路线【分层图最短路】

    Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司.该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并 ...

  7. MyBatis使用自定义TypeHandler转换类型的实现方法

    From: http://www.manongjc.com/article/15577.html 这篇文章主要介绍了MyBatis使用自定义TypeHandler转换类型的实现方法,本文介绍使用Typ ...

  8. PHP扩展功能----cURL

    一.入门三部曲 1.cURL是什么? wikipedia介绍: * cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行.它支持文件上传和下载,所以是综合传输工具,但按传统,习 ...

  9. 轻量ORM-SqlRepoEx (十七)SqlRepoEx 2.30 版本更新说明

    .Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,支持MySQL.SQL Server数据库方言,使用强类型操作数据的轻量级ORM工具,在减少魔法 ...

  10. iOS 根据url生成二维码贴到底图上

    根据url 生成指定尺寸的二维码图片 UIImage * createBinaryCodeImg(const char * url ,CGFloat size) { //create binary c ...