Hadoop-组件-HDFS-源码学习-集群启动-NameNode 启动-createRpcServer
NameNodeRpcServer 里面有两个主要的 RPC 服务:
引用本站文章
Hadoop-组件-HDFS-源码学习-RPC 通信服务系列
Joker
- clientRpcServer: 主要管理的协议是 Hdfs的客户端去操作HDFS的方法
- 服务之间互相进行的方法的调用(注册、心跳等)
1 | rpcServer = createRpcServer(conf); |
根据代码的逻辑划分,主要有三部分:
实例化各种通信协议和服务对象
所有的服务都是 BlockingService 接口的实现,client和namenode之间进行通信需要调用的接口,包括:创建目录、管理block、设置权限等一些操作
- 客户端同 NameNode 通信的协议服务: ClientNameNodeProtocolServerSideTranslatorPB
- 负责创建目录
- 管理block
- 设置权限等
- Datanode 同 NameNode 通信的协议服务: DatanodeProtocolServerSideTranslatorPB
- Datanode 的启动时向NameNode注册
- 发送心跳报告、block信息报告
- 客户端同 NameNode 通信的协议服务: ClientNameNodeProtocolServerSideTranslatorPB
实例化监听 Datanode 请求的rpc server: ServerRpcServer
实例化一个监听 Datanode请求的rpc server,并且将第一部分实例化的各种 ProtocolService 同此 rpc server 进行绑定,用于处理 rpc server 监听到的来自 Datanode 的各种rpc请求。
这个服务是用来 Namenode 和 Datanode 之间的调用
1
2
3
4
5
6
7
8
9this.serviceRpcServer = new RPC.Builder(conf)
.setProtocol(
org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolPB.class)
.setInstance(clientNNPbService)
.setBindAddress(bindHost)
.setPort(serviceRpcAddr.getPort()).setNumHandlers(serviceHandlerCount)
.setVerbose(false)
.setSecretManager(namesystem.getDelegationTokenSecretManager())
.build();实例化监听客户端请求的 rpc server: ClientRpcServer
实例化一个监听客户端请求的rpc server,并将第一部分实例化的各种 ProtocolService 同此 rpc server 进行绑定,用于处理监听到的来自客户端的rpc请求。
这个服务主要是用户使用客户端与 Namenode 和 Datanode 进行交互服务调用的
1
2
3
4
5
6
7
8this.clientRpcServer = new RPC.Builder(conf)
.setProtocol(
org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolPB.class)
.setInstance(clientNNPbService).setBindAddress(bindHost)
.setPort(rpcAddr.getPort()).setNumHandlers(handlerCount)
.setVerbose(false)
.setSecretManager(namesystem.getDelegationTokenSecretManager())
.build();
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker!
评论
ValineTwikoo