终于完成Hadoop 相关信息的系统性学习,最近正在正对Hadoop 不同功能点的学习。由于之前对于分布式网络通信接触比较少,在看到RPC的时候,充满了困惑。
借这篇文章来记录下我的学习方式。
在学习之前首先需要了解java 的动态代理模式。
package com.study.hbase.dynamic.inter; public interface DynamicProtocol { public int add(int a , int b); public int sub(int a , int b); }
然后需要定义一个实现类
package com.study.hbase.dynamic.inter; public class DynamicProtocolImpl implements DynamicProtocol { @Override public int add(int a , int b) { // TODO Auto-generated method stub return a+b; } @Override public int sub(int a , int b ) { // TODO Auto-generated method stub return a-b; } }
这个时候,我们需要定义一个动态的代理类
package com.study.hbase.dynamic.inter; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; public class DynamicProtocolInvocationHandler implements InvocationHandler { private DynamicProtocol obj ; public DynamicProtocolInvocationHandler(DynamicProtocol obj){ this.obj = obj; } @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("=============befor invoke========="); Object res = method.invoke(obj, args); System.out.println("=============befor invoke========="); return res; } }
package com.study.hbase.dynamic; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; import junit.framework.TestCase; import com.study.hbase.dynamic.inter.DynamicProtocol; import com.study.hbase.dynamic.inter.DynamicProtocolImpl; import com.study.hbase.dynamic.inter.DynamicProtocolInvocationHandler; public class TestDynamic extends TestCase { public void testAdd(){ DynamicProtocol protocol = new DynamicProtocolImpl(); InvocationHandler handler = new DynamicProtocolInvocationHandler(protocol); DynamicProtocol proxy = (DynamicProtocol)Proxy.newProxyInstance( DynamicProtocol.class.getClassLoader(), protocol.getClass().getInterfaces(), handler); proxy.add(1, 2); } }
下面是运行的结果
=============befor invoke========= =============befor invoke=========
下面该说道我这次做笔记的主要只是点了
在学习Hadoop RPC之前,首先要知道
1.RPC 是什么,为什么需要RPC?
2.Hadoop 的RPC 是如何工作的?
针对这三个问题,我是逐步去了解的。
1.RPC 是什么
如果你学过java的网络编程,就一定知道:当客户端发送一个字节给服务端时,服务端必须也要有一个读字节的方法在阻塞等待;反之亦然。 这种我把它称为底层的通信协议。可是对于一个大型的网络通信系统来说,很显然这种说法的协议粒度太小,不方便我们理解整个网络通信的流程及架构,于是我们换个角度来理解:架构层次的协议。通俗一点说,就是我把某些接口和接口中的方法称为协议,客户端和服务端只要实现这些接口中的方法就可以进行通信了,从这个角度来说,架构层次协议的说法就可以成立了(学习框架钱切记不要过多的陷入方法实现的细节上,先从整体上把握)
2Hadoop 的RPC 是如何工作的?
相关推荐
Hadoop rpc源码是从Hadoop分离出的ipc,去掉了认证部分,附录使用文档.使用前请add lib包commons-logging-*.*.*.jar(我用的是1.0.4)和log4j-*.*.*.jar(我的1.2.13) 相关blog post: ...
NULL 博文链接:https://wmwork2010.iteye.com/blog/632016
hadoop rpc实例,
RPC(RemoteProcedureCall)——远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPCServer实现了一种抽象的RPC服务,同时提供Call队列。RPCServer作为服务提供者由两个...
1.java接口操作Hadoop文件系统(文件上传下载删除创建......2.RPC远程过程调用的java代码实现,便于理解Hadoop的RPC协议,具体使用方法可参考我的博客https://blog.csdn.net/qq_34233510/article/details/88142507
NULL 博文链接:https://zqhxuyuan.iteye.com/blog/1879292
hadoop rpc 云计算 hdfs mapreduce
《Hadoop 2.X HDFS源码剖析》以Hadoop 2.6.0源码为基础,深入剖析了HDFS 2.X中各个模块的实现细节,包括RPC框架实现、Namenode实现、Datanode实现以及HDFS客户端实现等。《Hadoop 2.X HDFS源码剖析》一共有5章,其中...
Hadoop_RPC详细分析.doc,这是你多关注的
RPC,即RemoteProcdureCall,中文名:远程过程调用;...(2)Hadoop的进程间交互都是通过RPC来进行的,比如Namenode与Datanode直接,Jobtracker与Tasktracker之间等。因此,可以说:Hadoop的运行就是建立在
《Hadoop 2.X HDFS源码剖析》以Hadoop 2.6.0源码为基础,深入剖析了HDFS 2.X中各个模块的实现细节,包括RPC框架实现、Namenode实现、Datanode实现以及HDFS客户端实现等。《Hadoop 2.X HDFS源码剖析》一共有5章,其中...
1.2.1 Hadoop RPC接口 4 1.2.2 流式接口 20 1.3 HDFS主要流程 22 1.3.1 HDFS客户端读流程 22 1.3.2 HDFS客户端写流程 24 1.3.3 HDFS客户端追加写流程 25 1.3.4 Datanode启动、心跳以及执行名字节点指令...
Hadoop自己的Rpc框架使用Demo。可以在自己的项目中用Hadoop的Rpc框架了。
rpc架构与hadoop分享
使用Hadoop的RPC机制创建一个协议接口、通信服务端、通信客户端程序 目标:通过该任务,理解分布式系统中远程过程调用协议,掌握分布式系统中客户机与服务器的通信机制。
这些天一直奔波于长沙和武汉之间,忙着腾讯的笔试、面试,以至于对hadoopRPC(RemoteProcedureCallProtocol,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。...
Hadoop里的RPC机制过程,代码示例rpc调用过程