• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > Hadoop 源代码分析(六)RPC-Client,hadooprpc-client

Hadoop 源代码分析(六)RPC-Client,hadooprpc-client

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含hadoop源代码,hadoop源代码下载,hadoop排序代码,hadoop代码,hadoop wordcount代码等服务器相关知识,网友希望可以进行参考

Hadoop 源代码分析(六)RPC-Client,hadooprpc-client


既然是RPC,自然就有客户端和服务器,当然,org.apache.hadoop.rpc 也就有了类Client 和类Server。在这里我们来仔细考
察org.apache.hadoop.rpc.Client。下面的图包含了org.apache.hadoop.rpc.Client 中的关键类和关键方法。
由于Client 可能和多个Server 通信,典型的一次HDFS 读,需要和NameNode 打交道,也需要和某个/某些DataNode 通信。这
就意味着某一个Client 需要维护多个连接。同时,为了减少不必要的连接,现在Client 的做法是拿ConnectionId(图中最右
侧)来做为Connection 的ID。ConnectionId 包括一个InetSocketAddress(IP 地址+端口号或主机名+端口号)对象和一个用
户信息对象。这就是说,同一个用户到同一个InetSocketAddress 的通信将共享同一个连接。
 

连接被封装在类Client.Connection 中,所有的RPC 调用,都是通过Connection,进行通信。一个RPC 调用,自然有输入参数,
输出参数和可能的异常,同时,为了区分在同一个Connection 上的不同调用,每个调用都有唯一的id。调用是否结束也需要
一个标记,所有的这些都体现在对象Client.Call 中。Connection 对象通过一个Hash 表,维护在这个连接上的所有Call:
Java 代码
1. private Hashtable<Integer, Call> calls = new Hashtable<Integer, Call>();
一个RPC 调用通过addCall,把请求加到Connection 里。为了能够在这个框架上传输Java 的基本类型,String 和Writable 接
口的实现类,以及元素为以上类型的数组,我们一般把Call 需要的参数打包成为ObjectWritable 对象。
Client.Connection 会通过socket 连接服务器,连接成功后回校验客户端/服务器的版本号(Client.ConnectionwriteHeader()方
法),校验成功后就可以通过Writable 对象来进行请求的发送/应答了。注意,每个Client.Connection 会起一个线程,不断
去读取socket,并将收到的结果解包,找出对应的Call,设置Call 并通知结果已经获取。
Call 使用Obejct 的wait 和notify,把RPC 上的异步消息交互转成同步调用。

还有一点需要注意,一个Client 会有多个Client.Connection,这是一个很自然的结果。

关注超人学院微信:BJ-CRXY

更多精彩内容请访问:http://bbs.superwu.cn 


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Hadoop源代码分析(三七),hadoop源代码
  • Hadoop 源代码分析(六)RPC-Client,hadooprpc-client
  • Hadoop 源代码分析(三)对象序列化,hadoop序列化
  • hadoop 多数据源连接之DataJoin,hadoopdatajoin

相关文章

  • hive创建表语句详解,hive语句详解
  • 云服务器 性能测试之web压力测试,web压力测试
  • 安装openstack 时 遇见的一些问题及解决方法!,openstack一些问题
  • NOSQL(六)集群并发计算模型Map-Reduce,nosqlmap-reduce
  • win系统下启动linux上的kafka集群及使用,linuxkafka
  • Libvirt中windows虚拟机的动态内存管理,libvirt虚拟机
  • Spark性能优化指南:高级篇
  • Mesos资料收集(持续更新),mesos资料收集
  • 使用sqoop,sqoop2使用
  • Centos 64下实现socket通信,centos64下

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • Spark的Master和Worker集群启动的源码分析,sparkworker
    • 使用sqoop,sqoop2使用
    • [Sqoop]利用sqoop对mysql执行DML操作,sqoopdml
    • Hadoop向HDFS写入、删除、读取文件,
    • spark core源码分析10 Task的运行,sparkcore
    • Llama-impala on yarn的中间协调服务,llama-impalayarn
    • IBM Symphony开发,ibmsymphony开发
    • NOSQL(六)集群并发计算模型Map-Reduce,nosqlmap-reduce
    • R.net获取R中股票的dataframe中的data,r.netdataframe
    • mysql数据导入hbase

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有