首页 > 语言 > 关键词  > Hadoop最新资讯  > 正文

Hadoop 中 IPC 的源码分析

2013-04-01 10:57 · 稿源: 开源中国社区
文章目录

最近开始看 Hadoop 的一些源码,展开hadoop的源码包,各个组件分得比较清楚,于是开始看一下 IPC 的一些源码。

IPC模块,也就是进程间通信模块,如果是在不同的机器上,那就可以理解为 RPC 了,也就是远程调用。事实上, hadoop 中的 IPC 也就是基于 RPC 实现的。

使用 sloccount 统计一下 ipc 包中代码的行数,一共是 2884 行。也就是说,IPC 作为hadoop的基础组件,仅仅用了不到3000行的代码,就完成得稳定且富有效率。

IPC 中的关键类关系:

对用户而言,可以直接使用的就是绿色的类。

通过 RPC 这个门面:

客户端可以创建相应的 proxy,接着就可以进行远程调用。

而服务提供者则可以创建相应的 server,并进行相应的生命周期管理(start、stop),从而提供服务。

序列化

从上图也可以看出,client 和 server 的交互,是通过网络 connection, 而走网络的调用,是需要走序列化/反序列话的过程的。

这个过程, IPC 使用了 Hadoop 的自己的序列化机制,一切都在 Writable 接口中,只要给定 writable 的 DataOutput 和 DataInput,就可以让 Writable 自己实现序列化。

一些问题和思考

  • client 是单例的吗 —— 可以理解为是,但其实不一定。可以跟踪 getProxy 的代码,虽然每次都会新建一个代理对象,但底层的 Client 还是和 SocketFactory 对应的。一般默认的,都是使用默认的 SocketFactory, 但如果你设置了 "hadoop.rpc.socket.factory.class.default" ,则会有新的Client与你自定义的 SocketFactory 对应。这时候, client 就不是单例的。

  • client 与同一个 server 有几个连接 —— 一个 client与一个 server 只有一个连接,具体可以看生成的代理中,有一个 remoteId, 这个 remoteId 是和 client关联的,client 进行调用的使用,会将此 remoteId 作为一个 connectionId。因此,一般一个 client 是一个连接。

  • 如果 client 是一个连接,那么对此 client 的调用,不都是串行的吗? —— 看你怎么理解了,在用户层面,也就是 client 调用的方法,是可以并发的。client 底层是使用一个连接来进可能的完成吞吐量。每个 request 和 response 都会有一个 id 关联起来。因此一个连接上可以跑满请求和相应。

  • 由于网络问题,client调用服务失败后,有重试机制吗 —— 在IPC中没有看到call的重试,需要上层去保证了。但是后面的调用会重新建立连接。

  • server 是单例的吗 —— 不一定。如果你只 getServer 一次的话。创建一个 server 的代价是非常重的。通过上图你也可以知道,他需要有一个线程 (Listener)来 accept socket,同时需要一些 Reader线程 来进行 socket 的 read,还有一个 Responder 来进行 socket 的 write,另外,还有若干个 handler线程 来进行业务处理。因此,如果可以减少 server 的个数,就应该减少 server 个数。

  • 暴露出的服务是否应该是线程安全的 —— 是的,一定要线程安全。server 底层是通过 nio 进行 socket 操作的,因此虽然只有一个线程负责 accept,但是能够支持很多的client连接。这些连接在到达 server 端之后,很有可能就会并发执行同一方法(如果你的业务handler不止一个的话)

  • 一个 server 要消耗多少线程资源? —— 让我们来算一下,一个 Listener 线程,若干个 Reader 线程(默认1个),若干个 Handler 线程(在 getServer 的时候指定,一般1 - 10个),一个 Responder 线程。如果都按照默认值来计算的话。最少需要 1 + 1 + 1 + 1 = 4 个线程。也许,不应该算多,如果请求量不大的话,这些线程应该都被 blocked 住的。

总结

  • Hadoop 的 IPC 是一个比较轻量级别的 RPC
  • 从代码来看,只支持 java 进程之间的通信
  • 从没有重试机制、一个Client 只有一个连接的机制来看,适合与应用网络环境较好的场景,适合同机架或者同机房的集群。

P.S. 看了一下 io 包中,其实有个 retry 的 package,里面就是一个重试机制。奇怪的是为啥这个 package 被包含在 io package 中。

  • 相关推荐
  • 大家在看
  • 宝马旗下汽车品牌Mini展示下一代Cooper Hardtop

    上个世纪初,宝马公司重新推出了 Mini 品牌,获得了很多赞誉和客户的关注。Cooper 和 Cooper S 车型比当时在售的其他汽车小得多,它散发着一种有趣的极简主义,在保持汽车轻盈的同时增加了个性。本周三发布的公告中,Mini 品牌展示了下一代 Cooper Hardtop。虽然宝马并未披露这款新车型的规格信息,但从展示的照片来看这是一款小巧的三门电动 Cooper,类似于现款 Mini Cooper SE,而且这款车似乎最能唤起人们对最初的新 Mini 的使?

  • 微软Office套件中推出Loop 主打远程和协作工作

    微软正在其Office套件中推出Loop,这是一款新应用程序,目的是简化远程和协作工作时代的项目协作。

  • 新截图曝光微软正开发Microsoft Loop应用:或是办公协作应用

    根据 Twitter 网友 FireCube 上传的一张图片,微软似乎正在开发一个全新的“Microsoft Loop”应用程序。从截图来看这款新应用应该是一个工作空间协作应用,在工作场所的团队会议或类似的协作会议期间,多个用户可以进行互动。但目前这些信息尚未完全确认,Loop 在推出后可能是完全不同的东西。图片还显示正运行“VanArsdel Marketing”的会议。Van Arsdel 是微软早在 2019 年发布的一个面向开发者的端到端 UWP 样本应用程序。因此?

  • Throwboy推新苹果主题枕头系列Iconic Pillow Collection 2

    Throwboy以其精心制作的一系列看起来像经典苹果设备的枕头而闻名,今天,它又宣布了一个新的枕头设计系列--Iconic Pillow Collection 2。目前,Iconic Collection 2在Kickstarter上推出,它共有五个新的枕头。它们都是以苹果设备为模型,其中包括1983年的Apple Lisa、1999年的iBook G3、2000年的Power Mac G4 Cube、2002年的iMac G4和2003年的Power Mac G5。Throwboy表示,这些新的设计是为了庆祝一些计算机历史上最具标志性的、大

  • Tim Cook在犹他州Silicon Slopes峰会上发言后收到油炸酱纪念品

    苹果CEO Tim Cook在10月份的2021年Silicon Slopes峰会上发言,作为回报,他收到了三包犹他州油炸酱。据悉,库克和参议员Mike Lee Lee参加了10月13日的炉边谈话并由此拉开了今年该场科技峰会的序幕。该峰会举办的目的则是展示犹他州的创业和科技部门社区。借用加州硅谷(Silicon Valley)的称谓,Silicon Slopes既是Lehi附近一个拥有6500多家科技公司的地区,同时也是一个为这个新兴商业社区服务的非营利组织的名字。在行业和政府合作

  • Poco X4和Poco X4 NFC即将推出,预计Redmi Note 11 Pro将重新命名

    Poco X3NFC首次亮相已经有一段时间了——事实上,从2020年9月发布到现在已经有一年多了。虽然随着Poco M4Pro的推出,M-line已经进入了4个领域,但中档X系列目前仍由X3NFC和X3Pro组成。根据最新的泄漏消息,这种情况很快就会改变。事实证明,Poco正在为无NFC的印度市场开发一款X4,也在为全球市场开发一款X4NFC。Poco X3NFC在一些IMEI数据库中发现这些的同一消息来源声称,它们基本上将是不久前在中国推出的Redmi Note11Pro的更名版

  • GPD Pocket 3上架众筹,通过模块化端口缓解迷你笔记本端口不足问题

    尺寸是迷你笔记本电脑的优势,同时也是它们的劣势。小巧的尺寸使它们非常便于携带,但用户不得不在打字的舒适度和可用的端口数量上做出妥协。近日,GPD Pocket 3 尝试通过模块化端口设计来解决端口数量不足的问题。GPD Pocket 3 上有一套固定的端口,例如全尺寸的 HDMI、ThunderBolt 4、还有个 2.5Gbps 的 以太网端口。此外它还有一个模块化系统,可以在其他选项之间切换。目前,这仅限于在一个额外的 USB-A 端口、一个 RS-232 端?

  • ConceptsiPhone展示带有侧滑副屏的iPhone 14概念智能机设计

    今秋发布的 iPhone 13 系列智能机,获得了相当不错的市场反响。与此同时,各路概念设计师已经在畅想下一代 iPhone 可能是什么样子。本文要为大家介绍的,则是来自油管 ConcetpsiPhone 频道的“侧滑 iPhone 14”。虽然苹果不见得会如此剑走偏锋,但侧滑出来的第二块屏幕的功能设计还是相当有趣。设计方面,ConceptsiPhone 为“侧滑 iPhone 14”概念智能机选用了打孔屏前摄方案,且后摄模组也与玻璃后盖完全持平(现阶段显然难以兼顾

  • Counterpoint Research:iPhone在美国手机市场是无可争议的领导者

    Counterpoint Research今天早些时候发布了对欧洲第三季度智能手机市场的分析,现在又发布了美国的相应数据。虽然旧大陆更有多样化的制造商选择,但美国民众主要使用苹果或三星手机,这两家公司对竞争对手的领先优势都在增加。值得注意的是,尽管全球零部件持续短缺,但美国智能手机市场交易总额仍按年增长1%。研究主任杰夫·菲尔德哈克透露,美国市场继续保有上升的趋势。苹果公司的销售量增加了9%,而三星公司则录得18%的年增长。

  • Meta Company在公开信中谴责Facebook改名

    据国外媒体报道,总部位于芝加哥的Meta Company(不是Facebook)发表了一封关于Facebook更名的公开信,称Facebook为其域名和商标开出了低价,它拒绝了这些报价,但Facebook却不管不顾地继续宣布其Meta品牌。

这篇文章对你有价值吗?

  • 热门标签

热文

  • 3 天
  • 7天