006、Hadoop-RPC之底层实现详解

第一部分:什么是RPC

RPC (Remote Procedure Call Protocol) – 远程过程协议调用 。通过 RPC 我们可以从网络上的计算机请求服务,而不需要了 解底层网络协议。 Hadoop 底层的交互都是通过 rpc 进行的。例 如: datanode 和 namenode 、 tasktracker和 jobtracker 、 secondary namenode 和 namenode 之间的通信都是通过 rpc 实 现的。

RPC 模式

RPC 采用客户机 / 服务器 模式 。请求程序就是一个客户机, 而服务提供程序就是一个服务器。首先,客户机调用进程发送 一个有进程参数的调用信息到服务进程,然后等待应答信息。 在服务器端,进程保持睡眠状态直到调用信息的到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答 复信息,然后等待下一个调用信息,最后, 客户端 调用进程接 收答复信息,获得进程结果,然后调用执行继续进行。

工作原理

运行时 , 一次客户机对服务器的 RPC 调用 , 其内部操作大致有如下十步:

1. 调用客户端句柄;执行传送参数

2. 调用本地系统内核发送网络 消息

3. 消息传送到远程 主机

4. 服务器句柄得到消息并取得参数

5. 执行远程过程

6. 执行的过程将结果返回服务器句柄

7. 服务器句柄返回结果,调用远程系统内核

8. 消息传回 本地主机

9. 客户句柄由内核接收消息

10. 客户接收句柄返回的数据

第二部分:HadoopRPC机制

Hadoop PRC

1.Hadoop RPC在整个Hadoop中应用非常广泛,Client、DataNode、NameNode之间的通讯全靠它了。

举个例子,我们平时操作HDFS的时候,使用的是FileSystem类,它的内部有个DFSClient对象,这个对象负责与NameNode打交道。在运行时,DFSClient在本地创建一个NameNode的代理,然后就操作这个代理,这个代理就会通过网络,远程调用到NameNode的方法,也能返回值。

2.Hadoop RPC 位于org.apache.hadoop.ipc

3.Hadoop RPC = 动态代理 + 定制好的二进制流

4.分为Server与Clinet端

服务端流程

1.Listener线程监视RPC Client发送过来的数据。

2.当有数据可以接收时,调用Connection的readAndProcess方法。

3. Connection边接收边对数据进行处理,如果接收到一个完整的Call包,则构建一个Call对象。PUSH到Call队列中,由Handler线程来处理Call队列中的所有Call。

4.Handler线程监听Call队列,如果Call队列非空,按FIFO规则从Call队列取出Call。

5.将Call交给RPC.Server处理。

6.借助JDK提供的Method,完成对目标方法的调用,目标方法由具体的业务逻辑实现。

7.返回响应。Server.Handler按照异步非阻塞的方式向RPC Client发送响应,如果有未发送出的数据,则交由Server.Responder来完成。

时间: 2024-08-05 19:13:56

006、Hadoop-RPC之底层实现详解的相关文章

HP-lefthand底层结构详解及存储灾难数据恢复

一.HP-lefthand的特点 HP-lefhand是一款非常不错的SAN存储,使用iscsi协议为客户端分配空间.它支持RAID5.RAID6以及RAID10.并且还支持卷快照,卷动态扩容等.常见的型号有:P4500,P4300,P4000等,基于市场占有量和软件定义存储的弊端,有一定的数据恢复市场需求. HP-lefhand的存储系统是一款嵌入式LINUX系统,需要安装客户端软件才能配置lefthand. 服务端: 客服端: 二.HP-lefthand的存储结构 Lefthand存储一共分

Hadoop 发行版本 Hortonworks 安装详解(四) 开启Kerberos集群安全验证

一.安装KDC Server 需要选择一个节点安装KDC服务器,这里选择备用头结点 yum install -y krb5-server krb5-libs krb5-workstation 修改配置文件 vi /etc/krb5.conf 把 EXAMPLE.COM 改为 自己想要的名字,[realms]配置段也需要根据实际情况修改 创建数据库 kdb5_util create -s -r EXAMPLE.COM(改成实际名称) 耐心等待一会,创建数据库有点慢 随后会要求你输入数据库主密钥并完

Hadoop新MapReduce框架Yarn详解

简介 本文介绍了Hadoop自0.23.0版本后新的MapReduce框架(Yarn)原理,优势,运行机制和配置方法等,着重介绍新的yarn框架相对于原框架的差异及改进,并通过Demo示例详细介绍了在新的Yarn框架下搭建和开发Hadoop程序的方法.读者通过本文中新旧Hadoop MapReduce框架的对比,更深刻理解新的yarn框架技术与那里和设计思想,文中的Demo代码经过微小修改既可用于用户基于Hadoop新框架的实际生产环境. Hadoop MapReduceV2(Yarn)框架简介

Hadoop 新 MapReduce 框架 Yarn 详解

原 Hadoop MapReduce 框架的问题 对于业界的大数据存储及分布式处理系统来说,Hadoop 是耳熟能详的卓越开源分布式文件存储及处理框架,对于 Hadoop 框架的介绍在此不再累述,读者可参考 Hadoop 官方简介.使用和学习过老 Hadoop 框架(0.20.0 及之前版本)的同仁应该很熟悉如下的原 MapReduce 框架图: 图 1.Hadoop 原 MapReduce 架构 从上图中可以清楚的看出原 MapReduce 程序的流程及设计思路: 首先用户程序 (JobCli

大数据学习系列之四 ----- Hadoop+Hive环境搭建图文详解(单机)

引言 在大数据学习系列之一 ----- Hadoop环境搭建(单机) 成功的搭建了Hadoop的环境,在大数据学习系列之二 ----- HBase环境搭建(单机)成功搭建了HBase的环境以及相关使用介绍.本文主要讲解如何搭建Hadoop+Hive的环境. 一.环境准备 1,服务器选择 本地虚拟机 操作系统:linux CentOS 7 Cpu:2核 内存:2G 硬盘:40G 说明:因为使用阿里云服务器每次都要重新配置,而且还要考虑网络传输问题,于是自己在本地便搭建了一个虚拟机,方便文件的传输以

底层战详解使用Java开发Spark程序(DT大数据梦工厂)

Scala开发Spark很多,为什么还要用Java开发原因:1.一般Spark作为数据处理引擎,一般会跟IT其它系统配合,现在业界里面处于霸主地位的是Java,有利于团队的组建,易于移交:2.Scala学习角度讲,比Java难.找Scala的高手比Java难,项目的维护和二次开发比较困难:3.很多人员有Java的基础,确保对Scala不是很熟悉的人可以编写课程中的案例预测:2016年Spark取代Map Reduce,拯救HadoopHadoop+Spark = A winning combat

java虚拟机底层结构详解[转]

本文来自:曹胜欢博客专栏.转载请注明出处:http://blog.csdn.net/csh624366188 在以前的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本语法到SSH框架.这里面应该包含了在java领域里面的大部分内容了吧.但是,那些知识点是让我们从一个应用的层面上了解了java,java程序真正底层的运行机制和一些底层虚拟机的工作我们还不了解,虽然这些内容在我们真正的开发中几乎用不到这些底层的东西,但对于我们对java的理解会有比较大的帮助.尤其也对以后

深入java虚拟机(一)——java虚拟机底层结构详解

在以前的博客里面,我们介绍了在java领域中大部分的知识点,从最基础的java最基本语法到SSH框架.这里面应该包含了在java领域里面的大部分内容了吧.但是,那些知识点是让我们从一个应用的层面上了解了java,java程序真正底层的运行机制和一些底层虚拟机的工作我们还不了解,虽然这些内容在我们真正的开发中几乎用不到这些底层的东西,但对于我们对java的理解会有比较大的帮助.尤其也对以后java开发中的性能优化有很大帮助,可以使我们减少一些没必要的内存浪费等好处.所以,从今天开始,我将和大家一起

Hadoop NFS GateWay部署深入详解

目的:通过挂载的方式,可以类似访问本地磁盘的方式一样的访问Hadoop文件,简单.方便.快捷. 0.系统版本&hadoop版本 1)系统版本 [root@WEB-W031 sbin]# cat /etc/issue CentOS release 5.8 (Final) 2)Hadoop版本 [[email protected] /]# hadoop version Hadoop 2.7.2 Subversion https://git-wip-us.apache.org/repos/asf/ha