大数据_HDFS原理

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

目录

一、什么是HDFS

二、HDFS架构角色

三、HDFS工作流程

四、HDFS的优缺点


一、什么是HDFS

1、定义

HDFS即Hadoop分布式文件系统(Hadoop Distributed Filesystem),以流式数据访问模式来存储超大文件,它和现有的分布式文件系统有很多共同点。但同时,它和其他的分布式文件系统的区别也是很明显的。HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。HDFS在最开始是作为Apache Nutch搜索引擎项目的基础架构而开发的。

2、特点

① 保存多个副本,且提供容错机制,副本丢失或宕机自动恢复。默认存 3 份。

② 运行在廉价的机器上。

③ 适合大数据的处理。多大?多小?HDFS 默认会将文件分割成 block,64M 为 1 个 block。然后将block按键值对存储在HDFS上,并将键值对的映射存到内存中(namenode)。 如果小文件太多,那内存的负担会很重。

二、HDFS架构角色

个HDFS集群包含一个单独的NameNode和多个DataNode。HDFS采用一种称为rack-aware的策略。Rack1、Rack2....

NameNode是 Master 节点,是管理者。管理数据块映射;处理客户端的读写请求;配置副本策略;管理 HDFS 的名称空间;NameNode 保存的 metadata 包括文件 ownership 和 permission文件包含的 block 信息。Block 保存在那些 DataNode 节点上(数据并非保存在 NameNode 磁 盘上的,它是在 DataNode 启动时上报给 NameNode 的,NameNode 接收到之后 将这些信息保存在内存中)NameNode 的 metadata 信息在 NameNode 启动后加载到内存中,Metadata 存储到磁盘上的文件名称为 fsimage,Block 的位置信息不会保存在 fsimage 中,Edits 文件记录了客户端操作 fsimage 的日志,对文件的增删改等。用户对 fsimage 的操作不会直接更新到 fsimage 中去,而是记录在 edits 中。

SecondaryNameNode分担 namenode 的工作量;是 NameNode 的冷备份;合并 fsimage 和 fsedits 然后再发给 namenode。

     合并fsimage和fsedits文件,然后发送并替换NameNode的fsimage文件, 同时自己留下一个副本。这个副本可供 NameNode 毁灭之后的部分文件恢复。

  1. 可以通过配置 fs.checkpoint.period 修改合并间隔时间,默认 1 小时
  1. 也可以通过配置 edits 日志文件的大小,fs.checkpoint.size 规定 edits 文 件的最大值,来让 SecondaryNameNode 来知道什么时候该进行合并操作了。 默认是 64M

DataNodeSlave 节点,奴隶,干活的。负责存储 client 发来的数据块 block;执行数据 块的读写操作。

热备份:b 是 a 的热备份,如果 a 坏掉。那么 b 马上运行代替 a 的工作。

冷备份:b 是 a 的冷备份,如果 a 坏掉。那么 b 不能马上代替 a 工作。但是 b 上存储 a 的 一些信息,减少 a 坏掉之后的损失。

fsimage:元数据镜像文件(文件系统的目录树。)

edits:元数据的操作日志(针对文件系统做的修改操作记录)

namenode 内存中存储的是=fsimage+edits。

SecondaryNameNode 负责定时默认 1 小时,从 namenode 上,获取 fsimage 和 edits 来 进行合并,然后再发送给 namenode。减少 namenode 的工作量。

三、HDFS工作流程

备份数据的存放:备份数据的存放是HDFS可靠性和性能的关键。HDFS采用一种称为rack-aware的策略来决定备份数据的存放。通过一个称为Rack Awareness的过程,NameNode决定每个DataNode所属rack id。缺省情况下,一个block块会有三个备份,一个在NameNode指定的DataNode上,一个在指定DataNode非同一rack的DataNode上,一个在指定DataNode同一rack的DataNode上。这种策略综合考虑了同一rack失效、以及不同rack之间数据复制性能问题。

示例写入流程:

  1. 将 64M 的 block1 按 64k 的 package 划分;
  2. 然后将第一个 package 发送给 host2;
  3. host2 接收完后,将第一个 package 发送给 host1,同时 client 想 host2 发送第 二个 package;
  4. host1 接收完第一个 package 后,发送给 host3,同时接收 host2 发来的第二个 package。
  5. 以此类推,如图红线实线所示,直到将 block1 发送完毕。
  6. host2,host1,host3向NameNode,host2向Client发送通知,说“消息发送完了”。 如图粉红颜色实线所示。
  7. client 收到 host2 发来的消息后,向 namenode 发送消息,说我写完了。这样就 真完成了。如图黄色粗实线
  8. 发送完 block1 后,再向 host7,host8,host4 发送 block2,如图蓝色实线所示。
  9. 发送完 block2 后,host7,host8,host4 向 NameNode,host7 向 Client 发送通 知,如图浅绿色实线所示。
  10. client 向 NameNode 发送消息,说我写完了,如图黄色粗实线。。。这样就完 毕了。

分析,通过写过程,我们可以了解到:

①写 1T 文件,我们需要 3T 的存储,3T 的网络流量带宽。

②在执行读或写的过程中,NameNode 和 DataNode 通过 HeartBeat 进行保存通信, 确定 DataNode 活着。如果发现 DataNode 死掉了,就将死掉的 DataNode 上的数据,放 到其他节点去。读取时,要读其他节点去。

③挂掉一个节点,没关系,还有其他节点可以备份;甚至,挂掉某一个机架,也没关系; 其他机架上,也有备份。

副本的选择:为了降低整体的带宽消耗和读取延时,HDFS会尽量读取最近的副本。如果在同一个rack上有一个副本,那么就读该副本。如果一个HDFS集群跨越多个数据中心,那么将首先尝试读本地数据中心的副本。安全模式:系统启动后先进入安全模式,此时系统中的内容不允许修改和删除,直到安全模式结束。安全模式主要是为了启动检查各个DataNode上数据块的安全性

示例读流程:

读操作就简单一些了,如图所示,client 要从 datanode 上,读取 FileA。而 FileA 由 block1 和 block2 组成。那么,读操作流程为:

a. client 向 namenode 发送读请求。

b. namenode 查看 Metadata 信息,返回 fileA 的 block 的位置。

block1:host2,host1,host3

block2:host7,host8,host4

c. block 的位置是有先后顺序的,先读 block1,再读 block2。而且 block1 去 host2 上读取; 然后 block2,去 host7 上读取;这个例子中,client 位于机架外,那么如果 client 位于机架内某个 DataNode 上,例如,client 是 host6。那么读取的时候,遵循的规律是:优先读取本机架上的数据。

四、HDFS的优缺点

1HDFS 优点

高容错性

数据自动保存多个副本

副本丢失后,自动回复

适合批处理

移动的计算和操作

数据位置暴漏给计算框架

适合大数据处理

GB、TB、PB 甚至更大

百万规模以上的文件数量

10K+节点

可构建在廉价的机器上

通过副本提高可靠性

提供了容错和恢复机制

低延迟数据访问

毫秒级读取

低延迟与高吞吐量

2HDFS 缺点

小文件存取

占用 NameNode 内存空间

寻址时间超过读取时间

并发写入、文件随即修改

一个文件同时只能由一个写入者

仅支持 append


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

相关文章

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对象。传递…

QT学习之路-记事本

1、在创建记事本之前先明白有哪些功能: 先创建一个菜单栏,菜单栏是用来装各种功能的一个地方如上图所示,文件、编辑所在的地方为菜单栏, //创建菜单栏QMenuBar *menubarmenuBar();菜单栏创建好后再创建菜单,菜单在菜单…

QT学习

文章目录 前言一:Qt的三个基类QObject、QApplication和QWidget一:QObject类二:Qapplication类三:QWidget 二:Qt中QMainWindow、QWidget、QDialog的区别基础知识1:容器类常用的QListQStack和QQueueMap和Mult…

【QT学习之路】QThread的简单使用

QThread的使用说明:QThread线程类是QT已经封装好的, 如果要使用线程, 就派生出子类并且实现线程接口函数run(run就是线程任务函数) 下面就用QThread实现当前系统时间的获取并且在主界面(UI线程)上显示,实现…