HDFS通信协议

HDFS通信协议

HDFS通信协议抽象了HDFS各个节点之间的调用接口。
   1. Hadoop RPC接口:hadoop RPC调用是的HDFS进程能够像本地调用一样调用另一个进程中的方法(远程过程调用协议)。
      1.1 ClientProtocol:定义了客户端端Namenode节点之间的接口,客户端对文件系统的所有操作都要通过这个接口。
            1.ClientProtocol定义了所有由客户端发起,有Namenode响应的操作。这个接口有很多类:HDFS文件读,文件写及追加写的操作,管理操作等。
             文件读写及追加写的操作都可以在FileSystem类中找到方法。客户端读文件方法:getBlockLocations()和reportBadProtocol。
            getBlockLocations作用:用于获取数据块的文件名和位置信息。reportBadProtocol作用:汇报错误的数据块信息。
            2.写/追加写的方法:creat()创建一个新的空文件,append()打开已有的文件,addBlock()向指定文件添加一个新的数据块,当客户端完成写的操作后,调用            complete()方法通知Namenode(true,1),返回值文true,默认副本为1,namenode文件状态转为正常,提交新写入HDFS文件的所有数据块。
            3.当操作写文件操作时出现异常,abandonBlock()方法放弃一个新的申请的数据块。然后再调用addBlock()方法获取新的数据块,并将无法连接的数据节点放入            excludeNode参数列表中,防止namenode将数据块副本分配到这个节点上,造成再次无法连接情况。
            4.快照:用户通过hdfs dfs 创建快照(creatSnapshot())
            5.缓存:cache directive
       1.2 ClientDataProtocol:客户端与datanode之间的接口,主要用于客户端获取数据节点信息时的调用。
            其方法:getReplicVisibleLength()从数据节点获取某个数据块的副本数据长度。getBlockLocalPath()获取节点上文件的本地路径。refreshNamenode()用于                触发指定的Datanode从新加载配置文件。shutdownDatanode关闭数据节点。getDatanodeInfo()获取指定Datanode的信息。startReconfiguration()触发Datanode异                步从磁盘重新加载配置
        1.3 DatanodeProtocol:数据节点通过这个接口与名字节点通信。
            DatanodeProtocol是Datanode与Namenode之间接口,Datanode会用这个接口箱Namenode握手,注册,发送心跳,进行全量及增量的数据块汇报。
            Datanode启动相关方法:一个完整的Datanode启动操作会与Namenode进行4次操作,也就是调用四次DatanodeProtocol定义的方法,首先调用versionRequest()与                Namenode握手操作,这方法返回时NamespaceInfo对象,这个对象封装了HDFS集群的命名空间信息(含有cpu,版本信息,等系统信息),Namenode接受到这些信 息后 会与HDFS信息比对,判断是否匹配。然后再调用registerDatanode()向Namenode注册当前的Datanode,当注册成功后调用blockReport()汇报Datanode上存储的数据                块,Namenode接受到blockreport()请求后,会根据Datanode上报的数据块存储情况建立数据块与数据节点之间的对应关系,同时Datanode会在blockReport()的响                应中携带名字节点指令,通知数据节点进行重新注册,发送心跳,备份或者删除datanode本地磁盘上数据块副本操作,这些指令都在DatanodeCommand对象封装的。                最后调用cacheReport()汇报Datanode缓存的所有数据块。
        #InterDatanodeProtocol:数据节点与数据节点之间接口,数据节点通过这个接口和其他数据节点通信,主要用于数据块的恢复,以及同步数据节点上存储的数据副本信息。
            InterDatanodeProtocol是Datanode和Datanode之间接口,主要用于租约恢复操作。
            主恢复操作:就是将数据管道中所有的数据节点上保存的同一个数据块状态(时间戳和数据块长度)同步一致。当成功完成租约恢复后,主恢复节点会调用                    commitBlockSynchronzization()方法同步Namenode节点上该数据块的时间戳和数据块长度,必须保证名字节点和数据块节点一致。
            时间戳(timestamp),一个能表示一份数据在某个特定时间之前已经存在的、 完整的、 可验证的数据,通常是一个字符序列,唯一地标识某一刻的时间。
        #NamenodeProtocol:第二个名字节点和名字节点间接口。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1章 HDFS 1 1.1 HDFS概述 1 1.1.1 HDFS体系结构 1 1.1.2 HDFS基本概念 2 1.2 HDFS通信协议 4 1.2.1 Hadoop RPC接口 4 1.2.2 流式接口 20 1.3 HDFS主要流程 22 1.3.1 HDFS客户端读流程 22 1.3.2 HDFS客户端写流程 24 1.3.3 HDFS客户端追加写流程 25 1.3.4 Datanode启动、心跳以及执行名字节点指令流程 26 1.3.5 HA切换流程 27 第2章 Hadoop RPC 29 2.1 概述 29 2.1.1 RPC框架概述 29 2.1.2 Hadoop RPC框架概述 30 2.2 Hadoop RPC的使用 36 2.2.1 Hadoop RPC使用概述 36 2.2.2 定义RPC协议 40 2.2.3 客户端获取Proxy对象 45 2.2.4 服务器获取Server对象 54 2.3 Hadoop RPC实现 63 2.3.1 RPC类实现 63 2.3.2 Client类实现 64 2.3.3 Server类实现 76 第3章 Namenode(名字节点) 88 3.1 文件系统树 88 3.1.1 INode相关类 89 3.1.2 Feature相关类 102 3.1.3 FSEditLog类 117 3.1.4 FSImage类 138 3.1.5 FSDirectory类 158 3.2 数据块管理 162 3.2.1 Block、Replica、BlocksMap 162 3.2.2 数据块副本状态 167 3.2.3 BlockManager类(done) 177 3.3 数据节点管理 211 3.3.1 DatanodeDescriptor 212 3.3.2 DatanodeStorageInfo 214 3.3.3 DatanodeManager 217 3.4 租约管理 233 3.4.1 LeaseManager.Lease 233 3.4.2 LeaseManager 234 3.5 缓存管理 246 3.5.1 缓存概念 247 3.5.2 缓存管理命令 247 3.5.3 HDFS集中式缓存架构 247 3.5.4 CacheManager类实现 248 3.5.5 CacheReplicationMonitor 250 3.6 ClientProtocol实现 251 3.6.1 创建文件 251 3.6.2 追加写文件 254 3.6.3 创建新的数据块 257 3.6.4 放弃数据块 265 3.6.5 关闭文件 266 3.7 Namenode的启动和停止 268 3.7.1 安全模式 268 3.7.2 HDFS High Availability 276 3.7.3 名字节点的启动 301 3.7.4 名字节点的停止 306 第4章 Datanode(数据节点) 307 4.1 Datanode逻辑结构 307 4.1.1 HDFS 1.X架构 307 4.1.2 HDFS Federation 308 4.1.3 Datanode逻辑结构 310 4.2 Datanode存储 312 4.2.1 Datanode升级机制 312 4.2.2 Datanode磁盘存储结构 315 4.2.3 DataStorage实现 317 4.3 文件系统数据集 334 4.3.1 Datanode上数据块副本的状态 335 4.3.2 BlockPoolSlice实现 335 4.3.3 FsVolumeImpl实现 342 4.3.4 FsVolumeList实现 345 4.3.5 FsDatasetImpl实现 348 4.4 BlockPoolManager 375 4.4.1 BPServiceActor实现 376 4.4.2 BPOfferService实现 389 4.4.3 BlockPoolManager实现 396 4.5 流式接口 398 4.5.1 DataTransferProtocol定义 398 4.5.2 Sender和Receiver 399 4.5.3 DataXceiverServer 403 4.5.4 DataXceiver 406 4.5.5 读数据 408 4.5.6 写数据(done) 423 4.5.7 数据块替换、数据块拷贝和读数据块校验 437 4.5.8 短路读操作 437 4.6 数据块扫描器 437 4.6.1 DataBlockScanner实现 438 4.6.2 BlockPoolSliceScanner实现 439 4.7 DirectoryScanner 442 4.8 DataNode类的实现 443 4.8.1 DataNode的启动 444 4.8.2 DataNode的关闭 446 第5章 HDFS客户端 447 5.1 DFSClient实现 447 5.1.1 构造方法 448 5.1.2 关闭方法 449 5.1.3 文件系统管理与配置方法 450 5.1.4 HDFS文件与操作方法 451 5.1.5 HDFS文件读写方法 452 5.2 文件读操作与输入流 452 5.2.1 打开文件 452 5.2.2 读操作――DFSInputStream实现 461 5.3 文件短路读操作 481 5.3.1 短路读共享内存 482 5.3.2 DataTransferProtocol 484 5.3.3 DFSClient短路读操作流程 488 5.3.4 Datanode短路读操作流程 509 5.4 文件写操作与输出流 512 5.4.1 创建文件 512 5.4.2 写操作――DFSOutputStream实现 516 5.4.3 追加写操作 543 5.4.4 租约相关 546 5.4.5 关闭输出流 548 5.5 HDFS常用工具 549 5.5.1 FsShell实现 550 5.5.2 DFSAdmin实现 552

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值