HDFS架构刨析

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.mzph.cn/news/21036.shtml

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

相关文章

iPhone 8透明屏的透明度高吗?

iPhone 8是苹果公司于2017年推出的一款智能手机,它采用了全新的设计和技术,其中一个亮点就是透明屏。 透明屏是指屏幕具有透明度,可以透过屏幕看到背后的物体。 iPhone 8的透明屏采用了最新的OLED技术,这种技术可以实现更高的对比…

后端技术趋势指南|如何选择自己的技术方向

编程多条路,条条通罗马 后台大佬 后台路线都是面对后台服务器业务,比如web后台服务器,视频后台服务器,搜索后台服务器,游戏后台服务器,直播后台服务器,社交IM后台服务器等等,大部分…

桶排序算法

桶排序算法 算法思想概述: 桶排序(Bucket Sort)是一种非比较性的排序算法,它将待排序的元素分到有限数量的桶(或箱子)中,然后对每个桶中的元素分别进行排序,最后合并所有桶的元素得…

使用tinyxml解析和修改XML文件

首先要清楚XML文件包含哪些元素&#xff1a; 他是由元素、文本或者两者混合物组成。元素可以拥有属性&#xff0c;元素是指从开始标签到结束标签的部分。 <?xml version"1.0" encoding"UTF-8" ?> <books><book id"1001">&…

Java版工程项目管理系统平台+企业工程系统源码+助力工程企业实现数字化管理 em

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程…

TypeScript【enum 枚举】

导语 在 TypeScript 中&#xff0c;新增了很多具有特性的一些数据类型处理方法&#xff0c;enum 【枚举】就是其中&#xff0c;很具有代表性的一种&#xff0c;所以本章节就来聊聊 在 TypeScript 中如何去运用 enum 【枚举】。 枚举的概念&#xff1a; 枚举&#xff08;Enum&am…

yolov3-tiny原理解析及代码分析

前言 从去年十一月份开始学习yolo神经网络用于目标识别的硬件实现&#xff0c;到现在已经六个月了。一个硬件工程师&#xff0c;C/C基础都差劲的很&#xff0c;对照着darknet作者的源码和网上东拼西凑的原理讲解&#xff0c;一点一点地摸索。刚开始进度很慢&#xff0c;每天都…

汽车EBSE测试流程分析(四):反思证据及当前问题解决

EBSE专题连载共分为“五个”篇章。此文为该连载系列的“第四”篇章&#xff0c;在之前的“篇章&#xff08;三&#xff09;”中已经结合具体研究实践阐述了“步骤二&#xff0c;通过系统调研确定改进方案”等内容。那么&#xff0c;在本篇章&#xff08;四&#xff09;中&#…

怎么维护好自己的电脑

你的电脑已经成为你工作、学习、娱乐的最佳工具之一&#xff0c;但是如果你不做好电脑维护工作&#xff0c;就可能面临着电脑变慢、蓝屏、崩溃等问题。在这篇文章中&#xff0c;我们将介绍10个电脑维护步骤&#xff0c;让你的电脑更加稳定&#xff01; 为什么需要电脑维护&…

2023年华数杯数学建模B题思路代码分析 - 不透明制品最优配色方案设计

# 1 赛题 B 题 不透明制品最优配色方案设计 日常生活中五彩缤纷的不透明有色制品是由着色剂染色而成。因此&#xff0c;不透明 制品的配色对其外观美观度和市场竞争力起着重要作用。然而&#xff0c;传统的人工配色 存在一定的局限性&#xff0c;如主观性强、效率低下等。因此…

Docker Dockerfile 语法与指令

一、简介 Docker 镜像原理、容器转成镜像 随便找个案例&#xff0c;进入 https://hub.docker.com/ 搜索 centos&#xff0c;然后随便找个版本&#xff08;例如&#xff1a;centos7&#xff09;点击一下&#xff0c;就会进入 centos7 的 dockerfile 文件&#xff1a; // 空镜像…

基于 Redux + TypeScript 实现强类型检查和对 Json 的数据清理

基于 Redux TypeScript 实现强类型检查和对 Json 的数据清理 突然像是打通了任督二脉一样就用了 generics 搞定了之前一直用 any 实现的类型…… 关于 Redux 的部分&#xff0c;这里不多赘述&#xff0c;基本的实现都在这里&#xff1a;Redux Toolkit 调用 API 的四种方式 和…

【Leetcode】73.矩阵置零

一、题目 1、题目描述 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 示例1: 输入:matrix = [[1,1,1],[1,0,1],[1,1,1]] 输出:[[1,0,1],[0,0,0],[1,0,1]]示例2: 输入:matrix = [[0,1,2,0],[3,4,5,2],[1,3,1…

2023年华数杯数学建模C题思路代码分析 - 母亲身心健康对婴儿成长的影响

# 1 赛题 C 题 母亲身心健康对婴儿成长的影响 母亲是婴儿生命中最重要的人之一&#xff0c;她不仅为婴儿提供营养物质和身体保护&#xff0c; 还为婴儿提供情感支持和安全感。母亲心理健康状态的不良状况&#xff0c;如抑郁、焦虑、 压力等&#xff0c;可能会对婴儿的认知、情…

深入了解PostgreSQL:高级查询和性能优化技巧

在当今数据驱动的世界中&#xff0c;数据库的性能和查询优化变得尤为重要。 POSTGRESQL作为一种开源的关系型数据库管理系统&#xff0c;在处理大规模数据和复杂查询时表现出色。 但随着数据量和查询复杂性的增加&#xff0c;性能问题可能会显现出来。 本文将深入探讨POSTGR…

华为OD机试真题 Java 实现【寻找最大价值的矿堆】【2023 B卷 100分】,附详细解题思路

目录 专栏导读一、题目描述二、输入描述三、输出描述四、Java算法源码五、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#xff09;》。 刷的越多…

面试题:请说下什么是重绘和重排(回流)?他们的区别是什么?

答&#xff1a; ● 第一次渲染 ○ html结构 解析为 dom树 ○ css样式 解析为 样式规则 ○ dom树 和 样式规则 匹配下&#xff0c;生成渲染树&#xff01; ○ 接下来就是重排&#xff1a;根据渲染树&#xff0c;得到每个盒子的几何信息&#xff08;大小位置&#xff09; ○ 最后…

Golang之路---03 面向对象——反射

反射 反射的存在意义 在开发中&#xff0c;你或许会碰到在有些情况下&#xff0c;你需要获取一个对象的类型&#xff0c;属性及方法&#xff0c;而这个过程其实就是反射。 golang中变量包括&#xff08;type, value&#xff09;两部分 静态类型 所谓的静态类型&#xff08;…

第四次作业 运维高级 安装tomcat8和部署jpress应用

1. 简述静态网页和动态网页的区别。 静态网页 静态网页是指存放在服务器文件系统中实实在在的HTML文件。当用户在浏览器中输入页面的URL&#xff0c;然后回车&#xff0c;浏览器就会将对应的html文件下载、渲染并呈现在窗口中。早期的网站通常都是由静态页面制作的。 静态网页…

【Spring框架】SpringBoot统一功能处理

目录 用户登录权限校验用户登录拦截器排除所有静态资源练习&#xff1a;登录拦截器拦截器实现原理 统一异常处理统一数据返回格式为什么需要统⼀数据返回格式&#xff1f;统⼀数据返回格式的实现 用户登录权限校验 用户登录拦截器 1.自定义拦截器 package com.example.demo.…