HDFS架构刨析

news2024/9/22 21:26:02

HDFS架构刨析

  • 概述
  • HDFS架构图
  • 整体概述
    • 主角色:namenode
      • fsimage内存元数据镜像文件
      • edits log(Journal)编辑日志
    • 从角色:datanode
    • 主角色辅助角色:secondarynamenode
  • 重要特性
    • 主从架构
    • 分块存储机制
    • 副本机制
    • namespace
    • 元数据管理
    • 数据块存储

概述

  • HDFS是Hadoop distribute file system的简称,意味:Hadoop分布式文件系统
  • HDFS是Hadoop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在
  • HDFS解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件存储系统并且具有高度的容错能力
    在这里插入图片描述

HDFS架构图

  • HDFS集群遵循主从架构(master/slave)。通常包括一个主节点和多个从节点
  • 在内部,文件分块存储,每个块根据复制因子存储在不同的从节点计算机上形成备份
  • 主节点存储和管理文件系统namespace,即有关文件块的信息,例如块位置,权限等;从节点存储文件的数据块
  • 主从各司其职,相互配合,共同对外提供文件分布式存储服务。当然内部细节对用户来说是透明的
    在这里插入图片描述

整体概述

  • HDFS遵循主从架构
  • namenode是主节点,负责存储和管理文件系统元数据信息,包括namespace目录结构,文件块位置信息等
  • datanode是从节点,负责存储文件具体的数据块
  • 两种角色各司其职,共同协调完成分布式的文件存储服务
  • secondarynamenode是主角色的辅助角色,帮助主角色进行元数据的合并
    在这里插入图片描述

主角色:namenode

  • namenode是Hadoop分布式系统的核心,架构中的主角色
  • namenode维护和管理文件系统元数据,包括名称空间目录树结构,文件和块的位置信息,访问权限等信息
  • 基于此,namenode成为访问HDFS的唯一入口
  • namenode内部通过内存和磁盘文件两种方式管理元数据
  • 其中磁盘上的元数据文件包括simage内存元数据镜像文件和edits log(Journal)编辑日志
  • 在Hadoop2之前,namenode是单点故障。Hadoop2中引入高可用性。Hadoop集群体系结构允许在集群中以热备配置运行两个或多个namenode
    在这里插入图片描述

fsimage内存元数据镜像文件

fsimage 是 Hadoop 分布式文件系统(HDFS)的内存元数据镜像文件。它包含了关于文件系统命名空间、文件块信息、权限和属性等元数据的详细记录。

fsimage 文件是 HDFS 中重要的元数据文件,用于恢复文件系统的状态和内容。当 HDFS 启动时,它会读取 fsimage 文件并将其中的元数据加载到内存中,以便提供文件系统的元数据服务。当文件系统发生变化时(如创建、删除或修改文件),HDFS 会将这些变化记录在编辑日志(edits log)中,然后可以根据编辑日志和当前的 fsimage 文件来恢复文件系统的状态。

由于 fsimage 文件是完整的元数据镜像,它可以在文件系统启动时快速加载到内存,从而加快了文件系统的启动速度。此外,fsimage 文件还可以进行压缩来减小文件大小,并且可以定期生成检查点,以保证文件系统的一致性和可靠性。

需要注意的是,fsimage 文件只包含元数据信息,不包含实际的文件数据。实际的文件数据存储在 HDFS 的数据块中,而不是 fsimage 文件中。

总结起来,fsimage 文件是 HDFS 中的内存元数据镜像文件,用于恢复文件系统的状态和内容。通过读取 fsimage 文件和编辑日志,HDFS 可以在启动时加载元数据并提供文件系统的服务。

edits log(Journal)编辑日志

edits log(也称为编辑日志)是 Hadoop 分布式文件系统(HDFS)中的一种日志文件,用于记录对文件系统的变更操作。

在 HDFS 中,当发生文件系统的变更操作时,例如创建、删除、重命名文件或目录,以及修改文件的权限或属性,这些变更将会被记录在 edits log 中。edits log 记录了文件系统的逻辑操作,而不是实际的数据块内容。

edits log 具有持久性和顺序性的特点。它是一个追加写日志文件,新的变更操作将会被追加到日志文件的末尾。这种顺序写入的方式使得 HDFS 可以快速写入变更操作,同时保证了操作的顺序性。

通过记录变更操作在 edits log 中,HDFS 可以保证数据的一致性和可恢复性。当文件系统启动时,HDFS 会加载 fsimage 文件和最后一个 edits log 文件,并根据其中的操作重放文件系统的变更过程,从而恢复文件系统的状态。这个过程被称为“日志回放”(log replay)。

在运行过程中,HDFS 会定期将 edits log 合并成较大的文件,并创建一个新的空的 edits log 文件,以减少日志文件的数量和提高效率。

总结起来,edits log 是 HDFS 中的一种日志文件,用于记录对文件系统的变更操作。它具有持久性和顺序性特点,通过日志回放,HDFS 可以恢复文件系统的状态并保证数据的一致性和可恢复性。

从角色:datanode

  • datanode是Hadoop HDFS中的从角色,负责具体的数据块存储
  • datanode的数量决定了HDFS集群的整体数据存储能力,通过和namenode配合维护着数据块
    在这里插入图片描述

主角色辅助角色:secondarynamenode

  • 除了datanode和namenode之外,还有lingerie守护进程,它称为secondarynamenode。充当namenode的辅助节点,但不能替代namenode
  • 当namenode启动时,namenode合并Fsimage和edits log文件以还原当前文件系统名称空间。如果edits log过大不利于加载,secondarynamonode就辅助namenode从namenode下载Fsimage文件和edits log文件进行合并
    在这里插入图片描述

重要特性

主从架构

  • HDFS采用master/slave架构。一般一个HDFS集群是有一个namenode和一定数目的datanode组成
  • namonode是HDFS主角点,datanode是HDFS从节点,两种角色各司其职,共同协调完成分布式的文件存储服务
    在这里插入图片描述

分块存储机制

  • HDFS中的文件在物理上是分块存储(block)的,快的大小可以通过配置参数来规定,参数位于hdfs-default.xml中:dfs:blocksize,默认大小是128m
    在这里插入图片描述

副本机制

  • 文件的所有block都会有副本。每个文件的block大小(dfs.blocksize)和副本系数(dfs.replication)都是可配置的。副本系数可以在文件创建的时候指定,也可以在之后通过命令改变
  • 默认dfs.replication的值是3,也就是会额外再复制2份,连同本身共3份副本

在这里插入图片描述

namespace

  • HDFS支持传统的层次型文件组织结构。用户可以创建目录然后将文件保存在这些目录里。文件系统名字空间的层次结构和大多数现有的文件系统类似:用户可以创建,删除,移动或重命名文件
  • namenode负责维护文件系统的namespace名称空间,任何对文件系统名称空间或属性的修改都将被namenode记录下来
  • HDFS会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件,例如:hdfs://namenode:port/dir-a/dir-b/dir-c/file-data

在这里插入图片描述

元数据管理

在HDFS中,namenode管理的元数据具有两种类型

  • 文件自身属性
    • 文件名称,权限,修改时间,文件大小,复制因子,数据块大小
  • 文件块位置映射信息
    • 记录文件块和datanode之间的映射信息,即哪个块位于哪个节点上

在这里插入图片描述
在这里插入图片描述

数据块存储

  • 文件的各个block的具体存储管理由datanode节点承担。每一个block都可以在多个datanode上存储
    在这里插入图片描述

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

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

相关文章

京津冀特大暴雨,带给应急通信工作怎样的启示?

上个月,我发卫星基站中移集采那篇文章的时候,就提到:未来即将进入汛期,应急通信装备将发挥重要作用。 果不其然,没多久,超强台风“杜苏芮”形成并登陆福建,造成巨大破坏。 除了在南方地区的肆虐…

Java工程师研学之路【003Java基础语法下】

知识体系 挑战(challenge) 从终端输入字符串(输入的个数不超过10个),当输入遇到end字符串时,结束输入并且打印出之前输入的所有字符串。 思路:首先要输出end之前的所有字符串,故可以使用数组把输入的字符…

zookeeper+kafka分布式消息队列集群的部署

目录 一、zookeeper 1.Zookeeper 定义 2.Zookeeper 工作机制 3.Zookeeper 特点 4.Zookeeper 数据结构 5.Zookeeper 应用场景 (1)统一命名服务 (2)统一配置管理 (3)统一集群管理 (4&…

零代码爬虫平台SpiderFlow的安装

什么是 Spider Flow ? Spider Flow 是一个高度灵活可配置的爬虫平台,用户无需编写代码,以流程图的方式,即可实现爬虫。该工具支持多数据源、自动保存至数据库、任务监控、抓取 JS 动态渲染页面、插件扩展(OCR 识别、邮…

17、YML配置文件及让springboot启动时加载我们自定义的yml配置文件的几种方式

YML配置文件及加载自定义配置文件的几种方式 ★ YAML配置文件 其实本质和.properties文件的是一样的。 Spring Boot默认使用SnakeYml工具来处理YAML配置文件,SnakeYml工具默认就会被spring-boot-starter导入,因此无需开发者做任何额外配置。 YAML本质…

为Android构建现代应用——应用导航设计

在前一章节的实现中,Skeleton: Main structure,我们留下了几个 Jetpack 架构组件,这些组件将在本章中使用,例如 Composables、ViewModels、Navigation 和 Hilt。此外,我们还通过 Scaffold 集成了 TopAppBar 和 BottomA…

论文阅读- Uncovering Coordinated Networks on Social Media:Methods and Case Studies

链接:https://arxiv.org/pdf/2001.05658.pdf 目录 摘要: 引言 Methods Case Study 1: Account Handle Sharing Coordination Detection 分析 Case Study 2: Image Coordination Coordination Detection Analysis Case Study 3: Hashtag Sequen…

Leetcode-每日一题【剑指 Offer 39. 数组中出现次数超过一半的数字】

题目 数组中有一个数字出现的次数超过数组长度的一半&#xff0c;请找出这个数字。 你可以假设数组是非空的&#xff0c;并且给定的数组总是存在多数元素。 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2 限制&#xff1a; 1 < 数组长度 < 50000 解题思路 前置知…

手把手教新手最新Maven3.9.3下载安装配置

当前文档地址&#xff1a;有道云笔记 手把手教新手最新Maven3.9.3下载安装配置 1.下载 Maven官网&#xff1a;Maven – Maven Documentation 1.1打开主页&#xff0c;点击 Download 1.2 选择二进制压缩包&#xff0c;点击apache-maven-3.9.3-bin.zip进行下载 1.3 选择合适的…

租赁类小程序定制开发|租赁管理系统源码|免押租赁系统开发

随着互联网的发展&#xff0c;小程序成为了一种重要的移动应用开发方式。租赁小程序作为其中的一种类型&#xff0c;可以为很多行业提供便利和创新。下面我们将介绍一些适合开发租赁小程序的行业。   房屋租赁行业&#xff1a;租房小程序可以帮助房东和租户快速找到合适的租赁…

史上最全docker启动命令

docker Docker 启动镜像 一、查看当前docker中下载的镜像&#xff0c;如下图&#xff0c;当前我的Docker容器中存在两个镜像 &#xff0c;tomcat、mysql 二、启动镜像 (因启动命令参数过多&#xff0c;同时各种镜像启动时可以增加额外的参数&#xff0c;本次以启动mysql5.6为例…

Manage repositories按钮没有找到

今天安装PyCharm 2022.2.5版本没有发现Manage Repositories&#xff0c;如下图&#xff1a; 解决办法&#xff1a; 第一步&#xff1a;打开pycharm 根据图示按顺序点击底部内容 第二步 &#xff1a;点击加号&#xff0c;添加国内镜像源即可 第三步&#xff1a;国内镜像源地址 …

SpringBoot之Actuator基本使用

SpringBoot之Actuator基本使用 引入分类常用接口含义healthbeansconditionsheapdumpmappingsthreaddumploggersmetrics 引入 <!-- actuator start--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter…

【C++入门到精通】C++入门 —— string类(STL)

目录 一、STL简介 1.STL是什么 2.STL的内容 3.STL的使用前提 二、string类 1.string类 是什么 2.string类的特点和操做 ⭕构造和初始化 ⭕字符串大小和容量 ⭕字符访问和修改 ⭕字符串连接和拼接 ⭕子串操作 ⭕字符串比较 ⭕字符串修改 ⭕获取字符的ASCII码 ⭕…

音频光耦合器

音频光耦合器是一种能够将电信号转换为光信号并进行传输的设备。它通常由发光二极管&#xff08;LED&#xff09;和光敏电阻&#xff08;光电二极管或光敏电阻器&#xff09;组成。 在音频光耦合器中&#xff0c;音频信号经过放大和调节后&#xff0c;被转换为电流信号&#xf…

RISCV 5 RISC-V调用规则

RISCV 5 RISC-V调用规则 1 Register Convention1.1 Integer Register Convention1.2 Floating-point Register Convention 2. Procedure Calling Convention2.1 Integer Calling Convention2.2 Hardware Floating-point Calling Convention2.3 ILP32E Calling Convention2.4 Na…

web前端转正工作总结范文5篇

web前端转正工作总结&#xff08;篇1&#xff09; 来到__有限公司已经三个月了&#xff0c;目前的工作是前端开发&#xff0c;我是一名应届毕业生&#xff0c;之前没有过工作经验&#xff0c;在刚来到__这个大家庭的时候&#xff0c;我就被这里的工作气氛深深地吸引&#xff0…

【Spring】(三)Spring 使用注解存储和读取 Bean对象

文章目录 前言一、使用注解储存 Bean 对象1.1 配置扫描路径1.2 类注解储存 Bean 对象1.2.1 Controller&#xff08;控制器存储&#xff09;1.2.2 Service&#xff08;服务储存&#xff09;1.2.3 Repository&#xff08;仓库存储&#xff09;1.2.4 Component&#xff08;组件储存…

java+vue+springboot基于Web的研究生信息管理系统_u0974

随着社会的不断进步与发展&#xff0c;人们对生活质量要求逐步提升。如果开发一款基于web的研究生管理系统&#xff0c;可以让管理员、研究生和导师在最短的时间里享受到最好的服务&#xff1b;而开发本系统&#xff0c;又能够提高系统整体工作水平&#xff0c;简化工作程序&am…

TiDB Serverless 正式商用,全托管的云服务带来数据管理和应用程序开发的全新体验

八 年 前 &#xff0c;我们构建了 TiDB&#xff0c;一个开源分布式关系型数据库。 我们的目标是重新定义开发者和企业处理数据的方式&#xff0c;满足不断增长的可扩展性、灵活性和性能需求。 从那时起&#xff0c;PingCAP 便致力于为开发者和企业提供快速、灵活和规模化的数据…