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

news2024/10/5 14:32:12

说明

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

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生成的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

QTableView 设置selection-background-color和border不同时生效问题记录

问题: qtableview在使用过程种设置qss样式,设置选中时的背景色,以及边框颜色,不能同时生效。 解决: 在qss中设置QTableView的样式时,对于item项,selection-background-color的参数设置应该分…

在将公司“一拆六”后,阿里巴巴未来将释放出哪些投资价值?

来源:猛兽财经 作者:猛兽财经 阿里巴巴为何要将公司拆分为六大业务集团 3月28日,阿里巴巴集团董事会主席兼首席执行官张勇发布全员信,宣布启动“16N”组织变革,将公司拆分为六大业务集团和多家业务分公司。 在阿里巴巴…

关于FPGA(Vivado)后仿真相关问题的探讨

FPGA后仿真时,相比于功能仿真增加了门延时和布线延时,相对于门级仿真增加了布线延时,因此后仿真相比于功能仿真具有不同的特点。 下面所示的代码在功能仿真时是正确的的,但在后仿真时,似乎是有问题的。功能很简…

大数据项目组-月度考核汇报0102

目录 01-2023年02月-月度考核汇报 2月份完成项目情况 2月份学习情况 3月份学习计划 老师点评 02-2023年03月-月度考核汇报 项目完成情况 本月学习内容 下月学习计划 老师点评 01-2023年02月-月度考核汇报 2月份完成项目情况 MySQL数据同步到ElasticSearch任务进展&a…

linux shell 操作二进制文件(xxd、dd)

1&#xff0c;生成一个二进制文件 dd 工具 # 全零 二进制文件 dd if/dev/zero of1.bin bs1 count1024#全0xff tr \000 \377 < /dev/zero | dd ofall_0xff.bin bs1 count1024 > /dev/null xxd 工具&#xff1a;只能改单个地址 # echo "0x123" | xxd -r – xx…

【华为od2023-C++版】字符串重新排列、字符串重新排序

华为od机试题C2023个人练习使用 字符串重新排列、字符串重新排序 题目描述 给定一个字符串s&#xff0c;s包括以空格分隔的若干个单词&#xff0c;请对s进行如下处理后输出:1、单词内部调整:对每个单词字母重新按字典序排序Q 2、单词间顺序调整: 1)统计每个单词出现的次数&a…

算法刷题日志

今天是星期几就加上多少天在最后 public class Main {public static void main(String[] args) {System.out.println(Math.pow(20, 22) % 7 6);} }这题是判断左右回文&#xff0c;且要保持单调性&#xff0c;因为回文数左右对称所以只需要判断左边是否单调递增。 public class…

模拟信号隔离放大器变送器 导轨安装DIN11 IPO EM系列

概述&#xff1a; 导轨安装DIN11 IPO EM系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成电路。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要电量隔离测控的行业。该模块内部嵌入了一个高效微功率的电源&#xff0…

yolov5详解与改进

https://github.com/z1069614715/objectdetection_script YOLOV5改进-Optimal Transport Assignment Optimal Transport Assignment&#xff08;OTA&#xff09;是YOLOv5中的一个改进&#xff0c;它是一种更优的目标检测框架&#xff0c;可以在保证检测精度的同时&#xff0c…

研究的艺术 (The craft of research) 读书笔记

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 对于研究者而言&#xff0c;写作是一件很重要的事&#xff0c;好的写作不仅能让更多人愿意读&#xff0c;获得更大影响力&…

k8s学习-CKS真题-K8S安全策略PodSecurityPolicy

目录题目环境搭建解题参考题目 Task 使用 Trivy 开源容器扫描器检测 namespace kamino 中 Pod 使用的具有严重漏洞的镜像。 查找具有 High 或 Critical 严重性漏洞的镜像&#xff0c;并删除使用这些镜像的 Pod。 注意&#xff1a;Trivy 仅安装在 cluster 的 master 节点上&…

开源的全文搜索引擎总结,chatbot和chatgpt项目必备资源

全文搜索引擎就是通过从互联网上提取的各个网站的信息&#xff08;以网页文字为主&#xff09;而建立的数据库中&#xff0c;检索与用户查询条件匹配的相关记录&#xff0c;然后按一定的排列顺序将结果返回给用户。 1、Apache Lucene Java 全文搜索框架 许可证&#xff1a;Apa…

中文英文翻译-英翻中文在线翻译

如果您需要将大量的英文文件或网页翻译成中文&#xff0c;那么我们的批量翻译英文翻译中文的软件将是您最佳的选择。我们的软件是一款高效、准确、节省时间的翻译工具&#xff0c;可以在最短时间内完成大量英文文本的翻译&#xff0c;让您在工作生活中处处流畅地处理英语文本。…

【云原生进阶之容器】第六章容器网络6.4.3--Flannel网络模式

《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述

算法套路八——二叉树深度优先遍历(前、中、后序遍历)

算法套路八——二叉树深度优先遍历&#xff08;前、中、后序遍历&#xff09; 算法示例&#xff1a;LeetCode98&#xff1a;验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只…

网络原理——网络协议

目录传输层协议TCP协议TCP协议格式段TCP原理连接管理可靠传输流量控制拥塞控制延迟应答和捎带应答错误检测TCP异常UDP协议UDP协议格式段UDP协议特点无连接不可靠面向数据报大小受限网络层协议IP协议数据链路层协议​以太网MTUARP协议传输层协议 ​ 传输层负责数据能够从发送端…

学Vue3这一篇就够了!

目录学习Vue的前提是掌握 HTML,CSS,Js中级知识vue介绍声明式渲染条件与循环处理用户输入组件化应用构建Vue与自定义元素的关系应用和组件实例Vue实例根组件组件实例 property生命周期钩子实例的生命周期图模板语法插值文本原始 HTMLAttribute使用 JavaScript 表达式指令参数动态…

不黑学孙溟㠭匪石社寒山寺游记

昔日寒山问拾得曰&#xff1a;世间谤我、欺我、辱我、笑我、轻我、贱我、恶我、骗我、如何处治乎&#xff1f;拾得云&#xff1a;只是忍他、让他、由他、避他、耐他、敬他、不要理他、再待几年你且看他。 经典对话显修行。是否文殊、普贤再来都不重要。因缘使然&#xff0c;朋友…

C++ :JSON 解析系统的设计与实现

JSON JavaScript Object Notation(JavaScript 对象表示法) 定义 存储和交换文本信息的语法&#xff0c;类似 XML&#xff1b; 比 XML 更小、更快&#xff0c;更易解析&#xff0c;属于轻量级的文本数据交换格式&#xff1b; 使用 Javascript语法来描述数据对象&#xff0c;但…

PMP学习笔记

day01 裸考1 题目1: 下列哪一项不属于项目的特征? D A:独特性 B:临时性 C:渐进明细 D:重复性 解析:重复性属于运营 题目2: 在确定项目目标时,应该更加关注哪一个? D A:进度要求 B:成本预算 C:质量标准 D:同等关注进度,成本和质量要求 前沿 管理的基础 三个学…