hadoop rpc服务端初始化和调用过程详解

hadoop rpc服务端初始化和调用过程详解

ID:42595605

大小:27.44 KB

页数:9页

时间:2019-09-18

hadoop rpc服务端初始化和调用过程详解_第1页
hadoop rpc服务端初始化和调用过程详解_第2页
hadoop rpc服务端初始化和调用过程详解_第3页
hadoop rpc服务端初始化和调用过程详解_第4页
hadoop rpc服务端初始化和调用过程详解_第5页
资源描述:

《hadoop rpc服务端初始化和调用过程详解》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、本文主要描述了hadooprpc服务端的初始化和调用过程,相比客户端的初始化,rpc服务端感觉会简单点,但是调用过程却比客户端复杂一些。本文还是以namenode为例,namenode会在执行main方法的时候,创建一个namenode实例,及完成一系列的初始化过程,其中就包括了rpc的初始化过程。rpc服务端的初始化上面已经提到我们这里主要借用了namenode的远程服务,先来看看相关代码:?12345678910111213141516171819publicclassNameNodeimplementsName

2、NodeStatusMXBean{publicstaticvoidmain(Stringargv[])throwsException{        NameNodenamenode=createNameNode(argv,null);}   protectedNameNode(Configurationconf,NamenodeRolerole)throwsIOException{        initialize(conf);} protectedvoidinitialize(Configurationconf

3、)throwsIOException{        rpcServer=createRpcServer(conf);         startCommonServices(conf);//相当重要} protectedNameNodeRpcServercreateRpcServer(Configurationconf)throwsIOException{        returnnewNameNodeRpcServer(conf,this);    }}我们的linux的终端执行hadoop的启动命令的时候,最

4、终的命令是调用NameNode的main方法,所以我们追踪代码的切入点是NameNode的main方法,方法比较简单,就是调用NameNode的构造函数创建一个NameNode,然后执行初始化方法initialize,这个方法相对来说,是我们关注的重点,包括rpc服务在内的初始化操作都放在这个方法里面。特定于rpc,他执行了两个相关的方法createRpcServer和startCommonServices,第一个方法见名思意,不多说,先简单介绍下后面的方法,该方法的作用就是启动namenode的rpc服务,稍后我给

5、出代码。好的,从上面的代码可以看到,我们的rpcServer功能都放在了类NameNodeRpcServer里面,现在让我们来看看这个类里面相关的代码:?12345678910111213141516171819202122232425262728293031323334classNameNodeRpcServerimplementsNamenodeProtocols{publicNameNodeRpcServer(Configurationconf,NameNodenn)      throwsIOExceptio

6、n{       RPC.setProtocolEngine(conf,ClientNamenodeProtocolPB.class,        ProtobufRpcEngine.class);     ClientNamenodeProtocolServerSideTranslatorPB       clientProtocolServerTranslator=         newClientNamenodeProtocolServerSideTranslatorPB(this

7、);     BlockingServiceclientNNPbService=ClientNamenodeProtocol.         newReflectiveBlockingService(clientProtocolServerTranslator);     InetSocketAddressrpcAddr=nn.getRpcServerAddress(conf);//fs.defaultFS    StringbindHost=nn.getRpcServerBindHost

8、(conf);    if(bindHost==null){      bindHost=rpcAddr.getHostName();    }    LOG.info("RPCserverisbindingto"+bindHost+":"+rpcAddr.getPort());     this.clientRpcServer=newRPC.

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

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

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