收藏私塾在线
 

欢迎您来到私塾在线网!   

请登录! 

免费注册 


hadoop的笔记
状态: 离线
人气:3294616
访问用户量:3108
笔记经验:
总积分:1409
级别:普通会员
搜索本笔记
ta的交流分类
ta的交流主题贴(89)
ta的所有交流贴(96)
ta的全部笔记
全部笔记(163)
未分类笔记(0)
hadoop(62)
luoli的Hado……(18)
精通hadoop(7)
Hadoop原理与代……(1)
HBase(6)
深入浅出学Hive(11)
Hadoop实战-中……(11)
Hadoop实战-初……(8)
hadoop & h……(2)
Hive(15)
zookeeper(4)
Hadoop Str……(7)
云计算综合实战项目(11)
存档
2013-04(11)
2012-10(11)
2012-09(10)
2012-08(112)
2012-07(19)

2012-12-07 14:17:04
Hadoop实战-中高级部分 之 Hadoop RPC
浏览(16543)|评论(2)   交流分类:Java|笔记分类: Hadoop实战-中……

第一部分:什么是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. 客户接收句柄返回的数据
  
第二部分:Hadoop的RPC机制
Hadoop PRC
•Hadoop RPC在整个Hadoop中应用非常广泛,Client、DataNode、NameNode之间的通讯全靠它了。
         举个例子,我们平时操作HDFS的时候,使用的是FileSystem类,它的内部有个DFSClient对象,这个对象负责与NameNode打交道。在运行时,DFSClient在本地创建一个NameNode的代理,然后就操作这个代理,这个代理就会通过网络,远程调用到NameNode的方法,也能返回值。
•Hadoop RPC 位于org.apache.hadoop.ipc
•Hadoop RPC = 动态代理 + 定制好的二进制流
•分为Server与Clinet端
服务端流程
•Listener线程监视RPC Client发送过来的数据。
•当有数据可以接收时,调用Connection的readAndProcess方法。
• Connection边接收边对数据进行处理,如果接收到一个完整的Call包,则构建一个Call对象。PUSH到Call队列中,由Handler线程来处理Call队列中的所有Call。
•Handler线程监听Call队列,如果Call队列非空,按FIFO规则从Call队列取出Call。
•将Call交给RPC.Server处理。
•借助JDK提供的Method,完成对目标方法的调用,目标方法由具体的业务逻辑实现。
•返回响应。Server.Handler按照异步非阻塞的方式向RPC Client发送响应,如果有未发送出的数据,则交由Server.Responder来完成。
 
服务端
结构
功能
 
Server.Listener
RPC Server的监听者,用来接收RPC Client的连接请求和数据,其中数据封装成Call后PUSH到Call队列。
Server.Handler
RPC Server的Call处理者,和Server.Listener通过Call队列交互。
Server.Responder
RPC Server的响应者。Server.Handler按照异步非阻塞的方式向RPC Client发送响应,如果有未发送出的数据,交由Server.Responder来完成。
Server.Connection
RPC Server数据接收者。提供接收数据,解析数据包的功能。
Server.Call
持有客户端的Call信息。
 
客户端
 
结构
功能
Client.ConnectionId
到RPC Server对象连接的标识
Client.Call
Call调用信息。
Client.ParallelResults
Call响应。
RPC.Invoker
对InvocationHandler的实现,提供invoke方法,实现RPC Client对RPC Server对象的调用。
RPC.Invocation
用来序列化和反序列化RPC Client的调用信息。(主要应用JAVA的反射机制和InputStream/OutputStream)
 
 
一些细节
1. 根据 RPC Server IP PORT 从连接池中拿 Con
2. 如果为空,新建连接放到连接池
3. 创建 Socket 建立到 Server 的连接
4. 创建输入输出流对象
5. 将序列化的参数发到服务端
6. 等待服务端响应
 
•客户端发起的RPC调用是同步的,而服务端处理RPC调用是异步的。客户端调用线程以阻塞同步的方式发起RPC连接及RPC调用,将参数等信息发送给Listener,然后等待Connection接收响应返回。
•Listener负责接收RPC连接和RPC数据,当一个Call的数据接收完后,组装成Call,并将Call放入由Handler提供的Call队列中。
•Handler线程监听Call队列,如果Call队列不为空,则按FIFO方式取出Call,并转为实际调用,以非阻塞方式将响应发回给Connection,未发送完毕的响应交给Responder处理。
 
第三部分:使用Hadoop RPC
流程
•实现VersionedProtocol
•继承VersionedProtocol ,定义Server(即NameNode)
•实现Clinet(即DataNode)
  
实现VersionedProtocol 
public interface RPC Protocol Test extends VersionedProtocol {
    public Text println(Text t);
}
 
精品视频课程推荐

Hadoop实战-初级部分视频教程
Hadoop初级精品课程,帮助学员快速掌握Hadoop入门到上手开发,并掌握一定的开发技巧。通过Hadoop初级课程,学员可以掌握基本的Hadoop 原理,Hadoop环境搭建,Hadoop Shell,Hadoop HDFS基本操作和编程,Hadoop Mapreduce编程。

深入浅出学Zookeeper
内容概述:本课程深入浅出的讲解Hadoop 体系下的分布式协调组件-Zookeeper,向大家介绍了Zookeeper的原理与使用,深入浅出,结合生动实例,具有很高的实战意味 技术要点:Zookeepr 原理,Zookeeper 架构,Zookeeper 简单使用,Zookeeper Watch等

云计算综合实战项目视频教程(更新版)
内容概述:通过一个真实完整的项目——某大型互联网企业用户上网行为日志分析系统,系统学习Hadoop、Hive,HBase、Zookeeper等云计算开发技术在真实商业系统中到底如何使用。具有极高的学习和参考价值。 该系统是一个每天5亿条数据,上百个节点的实际商业项目,该系统将海量日志数据进行分布式存储,并通过分布式算法和网络爬虫技术形成标签化的用户模型,最终实现人与内容、人与行为、人与商品的智能配对。 技术要点:Hadoop、Hive、HBase、Zookeeper、爬虫技术等

Hadoop实战-中高级部分视频教程
Hadoop中高级精品课程,帮助学员快速掌握Hadoop HDFS的原理;MapReduce的原理;MapReduce高级编程;Hadoop的IO机制,如序列化、压缩;Hadoop的RPC,RESTFul API等高级特性;彻底理解Hadoop,成为一名合格的云计算开发者。并掌握一些云端基本的运维知识,从而实现开发和运维兼修的高级人才。

浏览(16543)|评论(2)   交流分类:Java|笔记分类: Hadoop实战-中……

评论(2)
2楼 superny1985  2012-12-07 引用

谢谢分享!

1楼 tomdog  2012-09-06 引用
学习hadoop...
请登录后评论 登录

关于我们 | 联系我们 | 用户协议 | 私塾在线服务协议 | 版权声明 | 隐私保护

版权所有 Copyright(C)2009-2012 私塾在线学习网