【hadoop】HDFS原理 和 重要特性

article/2025/10/24 4:06:19

文章目录

        • 一、NameNode 概述
        • 二、DataNode 概述
        • 三、HDFS的工作机制
        • 三、HDFS 写数据流程
        • 四、HDFS 读数据流程
        • 五、HDFS重要特性
          • 1. master/slave 架构
          • 2. 分块存储
          • 3. 名字空间(NameSpace )
          • 4. Namenode 元数据管理
          • 5. Datanode 数据存储
          • 6. 副本机制
          • 7. 一次写入,多次读出

一、NameNode 概述

  1. NameNode 是 HDFS 的核心。
  2. NameNode 也称为 Master。
  3. NameNode 仅存储 HDFS 的元数据:文件系统中所有文件的目录树,并跟踪整个集群中的文件。
  4. NameNode 不存储实际数据或数据集。数据本身实际存储在 DataNodes 中。
  5. NameNode 知道 HDFS 中任何给定文件的块列表及其位置。使用此信息NameNode 知道如何从块中构建文件。
  6. NameNode 并不持久化存储每个文件中各个块所在的 DataNode 的位置信息,这些信息会在系统启动时从数据节点重建。
  7. NameNode 对于 HDFS 至关重要,当 NameNode 关闭时,HDFS / Hadoop 集群无法访问。
  8. NameNode 是 Hadoop 集群中的单点故障。
  9. NameNode 所在机器通常会配置有大量内存(RAM)。

在这里插入图片描述

二、DataNode 概述

  1. DataNode 负责将实际数据存储在 HDFS 中。
  2. DataNode 也称为 Slave。
  3. NameNode 和 DataNode 会保持不断通信。
  4. DataNode 启动时,它将自己发布到 NameNode 并汇报自己负责持有的块列表。
  5. 当某个 DataNode 关闭时,它不会影响数据或群集的可用性。NameNode 将安排由其他 DataNode 管理的块进行副本复制。
  6. DataNode 所在机器通常配置有大量的硬盘空间。因为实际数据存储在DataNode 中。
  7. DataNode 会定期(dfs.heartbeat.interval 配置项配置,默认是 3 秒)向NameNode 发送心跳,如果 NameNode 长时间没有接受到 DataNode 发送的心跳, NameNode 就会认为该 DataNode 失效。
  8. block 汇报时间间隔取参数 dfs.blockreport.intervalMsec,参数未配置的话默认为 6 小时.

三、HDFS的工作机制

NameNode 负责管理整个文件系统元数据;
DataNode 负责管理具体文件数据块存储;Secondary NameNode 协助 NameNode 进行元数据的备份。
HDFS 的内部工作机制对客户端保持透明,客户端请求访问 HDFS 都是通过向NameNode 申请来进行。

在这里插入图片描述

三、HDFS 写数据流程

详细步骤解析:

  1. client 发起文件上传请求,通过 RPC 与 NameNode 建立通讯,NameNode检查目标文件是否已存在,父目录是否存在,返回是否可以上传;

  2. client 请求第一个 block 该传输到哪些 DataNode 服务器上;

  3. NameNode 根据配置文件中指定的备份数量及副本放置策略进行文件分配,返回可用的 DataNode 的地址,如:A,B,C;

    注:默认存储策略由 BlockPlacementPolicyDefault 类支持。也就是日常生活中提到最经典的 3 副本策略 。

    • 1st replica 如果写请求方所在机器是其中一个 datanode,则直接存放在本地,否则随机在集群中选择一个 datanode.
    • 2nd replica 第二个副本存放于不同第一个副本的所在的机架.
    • 3rd replica 第三个副本存放于第二个副本所在的机架,但是属于不同的节点
      在这里插入图片描述
  4. client 请求 3 台 DataNode 中的一台 A 上传数据(本质上是一个 RPC 调用,建立 pipeline),A 收到请求会继续调用 B,然后 B 调用 C,将整个pipeline 建立完成,后逐级返回 client;

  5. client 开始往 A 上传第一个 block(先从磁盘读取数据放到一个本地内存缓存),以 packet 为单位(默认 64K),A 收到一个 packet 就会传给 B,B 传给 C;A 每传一个 packet 会放入一个应答队列等待应答。

  6. 数据被分割成一个个 packet 数据包在 pipeline 上依次传输,在pipeline 反方向上,逐个发送 ack(命令正确应答),最终由 pipeline中第一个 DataNode 节点 A 将 pipeline ack 发送给 client;

  7. 当一个 block 传输完成之后,client 再次请求 NameNode 上传第二个block 到服务器。

    在这里插入图片描述

四、HDFS 读数据流程

详细步骤解析:

  1. Client 向 NameNode 发起 RPC 请求,来确定请求文件 block 所在的位置;
  2. NameNode会视情况返回文件的部分或者全部block列表,对于每个block,NameNode 都会返回含有该 block 副本的 DataNode 地址;
  3. 这些返回的 DN 地址,会按照集群拓扑结构得出 DataNode 与客户端的距离,然后进行排序,排序两个规则:网络拓扑结构中距离 Client 近的排靠前;心跳机制中超时汇报的 DN 状态为 STALE,这样的排靠后;
  4. Client 选取排序靠前的 DataNode 来读取 block,如果客户端本身就是DataNode,那么将从本地直接获取数据;
  5. 底层上本质是建立 Socket Stream(FSDataInputStream),重复的调用父类 DataInputStream 的 read 方法,直到这个块上的数据读取完毕;
  6. 当读完列表的 block 后,若文件读取还没有结束,客户端会继续向NameNode 获取下一批的 block 列表;
  7. 读取完一个 block 都会进行 checksum 验证,如果读取 DataNode 时出现错误,客户端会通知 NameNode,然后再从下一个拥有该 block 副本的DataNode 继续读。
  8. read 方法是并行的读取 block 信息,不是一块一块的读取;NameNode 只是返回Client请求包含块的DataNode地址,并不是返回请求块的数据;
  9. 最终读取来所有的 block 会合并成一个完整的最终文件。
    在这里插入图片描述

五、HDFS重要特性

首先,它是一个文件系统,用于存储文件,通过统一的命名空间目录树来定位文件;
其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。

  1. 传统的存储模式:把文件放在指定的位置
    缺点:随着存储量增大 存储遇到了瓶颈

    本能反应:纵向扩展 缺啥补啥 磁盘不够加磁盘
    ----->有上限的限制 不能无限加下去

解决海量数据存储:横向扩展 分布式存储 多态机器共同存储

  1. 当数据分布式存储的时候,查找的时候 如何快速定位?
    给这个系统增加记录文件的位置 的元数据管理

  2. 数据文件太大的时候,不管是上传还是下载文件 耗时都太严重?
    在这里插入图片描述

  3. 机器故障时不可避免,如何解决故障后的数据丢失呢?
    备份 默认3份
    备份数越多 数据越安全 冗余太高

1. master/slave 架构

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

2. 分块存储

HDFS 中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,默认大小在 hadoop2.x 版本中是 128M。

3. 名字空间(NameSpace )

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

4. Namenode 元数据管理

我们把目录结构及文件分块位置信息叫做元数据。Namenode 负责维护整个hdfs 文件系统的目录树结构,以及每一个文件所对应的 block 块信息(block 的id,及所在的 datanode 服务器)。

5. Datanode 数据存储

文件的各个 block 的具体存储管理由 datanode 节点承担。每一个 block 都可以在多个 datanode 上。Datanode 需要定时向 Namenode 汇报自己持有的 block信息。
存储多个副本(副本数量也可以通过参数设置 dfs.replication,默认是 3)。

6. 副本机制

为了容错,文件的所有 block 都会有副本。每个文件的 block 大小和副本系数都是可配置的。应用程序可以指定某个文件的副本数目。副本系数可以在文件创建的时候指定,也可以在之后改变。

7. 一次写入,多次读出

HDFS 是设计成适应一次写入,多次读出的场景,且不支持文件的修改。
正因为如此,HDFS 适合用来做大数据分析的底层存储服务,并不适合用来做网盘等应用,因为,修改不方便,延迟大,网络开销大,成本太高

在这里插入图片描述


http://chatgpt.dhexx.cn/article/ZWKQXuef.shtml

相关文章

HDFS原理解析

HDFS原理解析 一、HDFS简介 HDFS为了做到可靠性(reliability)创建了多分数据块(data blocks)的复制(replicas),并将它们放置在服务器群的计算节点中(computer nodes)&…

HDFS原理与应用

1 HDFS基本介绍 一些基本概念: 在Hadoop中,HDFS是存储层,YARN是调度层,MapReduce是应用层 HDFS是Hadoop分布式文件系统(Hadoop Distributed File System) 分布式文件系统有大容量、高可靠和低成本的特点…

大数据_HDFS原理

目录 一、什么是HDFS 二、HDFS架构角色 三、HDFS工作流程 四、HDFS的优缺点 一、什么是HDFS 1、定义 HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,它和现有的分布式文件系…

Hadoop HDFS原理

一、HDFS介绍 HDFS 包括 块、NameNode、DataNode,适用于一次写多次读,不支持并发写。具有通透性、容错性。 HDFS中文件被分成块进行存储,其块默认大小为64M,块是文件存储处理的逻辑单元。用户通过网络访问文件。 NameNode 为管理节…

HDFS原理(超详解)

简介 HDFS(Hadoop Distributed File System )Hadoop 分布式文件系统。是根据 google 发 表的论文翻版的。论文为 GFS(Google File System)Google 文件系统。 HDFS 有很多特点: ① 保存多个副本,且提供容…

hdfs原理详解

hdfs概述 namenode 管理了整个文件系统的元数据 (metadata) 管理众多datanode 对外提供服务的唯一入口 rpc端口:9000 使用文件系统的端口 hdfs://node-1:9000 http端口:50070 hdfs webui页面的端口 查看端口 http://node-1:50070d…

深入分析HDFS原理及读写流程

本文目录 一、架构体系1.1、什么是HDFS?1.2、组成HDFS的各模块作用1.2.1、Client1.2.2、NameNode1.2.3、DataNode1.2.4、SecondaryNameNode 二、数据读写2.1、读数据2.2、写数据 三、优缺点 一、架构体系 1.1、什么是HDFS? HDFS即Hadoop Distributed F…

HDFS原理与实操

文章目录 1 概述1.1 HDFS的优缺点1.2 HDFS组成架构 2 HDFS 读写流程2.1 写数据流程2.2 读数据流程 3 NameNode和SecondaryNameNode原理4 DataNode原理5 HDFS生产调优5.1 HDFS核心参数配置5.2 HDFS集群压测5.3 HDFS白名单与黑名单5.4 HDFS集群扩容及缩容5.5 HDFS存储优化5.6 HDF…

HDFS 原理 详解

前言 一、HDFS的设计原理 二、什么是零拷贝 三、什么是DMA 四、HDFS 架构剖析 HDFS 架构整体概述 HDFS 架构图 五、HDFS 集群角色介绍 1.主角色: namenode 2 从角色:datanode 3 主角色辅助角色: secondarynamenode 六、HDFS重要特性--主从架构 七、HDFS重要特性--分块…

HDFS工作原理

一、HDFS 组成架构 1)NameNode(nn):就是Master,它是一个主管、管理者。 (1)管理HDFS的名称空间 (2)配置副本策略 (3)管理数据块(Bl…

hdfs原理

简介 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统。是根据google发表的论文翻版的。论文为GFS(Google File System)Google 文件系统。 HDFS有很多特点: ① 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复。默认存3份。 (用空间换安全) ② 运行…

Hadoop原理之——HDFS原理

Hadoop 3个核心组件: 分布式文件系统:Hdfs——实现将文件分布式存储在很多的服务器上(hdfs是一个基于Linux本地文件系统上的文件系统) 分布式运算编程框架:Mapreduce——实现在很多机器上分布式并行运算 分布式资源调度…

HDFS架构及原理

HDFS架构及原理 1、HDFS架构及存储 HDFS 采用Master/Slave的架构来存储数据,这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode。一个HDFS集群是由一个NameNode和一定数目的DataNode组成的。NameNode是一个中心服…

HDFS基本原理及数据存取实战

--------------------------------------------------------------------------------------------------------------- [版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/51622547 作者&am…

QT的开发学习路线

基础组件;页面布局;通信机制;

QT的学习

QT是利用C进行编写,而QT则是C的实际运用的一种方式。 QT也称GUI------grphical user interface(图形用户接口) 通过图形的方式操纵计算机用户界面 QT的特点以及应用: 1、跨平台(可以在多个平台上进操作&#xff08…

Qt 学习之路 2 --- 读书笔记

一、文章来由 来自豆子老师非常好的一本Qt教程,但是只有网络版,所以用这个做笔记了,不动笔墨不读书嘛~~ 二、读书笔记 1、Qt 学习之路 2(2):Qt 简介 1.1 关于 Qt 的一站式解决 Qt 是一个著名的 C 应用…

Qt学习之路之 QTextEdit 重温

其实,QTextEdit 也有对文本的编辑函数, 剪切,复制,撤销..... 看看下面的这个简单的例子: 控件一目了然。按钮 QTextedit 对象 , 垂直布局。 -------------------------------------------------- 环境&…

QT的进一步学习

QT的进一步学习 来源: ChinaUnix博客  日期: 2006.10.02 17:41 (共有条评论) 我要评论 本文收录了互联…

Qt学习之路之QMovie动画

QMovie类是一个很方便的类,用于播放动画。在刷新页面的时候,可以尝试用QMovie 来实现等待界面。 QMovie类用于显示简单的动画,没有声音。 首先,通过将一个文件的名称或者一个指针传递给QMovie的构造函数构建一个QMovie对象。传递…