HDFS 原理 详解

article/2025/10/25 1:11:28

前言

一、HDFS的设计原理

二、什么是零拷贝

三、什么是DMA

四、HDFS 架构剖析

         HDFS 架构整体概述

          HDFS 架构图

五、HDFS 集群角色介绍

1.主角色: namenode

2 从角色:datanode

3 主角色辅助角色: secondarynamenode 

六、HDFS重要特性--主从架构

 七、HDFS重要特性--分块存储机制

八、HDFS重要特性--副本机制

九、HDFS重要特性--namespace

十、HDFS重要特性--元数据管理

十一 、HDFS重要特性--数据块存储

十二 、 HDFS读流程和写流程

 一  HDFS 读原理

 二  HDFS写原理

十三 、 HDFS小文件处理

 十四  、安全模式 

前言

  这是HDFS是Hadoop 核心重要的组件之一 , 解决大数据计算中的海量存储数据  

  下面是HDFS原理 架构 以及模块组成  


提示:以下是本篇文章正文内容,下面案例可供参考 如有问题欢迎大家纠正,评论或者私信

一、HDFS的设计原理

   1.大数据文件 , 文件分块存储

   2.流式数据访问,一次写入多次读取

   3.不支持动态改变文件内容 , 而是要文件一次写入就不做变换,要是做变化也只能在

     文件末添加内容 

   4.廉价硬件,硬件故障

   5.利用DMA 引擎的零拷贝技术进行文件的传输和同步

二、什么是零拷贝

      传统情况 

        

零拷贝技术:

          

三、什么是DMA

  DMA 将一个内存区

从一个设备复制到另一个, 当中央处理器初始化这个传输动作,传输动作本身是由DMA控制器来实行和完成

四、HDFS 架构剖析

         HDFS 架构整体概述

1 HDFS是Hadoop Distribute File System 的简称,意为:Hadoop分布式文件系统。 Hdfs是hadoop分发文件系统的简称,意为:hadoop分布式文件系统。

2 HDPS是hadop核心组件之一,作为大数据生态圈最底层的分布式存储服务而存在
3 HDPS解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件存储系统并且具有高度的容销 Hdps解决的问题就是大数据如何存储,它是横跨在多台计算机上的文件存储系统并且具有高度的容销

              

     HDFS 架构图

1·HDFS集群遵循主从架构(master/slave )。通常包括一个主节点和多个从节点。


2·在内部,文件分块存储,每个块根据复制因子存储在不同的从节点计算机上形成备份。
3·主节点存储和管理文件系统namespace,即有关文件块的信息,例如块位置,权限等﹔从节点存储文件的数据块。

4·主从各司其职,互相配合,共同对外提供分布式文件存储服务。当然内部细节对于用户来说是透明的。

5 SecondaryNameNode是主角色的辅助角色,帮助主角色进行元数据的合并。

五、HDFS 集群角色介绍

1.主角色: namenode

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

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

2 从角色:datanode


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

3 主角色辅助角色: secondarynamenode 


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


六、HDFS重要特性--主从架构


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


 七、HDFS重要特性--分块存储机制

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

  • HDFS中文件在逻辑上是连续的,提供一个文件目录树
  • block块大小计算
  1. 理想寻址时间为10ms
  2. 理想读取文件时间为寻址时间的10%
  3. 市面上磁盘的存储速率为100M/s
  4. 因此block块大小:10ms/10% *100M/s = 100M -> 128M

八、HDFS重要特性--副本机制

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

九、HDFS重要特性--namespace

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

十、HDFS重要特性--元数据管理

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

●文件自身属性信息
文件名称、权限,修改时间,文件大小,复制因子,数据块大小。

●文件块位置映射信息
记录文件块和DataNode之间的映射信息,即哪个块位于哪个节点上。

十一 、HDFS重要特性--数据块存储


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

十二 、 HDFS读流程和写流程

 一  HDFS 读原理

1、HDFS客户端提交读操作到NameNode上,NameNode收到客户端提交的请求后,会先判断此客户端在此目录下是否有读权限,如果有,则给客户端返回存放数据块的节点信息,即告诉客户端可以到相关的DataNode节点下去读取数据块;

2、客户端拿到块位置信息后,会去和相关的DataNode直接构建读取通道,读取数据块,当所有数据块都读取完成后关闭通道,并给NameNode返回状态信息,告诉NameNode已经读取完毕。

 二  HDFS写原理

1、HDFS客户端提交写操作到NameNode上,NameNode收到客户端提交的请求后,会先判断此客户端在此目录下是否有写权限,如果有,然后进行查看,看哪几个DataNode适合存放,再给客户端返回存放数据块的节点信息,即告诉客户端可以把文件存放到相关的DataNode节点下;

2、客户端拿到数据存放节点位置信息后,会和对应的DataNode节点进行直接交互,进行数据写入,由于数据块具有副本replication,在数据写入时采用的方式是先写第一个副本,写完后再从第一个副本的节点将数据拷贝到其它节点,依次类推,直到所有副本都写完了,才算数据成功写入到HDFS上,副本写入采用的是串行,每个副本写的过程中都会逐级向上反馈写进度,以保证实时知道副本的写入情况;

3、随着所有副本写完后,客户端会收到数据节点反馈回来的一个成功状态,成功结束后,关闭与数据节点交互的通道,并反馈状态给NameNode,告诉NameNode文件已成功写入到对应的DataNode。

十三 、 HDFS小文件处理

 

(1)会有什么影响

(1)存储层面:

1个文件块,占用namenode多大内存150字节

1亿个小文件*150字节

1个文件块 * 150字节

128G能存储多少文件块?   128 * 1024*1024*1024byte/150字节 = 9亿文件块

(2)计算层面:

每个小文件都会起到一个MapTask,占用了大量计算资源

2)怎么解决

(1)采用har归档方式,将小文件归档。将多个小文件打包成一个后缀为.har文件,这样减少namenode内存使用的同时,仍然允许对文件进行透明的访问。

(2)采用CombineTextInputFormat可以将多个小文件从逻辑上规划到一个切片中,这样,多个小文件就可以交给一个 maptask。

(3)有小文件场景开启JVM重用;如果没有小文件,不要开启JVM重用,因为会一直占用使用到的task卡槽,直到任务完成才释放

JVM重用可以使得JVM实例在同一个job中重新使用N次,N的值可以在Hadoop的mapred-site.xml文件中进行配置。通常在10-20之间

<property><name>mapreduce.job.jvm.numtasks</name><value>10</value><description>How many tasks to run per jvm,if set to -1 ,there is  no limit</description>
</property>   

 十四  、安全模式 

1 安全模式是HDFS所处的一种特殊状态,在这种状态下,文件系统只接受读数据请求,而不接受创建、删除、修改等变更请求。同时会对数据块进行大量校验,导致资源的分配和申请耗时远超预期。

2  在NameNode主节点启动时,HDFS首先进入安全模式,DataNode在启动的时候会向namenode汇报可用的block等状态,当整个系统达到安全标准时,HDFS自动离开安全模式。如果HDFS处于安全模式下,则文件block不能进行任何的副本复制操作,hdfs集群刚启动的时候,默认30S钟的时间是出于安全期的,只有过了30S之后,集群脱离了安全期,然后才可以对集群进行操作

总结

提示:这里对文章进行总结:

例如:以上就是今天要讲的内容,本文仅仅简单介绍了HDFS的原理,而HDFS为我们提供了大数据的海量存储 方便我们处理海量数据


http://chatgpt.dhexx.cn/article/7mDjIiTv.shtml

相关文章

HDFS工作原理

一、HDFS 组成架构 1&#xff09;NameNode&#xff08;nn&#xff09;&#xff1a;就是Master&#xff0c;它是一个主管、管理者。 &#xff08;1&#xff09;管理HDFS的名称空间 &#xff08;2&#xff09;配置副本策略 &#xff08;3&#xff09;管理数据块&#xff08;Bl…

hdfs原理

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

Hadoop原理之——HDFS原理

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

HDFS架构及原理

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

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

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

QT的开发学习路线

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

QT的学习

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

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

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

Qt学习之路之 QTextEdit 重温

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

QT的进一步学习

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

Qt学习之路之QMovie动画

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

QT学习之路-记事本

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

QT学习

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

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

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

【QT学习之路,QT安装】

1&#xff0c;安装QT 系统环境&#xff1a;ubuntu 22.04 sudo apt-get install build-essential sudo apt-get install qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools sudo apt-get install qtcreator sudo apt-get install qt5* 2&#xff0c;安装成功后会有4个程序 3…

qt学习之路(三)之使用QT语言家

一、简介 源代码中经常会出现一些字符串&#xff0c;比如定义要显示在控件上的文本&#xff0c;在不同的语言环境下&#xff0c;可能会需要显示不同语言对应的文本。针对多语言切换的需求&#xff0c;Qt提供的解决方案是&#xff0c;在所有需要翻译的字符串处都使用QObject::tr…

QT学习(2)

事件 事件与信号的关系&#xff1f;&#xff1f; 点击按钮&#xff0c;也会进入到事件循环&#xff0c;处理槽函数 事件对操作系统而言 事件大部分都是由硬件触发&#xff1b;事件产生&#xff0c;操作系统是知道的 鼠标移动&#xff1a; 事件在qt中是由多态去实现的&#xf…

Qt 进阶之路

作者&#xff1a;billy 版权声明&#xff1a;著作权归作者所有&#xff0c;商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处 前言 古语有云&#xff1a;“工欲善其事&#xff0c;必先利其器”。一件好的开发工具可以帮助开发者快速、准确的完成任务。博主主要从…

Qt 入门学习路线

参考书目 《C GUI Qt4编程》 一、Qt框架概述 1. 什么是Qt? Qt是一个用C编写的、成熟的、跨平台的GUI工具包&#xff0c;它是挪威Trolltech公司的产品&#xff0c;该公司为商业市场开发、销售和支持Qt及其相关软件。 Qt作为一个出色的软件框架&#xff0c;除了为应用程序提供…

《Qt基础教程之Qt学习之路》

在Qt开源社区中&#xff0c;有一个很好的Qt教程&#xff0c;叫做《Qt 学习之路》&#xff0c;下面是它的链接和目录。 链接地址&#xff1a;http://www.qter.org/thread-629-1-1.html 评论区说上面这个地址打不开&#xff0c;有可能没人管理了。可以试一下面的&#xff1a; h…