说明

DN管理管理了什么?
NN上如何表示DN
DN存储和块的关系
梳理DatanodeManager存储类

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状态。

DataNodeManager

NN管理Datanode,负责管理DN的添加和删除,dn启动,以及dn的心跳响应。

数据结构

  • NS
  • BLockManager
    DNNodeManager需要可以访问它保存的Block结构
  • heartbeatManager
    心跳管理模块
  • dataNodeMap
    storageId和datanodeDescriptor的映射,所以datanodeManager中维护着所有的DN,进一步可以找到所有的块信息
  • host2DatanodeMap
    hostname和datanodeDescriptor的映射

datanodeDescriptor中包含了blocks列表

  • networktopology
    整个网络拓扑

添加和撤销datanode

添加dn意味着什么?

首先是创建datanode的描述符,获取datanode的所有的块信息,维护数据结构(block->datanodeDescriptor,datanodeDescriptor->blocks),
哪些dn可以心跳,可以汇报块
nn知道dn的容量,线程等信息,可以下发任务
维护dn的任务队列,需要复制的块,坏块,恢复快等。

如何添加dn/下线dn

  1. 配置文件中增加或者下线节点
  2. 发送refresh命令,最终执行的是datanodeManager的refresh。
    2.1 调用hbManager,改变下dn状态即可.
    2.2 线程周期检查节点是否完成下线。
  3. 修改datanodeDescriptor状态

dn具有维护模式,下线,正常等多个状态

如何检查是否下线
checkDecommissionState
BlockManager包含有几个队列,维护excessRedundancyMap,neededReconstruction,pendingReconstruction等等。
猜测是线程检测队列,修改node状态。
dn如何启动

  1. 握手
  2. 注册 datanodeMap
    注意datanode可以多次注册,以storage为准
  3. 块上报
    维护内存中的块和dn存储之间关系
    3.1 全量上报
    首次上报,直接增加block内存结构
    3.2 增量上报

如何心跳
心跳信息: DN容量,线程,缓存,连接数等。
处理信息: handleHeartbeat 通过datanodeDescriptor信息,块和存储信息等构造命令组
心跳返回: 命令组

dn也具有多个队列,比如说需要复制的块,需要删除的块,需要恢复的块。这些是通过BlockManager生成的。

HDFS学习笔记 【Namenode/DN管理】相关推荐

  1. 文件和存储管理学习笔记-动态磁盘管理

    Server 2008 R2 文件和存储管理学习笔记-动态磁盘管理 基本磁盘是包含基本分区.扩展分区或逻辑驱动器的一种物理磁盘 动态磁盘提供了基本磁盘不提供的一些高级功能,创建无限数量卷.跨越多个磁盘 ...

  2. Git学习笔记:标签管理以及GItHub

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  3. Git学习笔记:分支管理3

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  4. Git学习笔记:分支管理(2)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  5. Redis运维和开发学习笔记(7) 内存管理和过期策略

    Redis运维和开发学习笔记(7) 内存管理和过期策略 文章目录 Redis运维和开发学习笔记(7) 内存管理和过期策略 内存回收策略 惰性删除 定时任务删除 maxmemory 过期策略allkey ...

  6. linux软件包管理解析,linux学习笔记_09_软件包管理解析.doc

    linux学习笔记_09_软件包管理解析 软件包管理 软件包分类 源码包(C语言编写的源代码) linux主要由C语言来写. 源码包可以用写字板打开 脚本安装包:源码包进行再开发的源码包(提供安装界面 ...

  7. 学习笔记--一个自管理(组织)的多目标进化算法(SMEA)

    学习笔记–一个自管理(组织)的多目标进化算法(SMEA) 摘要:在温和条件下,一个连续m维目标的优化问题的帕累托前沿(解集)可以形成一个(m-1)维的分段连续流形.基于这个性质,这篇文章提出了一个自管 ...

  8. Git学习笔记:分支管理(1)

    前言 在补习python的时候主要参考的是廖雪峰的教程Python教程,在学习完后准备完成期末作业时,遇到了一个技术难题,需要初步掌握git,因此开始了git的学习. 本教程参考廖雪峰的Git教程 G ...

  9. Dapr牵手.NET学习笔记:状态管理之docker-compose发布

    Dapr牵手.NET学习笔记:想入非非的服务调用 Dapr牵手.NET学习笔记:跨物理机负载均衡服务调用 Dapr牵手.NET学习笔记:用docker-compose部署服务 说明:为了给出demo的 ...

最新文章

  1. 计算机主机的灯一直闪,电脑硬盘灯一直闪怎么办|电脑硬盘灯狂闪的解决方法...
  2. bug ava.sql.SQLException: No more data to read from socket
  3. 飞在空中的仓库再配合无人机送货,沃尔玛新专利厉害了
  4. 程序员面试100题之十三:求二叉查找树的镜像
  5. java allocate_Java中volatile关键字的最全总结
  6. Qt中的QFileDialog类的几个示范代码
  7. 贪心法田忌赛马问题Java代码,hdoj 1052 Tian Ji - The Horse Racing【田忌赛马】 【贪心】...
  8. 重新写博+linux查找系列
  9. windows下kangle虚拟主机-easypanel跑iis6.0开php空间并支持ZendOptimizer教程
  10. 比赛-h47学长的训练赛 (27 Aug, 2018)
  11. 计算机软件著作权 评审,软件著作权在评职称过程中有用吗
  12. The Backrooms - Level 0.2 - 我爱杏仁水
  13. 由一道CTF pwn题深入理解libc2.26中的tcache机制
  14. python 汉字 简繁体 转换方法
  15. modelsim 常用快捷键
  16. 去掉无序列表前默认加上的小圆点——实战练习需到的问题解决办法mark
  17. SAP PS 第11节 收入类项目结果分析及结算
  18. 计算机屏幕尺寸像素点距概念,各种电脑显示器尺寸对应的最佳分辨率大小是多少...
  19. 高手背后的操作系统----心思知体系
  20. TKO 6-7DP入门之搬寝室

热门文章

  1. RTK点放样用CORS有多简便?附全流程
  2. 美国CORS的基准站坐标时间序列图
  3. 不只是“设计”,产品思维赋予设计新动力!
  4. 远程桌面常见问题及注意事项
  5. 服务器硬盘RAID知识
  6. 基于Java实现的Web服务器与测试工具开发
  7. adb命令——基础系统类命令 ——安装apk程序以及卸载——adb shell pm命令查询...
  8. SDH传输分析仪是什么? TFN D300S SDH传输分析仪详解
  9. 有好用文字转语音的软件吗?
  10. Codeforces 444C DZY Loves Colors 线段树区间更新