Hadoop RPC实例

本文发表于本人博客

    上次写了个hadoop伪分布环境搭建的笔记了,今天来说下hadoop分布式构建的基础RPC,这个RPC在提交Job任务的时候底层就是创建了RPC来实现远程过程调用服务端。

    我们首先可以通过Job的waitForCompletion(boolean verbose)方法来跟踪代码,按照顺序往下查看源码,在JobClient中发现了:

      this.rpcJobSubmitClient = createRPCProxy(JobTracker.getAddress(conf), conf);this.jobSubmitClient = createProxy(this.rpcJobSubmitClient, conf);

我们可以发现createProxy()方法返回的是JobSubmissionProtocol接口,而这个接口实际上继承VersionedProtocol接口,可以查看这个接口的说明:

/*** Superclass of all protocols that use Hadoop RPC.* Subclasses of this interface are also supposed to have* a static final long versionID field.*/

可以看到是所有hadoopRPC的协议超类。那我们来使用这个接口实现在server以及client中RPC。看下面代码:

conf文件类:

/*** RPC 配置* @author Administrator**/
public class conf {public static final String ADDR = "localhost";public static final int PORT = 9000;public static final long version = 123456L;
}

Operator文件类:

interface OperatorAble extends VersionedProtocol {/*** 说话* @param name* @return*/public String Talk(String name);
}
public class Operator implements OperatorAble {/*** 说话* @param name* @return*/@Overridepublic String Talk(String name){System.out.println("Operator is call......");return "hello:" + name;}@Overridepublic long getProtocolVersion(String protocol, long clientVersion) throws IOException{return conf.version;}
}

Server文件类:

/*** RPC 服务端* @author Administrator**/
public class Server {public static void main(String[] args) throws Exception {org.apache.hadoop.ipc.RPC.Server server = RPC.getServer(new Operator(), conf.ADDR, conf.PORT, new Configuration());server.start();}
}

Client文件类:

/*** RPC 客户端* @author Administrator**/
public class Client {public static void main(String[] args) throws Exception  {OperatorAble proxy = (OperatorAble)RPC.waitForProxy(OperatorAble.class, conf.version, new InetSocketAddress(conf.ADDR, conf.PORT), new Configuration());for (int i = 0; i < 100000; i++) {String talk = proxy.Talk("luoliang.me");System.out.println(talk);}RPC.stopProxy(proxy);}}

这里特别需要注意一下的就是实现VersionedProtocol接口的时候,如果直接实现这个接口那么我可以想想在客户端怎么来通过接口调用啊,而这个VersionedProtocol接口是没有我们需要的功能,那只有重新创建一个OperatorAble接口再继承次VersionedProtocol接口了,在客户端那边使用OperatorAble来远程过程调用!当执行

String talk = proxy.Talk("luoliang.me");

时,在服务端就会输出

Operator is call......

这样表示服务端已经调用了!大家可以按照刚才的思路跟踪下去看看他们是怎么做的,这里就不说了。

这次先到这里。坚持记录点点滴滴!



转载于:https://www.cnblogs.com/luoliang/p/4166532.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/248380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Django 模板语言 标签

前言&#xff1a;django的模板语法基本和flask的jinja2基本一样。下面比较一下两个模板语法的区别。 &#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;&#xff0d;深度变量的查找&#xff08;万能的句点号&#xff09; 在 Django 模板中遍历复杂数据结构的关键是…

电子书下载:Illustrated C# 2012 4th

下载&#xff1a;http://www.ctdisk.com/file/9015906转载于:https://www.cnblogs.com/MaxWoods/archive/2012/08/26/2657752.html

关于83版射雕英雄传

今天无意中看到网上一群人关于83版射雕的一些争论.或许一些现在的年轻人不喜欢83版射雕,说那太老土了,但想想那个时代的条件,能拍出这样的片子,是非常不错的,而且我觉得83版射雕也是最忠于原著的,跟后来的翻版比较,虽然从画面效果,人物服装方面存在差距,但这都是由于历史原因和…

ZOJ 3735 Josephina and RPG

思路&#xff1a;dp[i][j]:第i轮打完后&#xff0c;决定以j阵容打下一轮 保持原有阵容&#xff1a;dp[ i ][ j ] dp[ i - 1 ][ j ] * p [ j ][ s [ i ] ] 换成第i轮怪的阵容: for(int k0;k<r;k)dp[i][j]max(dp[i][j],dp[i-1][k]*p[k][s[i]]) 优化&#xff1a;用滚动数组&am…

4~20mA电流输出芯片XTR111完整电路(转)

源&#xff1a; 4~20mA电流输出芯片XTR111完整电路转载于:https://www.cnblogs.com/LittleTiger/p/10511115.html

电子书下载:Programming Microsoft LINQ in Microsoft .NET Framework 4

Book DescriptionDig into LINQ — and transform the way you work with data. With LINQ, you can query data from a variety of sources — including databases, objects, and XML files — directly from Microsoft Visual Basic or C#. Guided by data-access experts w…

原型模式 —— Java的赋值、浅克隆和深度克隆的区别

赋值 直接 &#xff0c;克隆 clone 假如说你想复制一个简单变量。很简单&#xff1a; int a 5; int b a; b 6;这样 a 5, b 6 不仅仅是int类型&#xff0c;其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。 但是如果你复制的是一个…

一个医院院长电视机坏了,拿到一个大修理店去修

一个医院院长电视机坏了&#xff0c;拿到一个大修理店去修。修理店接待人员:“OK&#xff0c;开机费50元”医院院长: “为什么还没修理就要先交费”&#xff1f;修理店接待人员: “我们修理店的制度就是这样&#xff0c;你们医院的挂号费&#xff0c;不是没看病之前就要交吗”&…

[scrum]2011/9/24-----第四天

scrum 总结&#xff1a; Team member Yesterday’s Work Today’s Work Issue R X Task201&#xff1a;Active Agenda Page的重写&#xff0c;界面设置 Task201&#xff1a;Active Agenda Page 界面的美化&#xff0c;收缩折叠&#xff0c;并添加一些动画效果 Task 243:…

c# 前后日期设置

List<string> list new List<string>(); //根据当月 显示前6个月 for(int i0;i<6;i) { list.add(DateTime.Now.AddMonths(i*-1).Tostring()); }转载于:https://www.cnblogs.com/Dcz1996/p/10515429.html

jq-AJAX 初步了解

js的异步操作(1) 定时器 (2) 事件 (3) 回调 (4) ajax Ajax优点 可以局部更新网页内容。 ajax的本质就是xmlHttpRequest对象控制台出现三个属性 readyState 请求的五个阶段 0 1 2 3 4 responseText 返回的文件内容 Status 状态吗 返回的状态信息 在__proto__有三个方法 …

ARM学习笔记7——乘法指令

ARM乘法指令完成两个数据的乘法&#xff0c;两个32位二进制数相乘的结果是64位的4积。 其中&#xff1a; 1、“RadHi:RdLo”是由RdHi(最高有效32位)和RdLo(最低有效32位)链接形成的64位数&#xff0c;“[31:0]”只选取结果的最低有效32位 2、简单的赋值由“&#xff1a;”表示…

《剑指offer》第四十三题(从1到n整数中1出现的次数)

// 面试题43&#xff1a;从1到n整数中1出现的次数 // 题目&#xff1a;输入一个整数n&#xff0c;求从1到n这n个整数的十进制表示中1出现的次数。例如 // 输入12&#xff0c;从1到12这些整数中包含1 的数字有1&#xff0c;10&#xff0c;11和12&#xff0c;1一共出现了5次。#in…

回调函数

又称callback函数。意思是指&#xff1a;在你的程序中&#xff0c;被windows系统调用的函数。 这些函数虽然由你设计&#xff0c;但是永远不会也不该被你调用&#xff0c;它们是为windows系统准备的。 窗口函数设计为callback形式&#xff0c;才能开放出一个接口给操作系统调用…

固态硬盘Ghost安装Windows 10无法引导的问题

机器配置如下&#xff1a; 电脑型号 技嘉 B360M POWER 台式电脑操作系统 Windows 10 64位 ( DirectX 12 )处理器 英特尔 Core i7-8700 3.20GHz 六核主板 技嘉 B360M POWER ( 英特尔 PCI 标准主机 CPU 桥 - CannonLake - A3…

Linux shell 内部命令与外部命令有什么区别以及怎么辨别

内部命令实际上是shell程序的一部分&#xff0c;其中包含的是一些比较简单的linux系统命令&#xff0c;这些命令由shell程序识别并在shell程序内部完成运行&#xff0c;通常在linux系统加载运行时shell就被加载并驻留在系统内存中。内部命令是写在bashy源码里面的&#xff0c;其…

[转]矩阵分解在推荐系统中的应用

矩阵分解是最近几年比较火的算法&#xff0c;经过kddcup和netflix比赛的多人多次检验&#xff0c;矩阵分解可以带来更好的结果&#xff0c;而且可以充分地考虑各种因素的影响&#xff0c;有非常好的扩展性&#xff0c;因为要考虑多种因素的综合作用&#xff0c;往往需要构造cos…

iPhone 系统刷机

1. 下载好固件(爱思 或者 pp助手) e.g. http://jailbreak.25pp.com/gujian/ 2. 将电脑与手机连接上&#xff0c;弹出iTunes软件即可 3. 长按手机电源键 关闭手机 4. 按住电源健&#xff0c;出现屏幕亮出现苹果标志后再按住Home健 5. 屏幕黑屏时松开电源健&#xff0c;继续按照H…

hdu4044

题意&#xff1a;给你一颗树有n个节点&#xff0c;树的根节点为1&#xff0c;表示为敌人的基地&#xff0c;其他叶子节点为你的基地&#xff0c;你一开始有m元&#xff0c;给你每个节点可以建造的塔的数量和塔的价格和可以照成的伤害&#xff0c;每个节点至多建立一座塔。敌人的…

RS100项目进展更新

1. 添加手机界面访问网页&#xff0c;毕竟PDA的屏幕大小和PC机大小不一致&#xff0c;完成了一自适应网页&#xff0c;便于在手机上观看实时画面&#xff1b; 2. 此项目为一个远程视频监控远程开关项目&#xff0c;远程PC机或者手机能操作到监控端的开关&#xff0c;所以在远程…