介绍完org.apache.hadoop.io 以后,我们开始来分析org.apache.hadoop.rpc。RPC 采用客户机/服务器模式。请求程序就是一
个客户机,而服务提供程序就是一个服务器。当我们讨论HDFS 的,通信可能发生在:
Client-NameNode 之间,其中NameNode 是服务器
Client-DataNode 之间,其中DataNode 是服务器
DataNode-NameNode 之间,其中NameNode 是服务器
DataNode-DateNode 之间,其中某一个DateNode 是服务器,另一个是客户端
如果我们考虑Hadoop 的Map/Reduce 以后,这些系统间的通信就更复杂了。为了解决这些客户机/服务器之间的通信,Hadoop
引入了一个RPC 框架。该RPC 框架利用的Java 的反射能力,避免了某些RPC 解决方案中需要根据某种接口语言(如CORBA 的IDL)
生成存根和框架的问题。但是,该RPC 框架要求调用的参数和返回结果必须是Java 的基本类型,String 和Writable 接口的实
现类,以及元素为以上类型的数组。同时,接口方法应该只抛出IOException 异常。
既然是RPC,当然就有客户端和服务器,当然,org.apache.hadoop.rpc 也就有了类Client 和类Server。但是类Server 是一
个抽象类,类RPC 封装了Server,利用反射,把某个对象的方法开放出来,变成RPC 中的服务器。
下图是org.apache.hadoop.rpc 的类图。
更多精彩内容请关注:http://bbs.superwu.cn
关注超人学院微信:BJ-CRXY
扫一扫微信二维码:
时间: 2024-10-13 12:17:40