Chinaunix首页 | 论坛 | 博客
  • 博客访问: 652715
  • 博文数量: 149
  • 博客积分: 3901
  • 博客等级: 中校
  • 技术积分: 1558
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-16 14:33
文章分类

全部博文(149)

文章存档

2014年(2)

2013年(10)

2012年(32)

2011年(21)

2010年(84)

分类: 服务器与存储

2012-06-01 18:20:18





hadoop 集群的控制和数据流都被 Protocol 协议包装。

hadoop RPC 最简单的使用 说明 :
  VersionedProtocol / getProtocolVersion 需要提供一个协议版本

我们先从使用最简单的使用开始理解 hadoop的 RPC.
参考:http://www.cnblogs.com/hiddenfox/archive/2011/12/30/2305786.html
 1. 在 Server 端 , 通过 RPC.getServer 绑定实现 VersionedProtocol的实现类 .
实现类 其他RPC方法返回值 须是 Writable 实现类,保证可序列化传输.

 2. 在 Client 端 ,调用 RPC.waitForProxy(VersionedProtocol实现类Class) 
获取Client端 的代理类。
 3. 在 Client 端,调用 proxy.xxx 方法,会在 Server 运行的并把 运行的 xxx 方法的返回值 通过 RPC 返回给 Client 的 proxy.xxx ;



再来看看hadoop内部 RPC 是怎么处理的 :
参考:
 了解RPC内部的运行流程 
   1. 在 Server 端,使用 RPC.getServer
   2. 会实例化出 RPC.Server 并 start()
     2.1 start listener #server 接受监听请求,拥塞在 selector.select
           关键在 listener.doAccept 处, 获取请求后 线程Reader 
     2.2 start responder #拥塞在 selector.select 
     2.3 start handlers  #拥塞在 callQueue.take()

这一周断断续续的时间,搭建:
  环境 : win7 cygwin java1.6 hadoop0.20.203
  测试PRG开发 : /opt/app/hadoop/src/examples 下的
                package org.apache.hadoop.examples.my
  编译 : ant compile-examples
  执行 : 自己写个简易的 运行脚本,待 使用 jdb 调试 准备
        

点击(此处)折叠或打开

  1. classpat=""
  2. #加 examples 到  classpath ,和 hadoop core 其他类
  1. for var in `find /opt/app/hadoop/build -maxdepth 1 -type d | perl -nle 's/\/opt\/app\/hadoop\/build\//D:\/cygwin\/opt\/app_install\/hadoop-0.20.203.0\/build\//g;print "$_\/"'`
  2. do
  3. classpath=$var";"$classpath ;
  4. done

  5. # 运行依赖的其他jar
  6. for var in `find /opt/app/hadoop/lib -name "*.jar" -type f | perl -nle 's/\/opt\/app\/hadoop\/lib\//D:\/cygwin\/opt\/app_install\/hadoop-0.20.203.0\/lib\//g;print "$_\/"'`
  7. do
  8. classpath=$var";"$classpath ;
  9. done


  10. #java -cp $classpath org.apache.hadoop.examples.my.MyServer
  11. java -cp $classpath $1


MyClient.java
  $> sh my_run.sh org.apache.hadoop.examples.my.MyClient
 
MyServer.java
  $> sh my_run.sh org.apache.hadoop.examples.my.MyClient

未完
   




阅读(1492) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~