`
zhangyu8374
  • 浏览: 93539 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop系列-IPC模型

阅读更多

IPC

  • 实现RPC的一种方法,具有快速、简单的特点。 它不像Sun公司提供的标准RPC包,基于Java序列化。
  • IPC无需创建网络stubs和skeletons。
  • IPC中的方法调用要求参数和返回值的数据类型必须是Java的基本类型,String和Writable接口的实现类,以及元素为以上类型的数组。接口方法应该只抛出IOException异常。

使用模型

  • 采用客户/服务器模型
  • Server:它把Java接口暴露给客户端。指定好监听端口和接受远程调用的对象实例后,通过RPC.getServer()可以得到Server实例。
  • Client:连接Server,调用它所暴露的方法。Client必须指定远程机器的地址,端口和Java接口类,通过RPC.getClient()可以得到Client实例。
  • Server不可以向Client发出调用,但在Hadoop中,有双向调用的需求。 比如在DFS,NameNode和DataNode需要互相了解状态。
分享到:
评论
4 楼 yanqingluo 2012-08-22  
我的HADOOP源码是最新的,总是编译不过.

编译不过是因为IPC这部分代码

ERROR] E:\Study\Hadoop\common\trunk\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\ipc\Client.java:[61,64] 软件包 org.apache.hadoop.ipc.protobuf.IpcConnectionContextProtos 不存在
[ERROR] E:\Study\Hadoop\common\trunk\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\ipc\Client.java:[62,60] 软件包 org.apache.hadoop.ipc.protobuf.RpcPayloadHeaderProtos 不存在
[ERROR] E:\Study\Hadoop\common\trunk\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\ipc\Client.java:[63,60] 软件包 org.apache.hadoop.ipc.protobuf.RpcPayloadHeaderProtos 不存在
[ERROR] E:\Study\Hadoop\common\trunk\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\ipc\Client.java:[64,60] 软件包 org.apache.hadoop.ipc.protobuf.RpcPayloadHeaderProtos 不存在
[ERROR] E:\Study\Hadoop\common\trunk\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\ipc\Client.java:[65,60] 软件包 org.apache.hadoop.ipc.protobuf.RpcPayloadHeaderProtos 不存在
[ERROR] E:\Study\Hadoop\common\trunk\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\ipc\RPC.java:[45,56] 软件包 org.apache.hadoop.ipc.protobuf.ProtocolInfoProtos 不存在
[ERROR] E:\Study\Hadoop\common\trunk\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\ipc\Server.java:[79,64] 软件包 org.apache.hadoop.ipc.protobuf.IpcConnectionContextProtos 不存在
[ERROR] E:\Study\Hadoop\common\trunk\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\ipc\Server.java:[80,0] 软件包 org.apache.hadoop.ipc.protobuf.RpcPayloadHeaderProtos 不存在
[ERROR] E:\Study\Hadoop\common\trunk\hadoop-common-project\hadoop-common\src\main\java\org\apache\hadoop\ipc\Server.java:[242,6] 找不到符号
[ERROR] 符号: 类 RpcKindProto
[ERROR] 位置: 类 org.apache.hadoop.ipc.Server


博主能跟我分享一份可以编译过的HADOOP 源码吗?
3 楼 aquester 2010-02-01  
java_somuch 写道
我的理解是,任何时候NameNode都不会对DataNode发出请求吧,NameNode给DataNode只会有指示,这些指示是通过DataNode发送过来的心跳包 反馈回去的。

不知道我的理解对不对?


理解得对,DataNode主动上报心跳,IPC详细的了解,请上Hadoop技术论坛,参见:http://bbs.hadoopor.com/thread-329-1-2.html
2 楼 aquester 2010-02-01  
详细的Hadoop IPC分析,请参见:http://bbs.hadoopor.com/thread-329-1-2.html
1 楼 java_somuch 2009-12-29  
我的理解是,任何时候NameNode都不会对DataNode发出请求吧,NameNode给DataNode只会有指示,这些指示是通过DataNode发送过来的心跳包 反馈回去的。

不知道我的理解对不对?

相关推荐

Global site tag (gtag.js) - Google Analytics