hadoop-RPC机制

hadoop-RPC机制

ID:38259805

大小:226.54 KB

页数:13页

时间:2019-06-07

hadoop-RPC机制_第1页
hadoop-RPC机制_第2页
hadoop-RPC机制_第3页
hadoop-RPC机制_第4页
hadoop-RPC机制_第5页
资源描述:

《hadoop-RPC机制》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、首先总结HDFS的设计架构,了解需要RPC通信的场景。HDFS的架构采用master/slave模式,一个HDFS集群是由一个Namenode和多个Datanode组成。在HDFS集群中,只有一个Namenode结点。Namenode作为HDFS集群的中心服务器,主要负责:n管理集群中文件系统的命名空间。n管理文件块和datanode的映射。n管理datanode的状态报告。Datanode的主要功能是:n负责节点上数据的读写操作。n向Namenode结点报告状态。n执行流水线复制。通过上面的叙述,可以看到,在HDFS集群中,存在三个主要的进程:Namenode进程、Datano

2、de进程和文件系统客户端进程,这三个进程之间都是基于Hadoop实现的RPC机制进行通信的,该IPC模型基于Client/Server模式进行通信。因此上述三个进程之间存在如下端到端通信与交互:1、(Client)Datanode /Namenode(Server)2、(Client)DFSClient /Namenode(Server)3、(Client)DFSClient /Datanode(Server)4、(Client)DatanodeA /DatanodeB(Server)1.Client端分析客户端Client类提供的最基本的功能就是进行RPC调用,其中,提供了两种

3、调用方式,一种就是串行单个调用,另一种就是并行调用,分别介绍如下。首先是串行单个调用的实现方法call,如下所示:publicWritablecall(Writableparam,InetSocketAddressaddr,Classprotocol,UserGroupInformationticket)throwsInterruptedException,IOException{Callcall=newCall(param);//根据传入的addr,protocol和ticket构造connectionId对象,在client的connections池中检索是否已经存在,

4、如果存在返回相应的connection//对象,否则构造一个新的connection对象,将其加入到池中。并将该call加入到该connection的calls调用表中,然后调用setupIOstreams,该//法的功能是ConnecttotheserverandsetuptheI/Ostreams.Itthensendsaheadertotheserverandstartstheconnection//threadthatwaitsforresponses.Connectionconnection=getConnection(addr,protocol,ticket,call

5、);connection.sendParam(call);//sendtheparameterbooleaninterrupted=false;synchronized(call){while(!call.done){try{//waitfortheresult正常应该被callComplete唤醒//voidjava.lang.Object.wait()throwsInterruptedExceptionCausesthecurrentthreadtowaituntilanotherthread//invokesthejava.lang.Object.notify()metho

6、dorthejava.lang.Object.notifyAll()methodforthisobject.call.wait();}catch(InterruptedExceptionie){//savethefactthatwewereinterruptedinterrupted=true;}}if(interrupted){//settheinterruptflagnowthatwearedonewaitingThread.currentThread().interrupt();}if(call.error!=null){if(call.errorinstanceofRem

7、oteException){call.error.fillInStackTrace();throwcall.error;}else{//localexceptionthrowwrapException(addr,call.error);}}else{returncall.value;}}}并行调用的实现方法:/*Makesasetofcallsinparallel.Eachparameterissenttothecorrespondingaddress.When*allvalue

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。