Hadoop重温(4)--ipc

依赖于Hadoop Writable类型的支持。Hadoop Writable接口要求每个实现类都得确保将本类的对象正确序列化(writeObject)与反序列化(readObject)。因此,Hadoop RPC使用Java动态代理与反射实现对象调用方式,客户端到服务器数据的序列化与反序列化由Hadoop框架或用户自己来实现,也就是数据组装是定制的。

Hadoop IPC在org.apache.hadoop.ipc

 

  • RemoteException:远程异常,表示远程调用过程中的错误。
  • Status:枚举类,包括 SUCCESS (0) 成功,  ERROR (1)一般错误,  FATAL (-1)致命错误;三种状态
  • VersionedProtocol:Hadoop IPC的远程接口都需继承
  • ConnectionHeader:建立连接时发送的消息头。

IPC的核心类在Client,Server,RPC中,

 

Connection

                IPC连接时IPC Client和Server关系的一个抽象,Client调用Server上方法前,会创建Connection。同样server也存在Connection。Client.Connection和Server.Connection,各自提供了客户端和服务端管理连接需要的信息和方法。Hadoop的远程过程调用使用TCP协议通信,IPC建立在TCP连接之上。

               (1)ConnectionId

                        通过ConnectionId来区分不同链接


  
Hadoop重温(4)--ipc_第1张图片

                    
            address:远程放服务器的地址。

            ticket:包含了用户和用户组的信息

           protocol:报错的是IPC接口对应的类对象。

           在上述三个成员变量相等的情况,ConnectionId相等。

                    (2)ConnectionHeader

                         
Hadoop重温(4)--ipc_第2张图片
                       是客户端和服务器间TCP链接建立后交换的第一条消息,内容包括ConnectionId的用户信息和IPC接口信息。

 

Call

       在客户端和服务器建立连接以后,通过Call进行远程调用,客户端和服务端分别定义了远程调用类Call,Client.Call和Server.Call。

      Client还定义了ParallelCall,用于并行处理。

      Client.Call是有IPC客户端接口实例上的方法调用产生的

      可以说Hadoop RPC=动态代理+定制二进制流

 

       

你可能感兴趣的:(hadoop)