hadoop ipc.Server

Hadoop IPC分析 (基于v0.1.0)

抽象类,由RPC.Server实现了Writable call(Writable param)方法。

通过RPC.getServer()方法被调用,然后start()线程。

从业务上看,会启动server线程的地方有三处:

1. TaskTracker  2. JobTracker  3. NameNode

Server类的属性如下:

1. ThreadLocal SERVER; // 为线程局部变量

2. int port; // 端口

3. int handlerCount; // handler数量,dfs.namenode.handler.count,默认为10

4. int maxQueuedCalls; // 大小同handlerCount

5. Class paramClass; // 参数信息类,RPC.Invocation.class

6. Configuration conf; // 配置信息

7. int timeout; // ipc.client.timeout,默认10000

8. boolean running; // 状态位

9. LinkedList callQueue; // 请求队列

10. Object callDequeued; // 锁

Call类封装了client call id、参数和连接对象。

Connection类为线程,封装了连接的信息,包括socket、in和out。启动后读取client call id和参数信息,生成Call对象,加入callQueue队列。

Listener类为daemon线程,封装了socket信息,监听port端口,一个Listener对应一个Connection。

以上三个类的包含关系为: Listener -> Connection -> Call

Handler类为daemon线程类,循环读取callQueue请求队列,获取请求后,Writable value = call(call.param);然后将结果写到输出流中。

一个Server由一个Listener和多个Handler组成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值