搜索
搜 索
本版
文章
帖子
用户
图文精华
hadoop-2.6.0+zookeeper-3.4.6+hbase-1.0.0+hive-1.1.0完全分布 ...
首页
Portal
专题
BBS
面试
更多
登录
注册
用户组:游客
主题
帖子
云币
我的帖子
我的收藏
我的好友
我的勋章
设置
退出
导读
淘贴
博客
群组
社区VIP
APP下载
今日排行
本周排行
本周热帖
本月排行
本月热帖
会员排行
About云-梭伦科技
»
专题
›
交流区
›
技术交流
›
HadoopIPC包源码分析
0
0
0
分享
HadoopIPC包源码分析
cochou
发表于 2015-1-29 20:54:12
[显示全部楼层]
阅读模式
关闭右栏
0
7281
Hadoop的IPC:
(1)实现RPC的一种方法,具有快速、简单的特点。 它不像Sun公司提供的标准RPC包,基于Java序列化。
(2)IPC无需创建网络stubs和skeletons。
(3)IPC中的方法调用要求参数和返回值的数据类型必须是Java的基本类型,String和Writable接口的实现类,以及元素为以上类型的数组。接口方法应该只抛出IOException异常。
构建思路:
(1)采用客户/服务器模型
(2)Server:它把Java接口暴露给客户端。指定好监听端口和接受远程调用的对象实例后,通过RPC.getServer()可以得到Server实例。
(3)Client:连接Server,调用它所暴露的方法。Client必须指定远程机器的地址,端口和Java接口类,通过RPC.getClient()可以得到Client实例。
(4)Server不可以向Client发出调用,但在Hadoop中,有双向调用的需求。 比如在DFS,NameNode和DataNode需要互相了解状态。
详细设计:
(1)Writable接口,实现此接口的类可以把类中的域放入流中以及从流中读数据到域中。
(2)对象在传递时按照:对象类名+对象类名长度+对象序列化数据,的格式传输,需要一个类可以解析这种格式,这个类是ObjectWritable,这个类需要知道所有实现Writable的类,以便可以通过类名生成新的对象,故此类依赖于WritableFactories,那存储了Writable子类对应的工厂。
(3)Client类用来和Server通信,一个Client可以发起多个连接,连接需要标识,使用Client.ConnectionId(包含InetSocketAddress,UserGroupInformation,Class<?>)。每个连接有多个调用,使用Client.Call标识(包含int<id>,Writable<param,value>,IOException,boolean<done>)。每个连接用Hashtable<Integer, Call>保存发起的调用。
(4)RPC是Server和Client的结合,waitForProxy方法用来返回一个所有可以采用这种IPC调用的所有接口的父接口VersionedProtocol,其他不同的接口继承这个父接口,这些接口需要有一个版本号。waitForProxy方法的参数应该有用户想要调用方法的接口类<Class>,远程调用的地址<InetAddress>等等。waitForProxy方法返回的是一个动态代理,真正完成方法远程调用的是RPC.Invoker因为,它实现了InvocationHandler接口。
(5)Invoker主要从缓存中取一个Client出来,然后调用Client.call方法,这个方法需要知道方法名,方法参数,方法声明类以及远端地址。
(6)Client.call方法需要根据ConnectionId从缓存中获得Connection,或者新建立一个Connection。Connection的sendParam方法供调用call的线程发送调用参数(方法名,方法参数,方法声明类),在调用sendParam之前,Connection已经建立好连接并发送ConnectionHeader,之后立刻启动接受线程,接受到的可能是函数调用的结果,也可能是连接上的异常消息。
(7)Server的Listen线程负责监听新连接并把读取的调用参数放入BlockingQueue队列,Handler线程负责从队列中拿出Call对象进行处理。
(8)Hadoop的IPC框架做得很好,接下来准备仿照实现一个,更好的发现这个框架的实现技巧。
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
没找到任何评论,期待你打破沉寂
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表新帖
cochou
新手上路
关注
5
主题
470
帖子
4
粉丝
TA的主题
HadoopIPC包源码分析
2015-1-29
Hadoop 2.X 视频
2015-1-26
Hadoop的辉煌还能延续多久?
2015-1-26
{:2_27:}{:2_29:}
2015-1-26
{:2_28:} {:2_32:}
2015-1-18
24小时热文
互联网大厂年终福利曝光:看看别人家老板怎
矩阵分析引论罗家洪(第四版)
像高手一样发言:七种常见工作场景的说话之
携程允许员工春节回乡办公2个月
数据治理实施方案
关闭
推荐
/2
中文版ChatGPT
1.无需魔法 2.提高编程效率 3.提高文档能力
查看 »
新手帮助
新手帮助:注册遇到问题,领取资源,加入铁粉群,不会使用搜索,如何获取积分等
查看 »
意见
反馈