当前位置: 首页 > article >正文

HDFS架构原理

一、HDFS架构整体概述

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

二、HDFS架构图

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

三、HDFS集群角色介绍 

  • HDFS遵循主从架构
  • NameNode是主节点,负责存储和管理文件系统元数据信息,包括namespace目录结构、文件块位置信息等;  
  • DataNode是从节点,负责存储文件具体的数据块。
  • 两种角色各司其职,共同协调完成分布式的文件存储服务。
  • SecondaryNameNode是主角色的辅助角色,帮助主角色进行元数据的合并。

3.1 主角色namenode

  • NameNode是Hadoop分布式文件系统的核心,架构中的主角色。
  • NameNode维护和管理文件系统元数据,包括名称空间目录树结构、文件和块的位置信息、访问权限等信息。
  • 基于此,NameNode成为了访问HDFS的唯一入口。

  • NameNode内部通过内存和磁盘文件两种方式管理元数据
  • 其中磁盘上的元数据文件包括Fsimage内存元数据镜像文件和edits log(Journal)编辑日志。
  • 在Hadoop2之前,NameNode是单点故障。Hadoop 2中引入的高可用性。Hadoop群集体系结构允许在群集中以热备配置运行两个或多个NameNode。 

 3.2 从角色datanode

  • DataNode是Hadoop HDFS中的从角色,负责具体的数据块存储。
  • DataNode的数量决定了HDFS集群的整体数据存储能力。通过和NameNode配合维护着数据块。

3.3 主角色辅助角色: secondarynamenode 

  • 除了DataNode和NameNode之外,还有另一个守护进程,它称为secondary NameNode。充当NameNode的辅助节点,但不能替代NameNode。
  • 当NameNode启动时,NameNode合并Fsimage和edits log文件以还原当前文件系统名称空间。如果edits log过大不利于加载,Secondary NameNode就辅助NameNode从NameNode下载Fsimage文件和edits log文件进行合并。

四、HDFS重要特性 

4.1 主从架构

  • HDFS采用master/slave架构。一般一个HDFS集群是有一个Namenode和一定数目的Datanode组成。
  • Namenode是HDFS主节点,Datanode是HDFS从节点,两种角色各司其职,共同协调完成分布式的文件存储服务。

4.2 分块存储机制 

HDFS中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,参数位于hdfs-default.xml中:dfs.blocksize。默认大小是128M(134217728)

4.3 副本机制

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

4.4 namespace 

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

4.5 元数据管理 

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

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

 4.6 数据块存储

文件的各个block的具体存储管理由DataNode节点承担。每一个block都可以在多个DataNode上存储。

 


http://www.kler.cn/a/471164.html

相关文章:

  • git撤回提交、删除远端某版本、合并指定版本的更改
  • HarmonyOS开发:传参方式
  • 【VUE+ElementUI】通过接口下载blob流文件设置全局Loading加载进度
  • 面试高频:一致性hash算法
  • ComfyUI节点安装笔记
  • 微服务-Eureka
  • TextMeshPro保存偏移数据
  • React18实现账单管理项目(三):日期分组与图标适配
  • 请求是如何通过k8s service 路由到对应的pod
  • Express 加 sqlite3 写一个简单博客
  • Oracle SQL子查询实例
  • UE4_用户控件_4_Widgets嵌套Widgets构建复杂系统
  • VLMs之Agent之CogAgent:CogAgent的简介、安装和使用方法、案例应用之详细攻略
  • Yolov8训练方式以及C#中读取yolov8+onnx模型进行目标检测.NET 6.0
  • 分布式与集群
  • 基于SpringBoot+Vue的考研百科网站
  • UG NX二次开发(C++)-UFun函数-按照特定方向提取轮廓线
  • el-table拖拽表格
  • 吉客云与金蝶云星空数据集成技术详解
  • 20250107在WIN10下使用无线ADB连接Andorid7.1.2
  • vulnhub whowantstobeking靶机
  • C++中,typename
  • 初学stm32 --- 电源监控
  • 数据库6讲
  • 基于GUI网络渗透侦察工具设计与实践
  • PCL 点云多边形面积计算