设为首页 收藏本站
查看: 591|回复: 0

[经验分享] [翻译]Using Hadoop IPC/RPC for distributed applications

[复制链接]

尚未签到

发表于 2015-7-11 09:02:03 | 显示全部楼层 |阅读模式
  在分布式应用程序中使用Hadoop IPC/RPC
  原文地址:http://www.supermind.org/blog/520/using-hadoop-ipcrpc-for-distributed-applications
  本文来自于:http://gpcuster.iyunv.com
  译文:
  关于Hadoop IPC
  我们一起来了解Hadoop IPC,这是一个内进程间通信(Inter-Process Communication)的子系统。Hadoop IPC被用于在一个进程的程序与另一个进程的程序进行通信
  Hadoop IPC     
1.与SOAP和XML-RPC不同,Hadoop IPC使用java中的DataOutputStream与DataInputStream进行二进制的序列化。     
2. 它是一个简洁的,低消耗的RPC机制。     
3. 它只支持单播的操作。
  为什么Hadoop的IPC实现不使用RMI或者是java.io.Serialization呢? 理由摘自what Doug has to say:
  
  在我们开启Hadoop项目的时候,为什么不使用Serialization?因为当我们需要对对象进行精确的读和写操作时,这么做对似乎过于笨重了。
  不适用RMI的理由是类似的。有效的IPC对于Hadoop来说是至关重要的。我觉得我们需要精确控制这些事情,比如连接,超时,缓存等等。而RMI就达不到这些需求。
  示例代码
  现在,我们一起来看看Hadoop IPC的示例代码,看看他们究竟是如何工作的。
  一般来说,所有的单播PRC调用都会包含一个客户端和一个服务端。
  创建一个服务端,
  
   
     Configuration conf = new Configuration();
Server server = RPC.getServer(this, "localhost", 16000, conf);  // start a server on localhost:16000
server.start();
  创建一个客户端,



Configuration conf = new Configuration();
InetSocketAddress addr = new InetSocketAddress("localhost", 16000);  // the server's inetsocketaddress
ClientProtocol client = (ClientProtocol) RPC.waitForProxy(ClientProtocol.class,
    ClientProtocol.versionID, addr, conf);
  在这个示例中,服务端的class实现了ClientProtocol接口,ClientProtocol.java代码看上去是这个样子的:



interface ClientProtocol extends org.apache.hadoop.ipc.VersionedProtocol {
  public static final long versionID = 1L;

  HeartbeatResponse heartbeat();
}
  ClientProtocol接口中只定义了一个方法:heartbeat() ,这个方法将返回一个HeartbeatResponse对象。远程的客户端通过周期性地调用heartbeat()方法让服务端了解客户端的情况。然后服务端返回一个HeartbeatResponse对象,是的客户端获得相应的信息。
  一个HeartbeatResponse.java代码看起来是这个样子的:



public class HeartbeatResponse implements org.apache.hadoop.io.Writable {
  String status;

  public void write(DataOutput out) throws IOException {
    UTF8.writeString(out, status);
  }

  public void readFields(DataInput in) throws IOException {
    this.status = UTF8.readString(in);
  }
}
总结
  对于Hadoop IPC的总结如下:  
1. 服务端实现了ClientProtocol接口。
2. 一个或多个客户端将调用ClientProtocol接口的方法。
3. 在ClientProtocol接口的方法中所使用的所有参数或对象都需要继承于org.apache.hadoop.io。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85377-1-1.html 上篇帖子: Hadoop学习笔记--1.Hadoop介绍 下篇帖子: HADOOP实践101:在Hadoop集群中添加机器和删除机器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表