请教大神一个问题
Hadoop 2.6中,Client端提交JOB到RM端,他们是通过ApplicationClientProtocol通信的。
在RM端有RMClientService.java作为服务端接收请求并相应,代码是rpc.getServer(ApplicationClientProtocol.class...),可以看出服务端对应的协议是ApplicationClientProtocol。
在Client端有ApplicationClientProtocolPBClientImpl.java作为客户端提交请求,代码是RPC.getProxy(ApplicationClientProtocolPB.class...),可以看出Client端的协议是ApplicationClientProtocolPB。
而ApplicationClientProtocolPB继承了ApplicationClientProtocolService.BlockingInterface,这是GOOGLE的protoBuf的内容。
这能代表ApplicationClientProtocolPB等同于ApplicationClientProtocol吗?服务端和客户端一个是ApplicationClientProtocolPB.class,一个是ApplicationClientProtocol.class为什么可以正常通信?
为什么不在服务端直接写成rpc.getServer(ApplicationClientProtocolPB.class...)呢?
还有ApplicationClientProtocolPBServiceImpl.java是干什么用的呢?
entService.java作为服务端接收请求并相应,代码是rpc.getServer(ApplicationClientProtocol.class...),可以看出服务端对应的协议是ApplicationClientProtocol。
在Client端有ApplicationClientProtocolPBClientImpl.java作为客户端提交请求,代码是RPC.getProxy(ApplicationClientProtocolPB.class...),可以看出Client端的协议是ApplicationClientProtocolPB。
而ApplicationClientProtocolPB继承了ApplicationClientProtocolService.BlockingInterface,这是GOOGLE的protoBuf的内容。