> 文章列表 > HDFS学习笔记 【Namenode/DN管理】

HDFS学习笔记 【Namenode/DN管理】

HDFS学习笔记 【Namenode/DN管理】

说明

DN管理管理了什么?
NN上如何表示DN
DN存储和块的关系
梳理DatanodeManager存储类
!](https://img-blog.csdnimg.cn/e147b1b275304361a3ee5d4ed781ff2c.jpeg)

DatanodeDescriptor

DN的抽象,依次继承。每一层增加一点额外的信息
DatanodeId
基本的DN信息,hostname,数据传输接口,info服务端口,ipc端口等。
DatanodeInfo
补充一些DN信息,比如容量,缓存,以及xceiver数量等,软件版本,以及dn状态等。
DatanodeDescriptor
补充一些状态相关的信息,负载,指令,缓存相关的信息
指令相关的信息,比如带宽,复制块,恢复块
缓存相关的参数,多个队列保存已缓存,等待缓存的,等待取消缓存的块。

DatanodeStorageInfo

存储抽象,管理blockList,管理block的状态。
blockList 保存所有所有的Block头节点。BlockInfo.triplets保存的是所有副本块的双向链表

字段

NN状态相关
heartbeatsinceFailOver: NN是否出现失败
blockContensStale:是否处于stale状态,bool类型
防止数据不完整

NN里面存储的和DN相关的信息

元数据相关
dn,storageId,storagetype,state字段用于描述存储的元信息
storage状态信息,用于描述存储的容量相关信息

方法

  • addBlock()
    DN向NN汇报新数据块,DatanodeStorageInfo信息加入到Blocks中
    DatanodeStorageInfo中维护blocks列表,里面包含了所有的快信息
  • maskStaleAfterFailOver()
    在HA切换时,将DatanodeStorageInfo设置为false状态。

【未完待续】