hadoop 集群的控制和数据流都被 Protocol 协议包装。
hadoop RPC 最简单的使用 说明 :
VersionedProtocol / getProtocolVersion 需要提供一个协议版本
我们先从使用最简单的使用开始理解 hadoop的 RPC.
参考:http://www.cnblogs.com/hiddenfox/archive/2011/12/30/2305786.html
1. 在 Server 端 , 通过 RPC.getServer 绑定实现 VersionedProtocol的实现类 .
实现类 其他RPC方法返回值 须是 Writable 实现类,保证可序列化传输.
2. 在 Client 端 ,调用 RPC.waitForProxy(VersionedProtocol实现类Class)
获取Client端 的代理类。
3. 在 Client 端,调用 proxy.xxx 方法,会在 Server 运行的并把 运行的 xxx 方法的返回值 通过 RPC 返回给 Client 的 proxy.xxx ;
再来看看hadoop内部 RPC 是怎么处理的 :
参考:
了解RPC内部的运行流程
1. 在 Server 端,使用 RPC.getServer
2. 会实例化出 RPC.Server 并 start()
2.1 start listener #server 接受监听请求,拥塞在 selector.select
关键在 listener.doAccept 处, 获取请求后 线程Reader
2.2 start responder #拥塞在 selector.select
2.3 start handlers #拥塞在 callQueue.take()
未完
阅读(1578) | 评论(0) | 转发(1) |