源码级强力分析Hadoop的RPC机制

2019年10月3日17:33:10
评论

言:

这些天一直奔波于长沙和武汉之间,忙着腾讯的笔试、面试,以至于对Hadoop RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。机制分析的文章一直耽搁了下来。昨天晚上胡老大和我抱怨说:最近乱的很。呵呵,老是往武汉跑,能不乱嘛。不过差不多腾讯面试的事就该告一段落了。五一期间,云计算小组的成员们,我们再搞起来吧。记住,我们还有一本hadoop的手册没出来呢。胡老大已经答应给我们写提纲了,在这期间,我们还是先把内功再修炼修炼吧。

分析对象:
hadoop版本:hadoop 0.20.203.0

必备技术点:
1. 动态代理(参考 :http://www.linuxidc.com/Linux/2012-06/62079.htm )
2. Java NIO(参考 :http://www.linuxidc.com/Linux/2012-06/62080.htm )
3. Java网络编程

目录:
一.RPC协议
二.ipc.RPC源码分析
三.ipc.Client源码分析
四.ipc.Server源码分析

分析:

一.RPC协议

在分析协议之前,我觉得我们很有必要先搞清楚协议是什么。下面我就谈一点自己的认识吧。如果你学过java的网络编程,你一定知道:当客户端发送一个字节给服务端时,服务端必须也要有一个读字节的方法在阻塞等待;反之亦然。 这种我把它称为底层的通信协议。可是对于一个大型的网络通信系统来说,很显然这种说法的协议粒度太小,不方便我们理解整个网络通信的流程及架构,所以我造了个说法:架构层次的协议。通俗一点说,就是我把某些接口和接口中的方法称为协议,客户端和服务端只要实现这些接口中的方法就可以进行通信了,从这个角度来说,架构层次协议的说法就可以成立了(注:如果从架构层次的协议来分析系统,我们就先不要太在意方法的具体实现,呵呵,我相信你懂得~)。

Hadoop的RPC机制正是采用了这种“架构层次的协议”,有一整套作为协议的接口。如图:

源码级强力分析Hadoop的RPC机制

下面就几个重点的协议介绍一下吧:

VersionedProtocol :它是所有RPC协议接口的父接口,其中只有一个方法:getProtocolVersion()

(1)HDFS相关
ClientDatanodeProtocol :一个客户端和datanode之间的协议接口,用于数据块恢复
ClientProtocol :client与Namenode交互的接口,所有控制流的请求均在这里,如:创建文件、删除文件等;
DatanodeProtocol : Datanode与Namenode交互的接口,如心跳、blockreport等;
NamenodeProtocol :SecondaryNode与Namenode交互的接口。

企鹅博客
  • 本文由 发表于 2019年10月3日17:33:10
  • 转载请务必保留本文链接:https://www.qieseo.com/151270.html

发表评论