Hadoop之HDFS——【模块一】元数据架构

一、元数据是什么

在HDFS中,元数据主要指的是文件相关的元数据,通过两种形式来进行管理维护,第一种是内存,维护集群数据的最新信息,第二种是磁盘,对内存中的信息进行维护与持久化,由namenode管理维护。从广义的角度来说,因为namenode还需要管理众多的DataNode结点,因此DataNode的位置和健康状态信息也属于元数据。

二、文件的组成

meta:文件的索引,文件和目录是文件系统的基本元素,HDFS将这些元素抽象成INode,每一个文件或目录都对应一个唯一的INode。

block:真实的数据存储的位置,Block是对于文件内容组织而言的,按照固定大小,顺序对文件进行划分并编号,划分好的每一个块就称之为一个Block。

三、namenode的功能

1、管理HDFS命名空间(文件目录树及其目录与文件的元数据),并以fsimage进行持久化保存。

2、处理客户端的访问,并将修改动作记录到edits文件中。

3、在内存中维护数据块的映射信息,即块文件与datanode的对应关系,namenode只在内存中维护此关系,不会永久化到磁盘上,因此在集群刚启动是,namenode中并没有块文件与datanode的对应关系,需要datanode上报自身的块文件信息后,才可以正常工作。

4、实施副本冗余策略,当实际副本数小于配置数时,会启动复制块的线程,直到个数达配置数。

四、namenode的启动过程

  1. 加载预先生成的持久化文件fsimage。
  2. 加载没有完成处理的edit log文件。
  3. 等待DataNode注册和汇报其所包含的block数据,校验meta信息和block数据是否一致。

五、datanode的全量上报过程

  • DataNode启动后通过RPC方式向NameNode注册,注册时携带的信息有:Software Version(当前DataNode版本号) storageInfo(集群信息)DataNodeId(节点自身信息)
  • 全量上报当前DataNode所有的block块信息,包括block ID、所属文件、存储位置等,目的分别是使用NameNode维护集群数据,与meta进行校验。
  1. 维护集群数据:NameNode需要知道集群中每个DataNode上存储了哪些block块以及其所属的文件信息,以便在需要时能够有效地管理和调度这些数据块。DataNode会周期性地向NameNode报告自己所存储的所有block块的信息,包括block ID、所属文件、存储位置等。

  2. 校验meta:在Hadoop集群中,为了确保数据的一致性和完整性,通常会使用Checksum来对数据进行校验。当DataNode上报block块信息时,NameNode会使用这些信息来验证各个DataNode上的block块是否完整、准确,并且与元数据中记录的信息一致。这样可以确保数据在集群中的可靠性。

  3. 例如,当一个DataNode上报block块信息给NameNode时,NameNode会检查这些信息,确保每个block块的ID、所属文件、复本数量等信息都是正确的。同时,NameNode也会对这些block块所在的DataNode进行通信,验证每个block块的Checksum值,以确保数据的完整性和一致性,Checksum是存储在DataNode的块信息中的,与数据一起存储。全量上报的时候,通过RPC一次性将所有的block发送给namenode比较浪费资源,采用限制分批次的方式,一次只能处理100w的block。
  • NameNode收到后,向元数据中记录
  • DataNode每周期上报块信息(默认6小时,可配置)
  • 心跳检测,三秒一次
  • DataNode超过10分钟+30秒没有上报心跳,则NameNode将该节点移出认为该节点不可用

六、FSNamesystem的主要功能

  1. 命名空间管理: FSNamesystem负责维护HDFS的命名空间,包括文件和目录的创建、删除、重命名等操作,以及管理命名空间中的元数据信息。FSDirectory

  2. 数据块管理: FSNamesystem负责管理HDFS中数据块的分配、复制、移动和删除等操作,确保数据块的可靠性和高可用性。BlockManager(维护集群中的数据块信息和数据块状态)

  3. 安全性管理: FSNamesystem负责对HDFS中的文件和目录进行权限控制,验证用户对文件系统的访问权限,并确保数据的安全性。

  4. 故障处理: FSNamesystem能够检测和处理DataNode的故障,及时调整数据块的复制策略,以保证数据的可靠性和完整性。

  5. 元数据持久化:</

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

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

相关文章

【测试开发面试复习(一)】计算机网络:应用层详解(P2)补充ing

复习自用&#xff0c;若有错漏&#xff0c;欢迎一起交流一下~~ 一、高频面试题记录 uri 和 url 的区别 &#xff1f; dns 是啥工作原理&#xff0c;主要解析过程是啥&#xff1f; 用户输入网址到显示对应页面的全过程是啥&#xff1f; http 头部包含哪些信息&#xff1f; http…

IEEE Trans. On Robotics ​“受护理人员启发的双臂机器人穿衣”研究工作

开发能够协助穿衣的辅助机器人&#xff0c;可以极大地改善老年人和残疾人的生活。然而&#xff0c;大多数机器人穿衣策略只考虑使用单个机器人&#xff0c;这大大限制了穿衣辅助的性能。事实上&#xff0c;专业护理人员是通过双臂来完成这项任务的。受其启发&#xff0c;我们提…

【YOLO v5 v7 v8 小目标改进】Non-local 注意力实现非局部神经网络,解决长空间和时间数据依赖问题

Non-local 注意力实现非局部神经网络&#xff0c;解决长空间和时间数据依赖问题 提出背景长距离技术对比Non-local Block是怎么设计Non-local 神经网络效果 小目标涨点YOLO v5 魔改YOLO v7 魔改YOLO v8 魔改 提出背景 论文&#xff1a;https://arxiv.org/pdf/1711.07971.pdf …

用 tensor-parallel 多卡并发推理大模型

利用 tensor-parallel 把模型训练与推理的 workload 平均分布到多块 GPU&#xff0c;一方面可以提高推理速度&#xff0c;另一方面 vram 的负载平衡也让复杂的 prompt 能被轻松处理。 import 相关的 libs&#xff1a; # torch version 2.0.0 import torch # tensor-parallel …

抽象类与抽象方法

文章目录 抽象类抽象类的特点 抽象方法抽象方法的特点 模板设计模式模板设计模式能解决的问题示例 #抽象类与抽象方法 抽象类 用abstract关键字来修饰一个类时&#xff0c;这个类就叫抽象类。 public abstract 类名{... }抽象类的特点 1&#xff09;抽象类不能被实例化。 2&…

AOP(黑马学习笔记)

AOP基础 学习完spring的事务管理之后&#xff0c;接下来我们进入到AOP的学习。 AOP也是spring框架的第二大核心&#xff0c;我们先来学习AOP的基础。 在AOP基础这个阶段&#xff0c;我们首先介绍一下什么是AOP&#xff0c;再通过一个快速入门程序&#xff0c;让大家快速体验A…

JAVASE初认识

1.初认识其结构 1.源文件&#xff08;扩展名为*.java)&#xff1a;源文件带有类的定义。类用来表示程序的一个组件&#xff0c;小程序或许只会有一个类。类的内容必须包含在花括号里面。 2.类&#xff1a;类中带有一个或多个方法。方法必须在类的内部声明。 3.方法&#xff1…

vue3创建h5 项目使用rem做响应式的配置

第一步 安装依赖&#xff1a; npm install amfe-flexible -S npm install postcss-px2rem -S第二步 main.ts文件中导入 import "amfe-flexible/index.js";第三步 进行配置&#xff1a; vue3 项目中创建 postcss.cinfig.js文件&#xff0c;这里是基于设计稿是750px…

gRPC知识归档

文章目录 gRPC知识归档gRPC原理什么是gRPCgRPC的特性gRPC支持语言gRPC使用场景gRPC设计的动机和原则 数据封装和数据传输问题网络传输中的内容封装和数据体积问题JSONProtobuf&#xff08;微服务之间的服务器调用&#xff0c;一般采用二进制序列化&#xff0c;比如protobuf&…

精读《React Hooks 最佳实践》

简介 React 16.8 于 2019.2 正式发布&#xff0c;这是一个能提升代码质量和开发效率的特性&#xff0c;笔者就抛砖引玉先列出一些实践点&#xff0c;希望得到大家进一步讨论。 然而需要理解的是&#xff0c;没有一个完美的最佳实践规范&#xff0c;对一个高效团队来说&#x…

【airtest】自动化入门教程(二)airtest操作

目录 一、touch 二、wait 三、swipe 四、exists 五、text 六、keyevent 七、snapshot 八、sleep 九、断言 9.1 assert_exists 9.2 assert_not_exists 9.3 assert_equal 9.4 assert_not_equal 前言&#xff1a;本文主要针对aritest部分的基础操作,aritest是一个跨平…

网络编程第二天

1.基于TCP的通信(面向连接的通信) 服务器代码实现&#xff1a; #include <myhead.h> #define IP "192.168.126.91" #define PORT 9999 int main(int argc, const char *argv[]) {//1、创建套接字int sfd-1;if((sfdsocket(AF_INET,SOCK_STREAM,0))-1){perror(…

LeetCode 76 最小覆盖字串

LeetCode 76 最小覆盖字串 在本篇博客中&#xff0c;我们将探讨LeetCode上的一道算法题目——“最小覆盖子串”。这道题的主要目标是找到字符串s中包含字符串t中所有字符的最小子串。 问题描述 给定字符串s和t&#xff0c;要求在字符串s中找到一个最小的子串&#xff0c;使得…

5.36 BCC工具之ucalls.py解读

一,工具简介 ucalls工具总结了包括Java、Perl、PHP、Python、Ruby、Tcl和Linux系统调用在内的各种高级语言中的方法调用。它显示最常调用方法的统计信息,以及这些方法的延迟(持续时间)。 通过系统调用支持,ucalls可以提供关于进程与系统交互的基本信息,包括系统调用计数…

ES系列之Logstash实战入门

概述 作为ELK技术栈一员&#xff0c;Logstash用于将数据采集到ES&#xff0c;通过简单配置就能把各种外部数据采集到索引中进行保存&#xff0c;可提高数据采集的效率。 原理 数据源提供的数据进入Logstash的管道后需要经过3个阶段&#xff1a; input&#xff1a;负责抽取数…

C#单向链表实现:在当前节点后插入新数据的方法Insert()

目录 一、涉及到的知识点 1.插入算法 2.示例中current 和 _current 的作用 3.current 和 _current 能否合并为一个变量 4.单向链表节点类的三个属性 &#xff08;1&#xff09;Next属性&#xff1a; &#xff08;2&#xff09; Value属性&#xff1a; &#xff08;3&am…

【ArcPy】批量读取文件夹excel中XY并转为点shp

示例展示 代码 只读取excel中含有XY字段的文件&#xff0c;并将矢量命名为excel文件名称。 import os import pandas as pd import arcpy folder_path r"C:\Users\admin\Desktop\excelfile" extension"xlsx" files [file for file in os.listdir(folder…

SpringCloud gateway限流无效,redis版本低的问题

在使用springCloud gateway的限流功能的时候&#xff0c;配置RedisRateLimiter限流无效&#xff0c;后来发现是Redis版本过低导致的问题&#xff0c;实测 Redis版本为3.0.504时限流无效&#xff0c;改用7.0.x版本的Redis后限流生效。查了资料发现很多人都遇见过这个问题&#x…

RedisTemplate 序列化成功,反序列化失败List, Set, Map失败

RedisTemplate 序列化成功&#xff0c;反序列化失败List, Set, Map失败 异常信息RedisTemplate配置异常原因错误代码示例解决方法 序列化成功&#xff0c;反序列化失败 异常信息 Caused by: com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Could not resolve ty…

小程序事件处理

事件处理 一个应用仅仅只有界面展示是不够的&#xff0c;还需要和用户做交互&#xff0c;例如&#xff1a;响应用户的点击、获取用户输入的值等等&#xff0c;在小程序里边&#xff0c;我们就通过编写 JS 脚本文件来处理用户的操作 1. 事件绑定和事件对象 小程序中绑定事件与…