`
zy19982004
  • 浏览: 662074 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
F6f66edc-1c1a-3859-b76b-a22e740b7aa7
Hadoop学习
浏览量:252008
社区版块
存档分类
最新评论

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新增加的协议接口 
分享到:
评论

相关推荐

    hadoop-hdfs-client-2.9.1-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-client-2.9.1.jar 赠送原API文档:hadoop-hdfs-client-2.9.1-javadoc.jar 赠送源代码:hadoop-hdfs-client-2.9.1-sources.jar 包含翻译后的API文档:hadoop-hdfs-client-2.9.1-javadoc-...

    hadoop-hdfs-client-2.9.1-API文档-中英对照版.zip

    赠送jar包:hadoop-hdfs-client-2.9.1.jar; 赠送原API文档:hadoop-hdfs-client-2.9.1-javadoc.jar; 赠送源代码:hadoop-hdfs-client-2.9.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-client-2.9.1.pom;...

    hadoop-hdfs-2.7.3-API文档-中英对照版.zip

    赠送jar包:hadoop-hdfs-2.7.3.jar; 赠送原API文档:hadoop-hdfs-2.7.3-javadoc.jar; 赠送源代码:hadoop-hdfs-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.7.3.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.6.5-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-2.6.5.jar; 赠送原API文档:hadoop-hdfs-2.6.5-javadoc.jar; 赠送源代码:hadoop-hdfs-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.6.5.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.5.1-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-2.5.1.jar; 赠送原API文档:hadoop-hdfs-2.5.1-javadoc.jar; 赠送源代码:hadoop-hdfs-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.5.1.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.7.3-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-2.7.3.jar; 赠送原API文档:hadoop-hdfs-2.7.3-javadoc.jar; 赠送源代码:hadoop-hdfs-2.7.3-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.7.3.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.9.1-API文档-中文版.zip

    赠送jar包:hadoop-hdfs-2.9.1.jar 赠送原API文档:hadoop-hdfs-2.9.1-javadoc.jar 赠送源代码:hadoop-hdfs-2.9.1-sources.jar 包含翻译后的API文档:hadoop-hdfs-2.9.1-javadoc-API文档-中文(简体)版.zip 对应...

    hadoop-hdfs-2.6.5-API文档-中英对照版.zip

    赠送jar包:hadoop-hdfs-2.6.5.jar; 赠送原API文档:hadoop-hdfs-2.6.5-javadoc.jar; 赠送源代码:hadoop-hdfs-2.6.5-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.6.5.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.5.1-API文档-中英对照版.zip

    赠送jar包:hadoop-hdfs-2.5.1.jar; 赠送原API文档:hadoop-hdfs-2.5.1-javadoc.jar; 赠送源代码:hadoop-hdfs-2.5.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.5.1.pom; 包含翻译后的API文档:hadoop...

    hadoop-hdfs-2.9.1-API文档-中英对照版.zip

    赠送jar包:hadoop-hdfs-2.9.1.jar; 赠送原API文档:hadoop-hdfs-2.9.1-javadoc.jar; 赠送源代码:hadoop-hdfs-2.9.1-sources.jar; 赠送Maven依赖信息文件:hadoop-hdfs-2.9.1.pom; 包含翻译后的API文档:hadoop...

    hadoop最新版本3.1.1全量jar包

    hadoop-auth-3.1.1.jar hadoop-hdfs-3.1.1.jar hadoop-mapreduce-client-hs-3.1.1.jar hadoop-yarn-client-3.1.1.jar hadoop-client-api-3.1.1.jar hadoop-hdfs-client-3.1.1.jar hadoop-mapreduce-client-jobclient...

    Hadoop 3.x(HDFS)----【HDFS 的 API 操作】---- 代码

    Hadoop 3.x(HDFS)----【HDFS 的 API 操作】---- 代码 Hadoop 3.x(HDFS)----【HDFS 的 API 操作】---- 代码 Hadoop 3.x(HDFS)----【HDFS 的 API 操作】---- 代码 Hadoop 3.x(HDFS)----【HDFS 的 API 操作】--...

    hadoop-hdfs-2.7.7.jar

    flume 想要将数据输出到hdfs,必须要有hadoop相关jar包。本资源是hadoop 2.7.7版本

    hadoop-common-2.6.0-bin-master.zip

    Hadoop是大数据处理领域的一个关键框架,...通过正确安装、配置和使用这个压缩包中的组件,开发者可以在没有Linux环境的情况下,也能顺利地进行Hadoop相关的工作,这对于学习和理解Hadoop的分布式计算原理非常有帮助。

    hadoop-hdfs-2.4.1.jar

    hadoop-hdfs-2.4.1.jar

    hadoop插件apache-hadoop-3.1.0-winutils-master.zip

    标题中的"apache-hadoop-3.1.0-winutils-master.zip"是一个针对Windows用户的Hadoop工具包,它包含了运行Hadoop所需的特定于Windows的工具和配置。`winutils.exe`是这个工具包的关键组件,它是Hadoop在Windows上的一...

    hadoop测试(1)---HDFS文件操作 完整测试代码

    hadoop测试(1)---HDFS文件操作 完整测试代码, 相关文章:http://www.cnblogs.com/yinpengxiang/archive/2011/07/03/2096605.html

    Hadoop原理与技术hdfs命令行基本操作

    (6)移动hdfs文件:hdfs dfs -mv /hdfs路径 /hdfs路径 (7)复制hdfs文件:hdfs dfs -cp /hdfs路径 /hdfs路径 (8)删除hdfs文件:hdfs dfs -rm /文件名 (9)删除hdfs文件夹:hdfs dfs -rm -r /文件夹名

    hadoop-hdfs-test-0.21.0.jar

    hadoop-hdfs-test-0.21.0.jar

    hadoop-common-2.2.0-bin-master(包含windows端开发Hadoop2.2需要的winutils.exe)

    这个压缩包“hadoop-common-2.2.0-bin-master”是Hadoop 2.2.0版本的公共库二进制版本,包含了在Windows平台上开发和运行Hadoop所需的一些关键工具,特别是对于开发者来说非常重要的`winutils.exe`。 `winutils.exe...

Global site tag (gtag.js) - Google Analytics