Hadoop学习十九:Hadoop-Hdfs 通信机制VersionedProtocol工作原理

一.RPC

二.VersionedProtocol类图 

三.工作原理

      以Client与NameNode通信为例(本文中,不加特别说明,A与B通信,都指A为请求方,B为接收方),Client想在文件系统里创建一个文件夹,会把这一请求通过RPC发送给NameNode,NameNode收到请求后就为Client创建一个文件夹。从这一功能我们可以抽出VersionedProtocol的工作原理。

  • 把Client可能向NameNode发送的任何请求封装在一个叫ClientProtocol的接口里面,当然create(String src...)就是其中方法之一。
  • RPC Server端NameNode你必须具有能够创建文件夹的功能,也就是你要实现ClientProtocol接口,实现所有的方法
  • 最后Client端要做的就是:ClientProtocol rpcNameNode = (ClientProtocol)RPC.getProxy(ClientProtocol.class, ClientProtocol.versionID...);rpcNameNode .create(String src...)获得代理类并调用create(src)方法。这样,Client的请求就在NameNode上被执行了,如果方法有返回值,NameNode返回返回值即可。

     总结一句话就是:A与B通信,B必须实现A protocol的所有方法

 

四.两两通信

  • 在HDFS里面存在四个角色:Client, DataNode, NameNode, SeconeryNameNode,它们之间的通信方式有:
    • Client----->NameNode,此时NameNode必须实现ClientProtocol。
    • Client----->DataNode,此时DataNode必须实现ClientDatanodeProtocol。
    • DataNode----->DataNode,此时DataNode必须实现InterDatanodeProtocol。
    • DataNode----->NameNode,此时NameNode必须实现DatanodeProtocol。
    • SeconeryNameNode----->NameNode,此时NameNode必须实现NamenodeProtocol。
    • Client----->NameNode请求刷新认证信息,此时NameNode必须实现RefreshAuthorizationPolicyProtocol。
    • Client----->NameNode请求属性用户,此时NameNode必须实现RefreshUserMappingsProtocol。同RefreshAuthorizationPolicyProtocol一样,仅仅把Client与NameNode通信的一两个方法单独出去而已。
  • 所以
    class DataNode implements InterDatanodeProtocol, ClientDatanodeProtocol
    
    class NameNode implements ClientProtocol, DatanodeProtocol,
                                     NamenodeProtocol,
                                     RefreshAuthorizationPolicyProtocol,
                                     RefreshUserMappingsProtocol
     

 

五.扩展性

  •  为什么Hadoop这么设计通信机制,其实我认为这样的通信机制并不好理解。
  • 扩展性
    • 如果我自己开发一个发行版,新增加了一个角色BackUpNameNode, 显然,BackUpNameNode------>NameNode,那NameNode再实现一个BackUpNameNodeProtocol接口足以。
    • 看看Yarn新增加的协议接口 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值