【HDFS笔记】描述Block和DataNode相关对象整理
注:
NN:NameNode
DN:DataNode
描述block相关对象
Block是一个数据块,只有一个,它只存在于一个块池中(一个块池对应的是一个命名空间)!他可以对应很多个副本Replica,这些副本分布在不同的DataNode上。
(1)LocatedBlock = ExtendedBlock + 存储ID/存储类型 + 是否所有副本都失效 +【多个】存储这个块的DataNode的信息(DatanodeInfoWithStorage+DatanodeInfo)
(2)ExtendedBlock = Block + PoolID (即ExtendedBlock 就是标志了块池的块)
(3)Block = blockId + 时间戳 + 块大小
(4)BlockInfo = blockId + 复制因子 + BlocksMap中的下一个节点 + 【多个】存储这个块的DataNode的信息(DatanodeStorageInfo)
描述DataNode相关对象
注意这些是在NN(NameNode)中来描述DN相关的
(1)DatanodeStorageInfo
DatanodeStorageInfo 描述了DN上的一个存储,一个DN上可以有多个存储(在dfs.datanode.data.dir中配置多个Datanode的存储目录)
DatanodeStorageInfo = DatanodeDescriptor + 存储ID/存储类型 + 各种状态容量 + 【多个】该DN上存储的块
(多个BlockInfo 用FoldedTreeSet的形式组装)
(2)DatanodeDescriptor
DatanodeDescriptor是对DataNode的抽象,它是NameNode的内部数据结构,配合BlockMap和INode,记录了文件系统中所有Datanodes包含的Block信息,以及对应的INode信息。
DatanodeDescriptor 继承自 DatanodeInfo ,DatanodeInfo 继承自DatanodeID
(3)DatanodeInfo 继承自DatanodeID
DatanodeInfo = 容量/已用/未用等 + 位置(volatile String location)+ 主机列表(List dependentHostNames)
(4)DatanodeID
DatanodeID中包含主机名,ip地址,端口号等,知道了DatanodeID就可以找到这个DN