2 Hadoop RPC使用抽象
Hadoop RPC框架的使用可以抽象成以下几个步骤:
- 定义RPC协议
- 实现RPC协议
- 客户端获取代理对象proxy
- 服务端获取服务对象server
2.1 定义RPC协议
ClientProtocol协议定义了HDFS客户端与名字节点交互的所有方法,但是ClientProtocol协议中方法的参数是无法在网络中传输的,需要对参数进行序列化操作,所以HDFS又定义了ClientNamenodeProtocolPB协议。ClientNamenodeProtocolPB协议包含了ClientProtocol定义的所有方法,但是参数却是使用protobuf(hadoop默认的序列化工具)序列化后的格式。
为了将不可以序列化的ClientProtocol接口调用转换为可以序列化的ClientNamenodeProtocolPB接口调用,HDFS引入了适配器类ClientNamenodeProtocolTranslatorPB(桥梁的作用,作用是将传入的参数序列化交给下家,即将ClientProtocol协议上的请求适配成ClientNamenodeProtocolPB协议的请求)进行接口适