HDFS 分布式文件系统

# HDFS 分布式文件系统

一:HDFS体系结构详解:
1:什么是文件系统:
文件系统是操作系统提供的,用于解决“如何在磁盘上组织文件”的一系列方法和数据结构。用户不用关心文件具体在磁盘上是如何存放的,只需要能够熟练掌握类似于指定文件的存储路径,往哪个路径下的文件写数据,从哪个路径下读取文件数据等基本的文件系统操作就可以了。
2:什么是分布式文件系统:
当文件比较大时,即文件中的数据存储所需空间大于磁盘上的空间时,该如何处理?
一是增加本机的磁盘空间,但是加到一定的程度就有限制了。
二是增加机器数量,用共享目录的方式提供远程网络化的存储,这种方式就可以理解为分布式文件系统的雏形,就是把同一个文件切分之后,放入不同的机器中,空间不足了还可以继续增加机器,这就能够突破了本机存储空间的限制,但这种方式还是有以下一些问题:
1:单机负载可能极高
例如某个文件用来存储热门数据,很多用户需要经常访问这个文件,那么就使得此文件所在机器的访问压力极高,这就涉及数据文件该如何切分和存储的问题。
2:数据不安全
如果某个文件所在机器出现故障,那么这个文件就不能被访问,所以可靠性很差,这就涉及到了如何保证数据安全性或可靠性的问题,
3:文件整理困难
例如用户想把一些文件的存储位置进行调整,那么就需要查看目标机器的存储空间是否够用,并且需要用户自己维护文件的存储位置,如果机器特别多,还需要考虑多台机器组成的分布式环境的底层通信问题,那么操作就极为复杂,这就涉及到如何保证数据文件的高效管理和高可用性的问题。
为了解决这个问题,分布式文件系统应用而生,分布式文件系统是指利用多台计算机协同作用解决单台计算机所不能解决的存储问题的文件系统。

二:HDFS分布式文件系统的概述:

1:HDFS 的概念:
HDFS (Hadoop Distributed File System)是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,是基于流式的数据访问和处理大文件的需求而开发的分布式文件系统。整个系统可以运行在由廉价的商用服务器组成的机架上,他所具有的高容错性,高可靠性高可扩展性,高获得性,高吞吐率等特征,为数据提供了不怕故障的存储,给超大的事数据集的应用处理带来了很多便利。
2:HDFS 的设计背景:
随着数据量的不断增大,导致数据在一个操作系统管辖的范围内存储不下,那么为了存储这些大规模数据,就需要将数据分配到更多操作系统管理的磁盘中存储,但是这样处理会导致数据的管理和维护很不方便,所以就迫切需要一种系统来管理和维护多台机器上的数据文件,实际上这就是分布式文件管理系统。而HDFS只是分布式文件管理系统中的一种。
3:HDFS的设计理念:
(1):支持超大文件存储。
(2):流式数据访问。
(3):简单的一致性原则。
(4):硬件故障的检测和快速应对。
4;HDFS系统架构:
一个完整的HDFS 文件系统通常会运行在有网络连接在一起的一组计算机(或者叫节点)组成的集群之上,在这些节点上运行着不同类型的守护进程,比如NameNode,DataNode,SecondaryNameNode,多个节点生不同类型的守护进程相互配合,互相协作,共同为用户提供高效的分布式存储服务,HDFS的体系架构如下图所示:
在这里插入图片描述
整个HDFS体系架构是一个主从的架构,一个典型的HDFS集群中,通常会有一个NameNode ,一个SecondaryNameNode ,和至少一个DataNode ,而且HDFS客户端的数量也没有限制。
HDFS 主要是为了解决大规模数据的分布式存储问题,那么这些数据到底是存储在哪里呢?实际上是把数据文件切分成数据块然后均匀地存放在运行DataNode守护进程的节点中,那么如何管理这些DataNode节点统一对外提供服务呢?实际上是有NameNode来集中管理的,SecondaryNameNode又起到怎么做用呢,他们又是如何协同服务的呢?接下来,我们深入了解一下HDFS架构的核心理念。
(1):NamaNode :
NameNode 也被称作为名字节点或者管理节点或者元数据节点,是HDFS主从节点架构中的主节点,相当于HDFS的大脑,他管理文件系统的命名空间,维护着整个文件系统的目录树以及目录书中的所有子目录和文件。
这些信息还以两个文件的形式持久化保存在本地的磁盘上,一个是命名空间镜像FSImage(File System Image),也称为文件系统镜像,主要用来存储HDFS的元数据信息,是HDFS元数据的完整快照,每次NameNode启动的时候,默认都会加载最新的命名空间镜像到内存中。
还有一个文件是命名空间镜像的编辑日志(Edit Log),该文件保存用户对命名空间镜像的修改信息。
(2):SecondaryNameNode:
SecondaryNameNode 也被称之为从数据节点,是HSFS主从架构中的备用节点,主要用于定期合并命名空间镜像(FSImage)和命名空间镜像的编辑日志(Edit Log),SecondaryNameNode是一个辅助NameNode的守护进程.在生产环境。SecondaryNameNode一般会单独的部署在一台服务器上,因为SecondaryNamaNode节点在进行两个文件的合并的时候需要消耗大量的资源。
为什么SecondaryNameNode要辅助NameNode定期合并FSImage和Edit Log文件呢?
FSImage文件实际上是HDFS文件系统的元数据的一个永久性检查点(CheckPoint)。但也并不是每一个写操作都会更新到这个文件中,因为FSImage是一个大型文件,如果频繁地执行写操作,会导致系统运行及其缓慢,那么该如何解决呢?解决方案就是NameNode将命名空间的改动信息写入命名空间的编辑日志(Edit Log),但是随着时间的推移,Edit Log 文件会越来越大,一旦发生故障,那么需要花费很长的时间进行回滚操作,所以可以像传统的关系型数据库一样,定期的合并FSImage和Edit Log,但是如果由NameNode来做合并操作,由于NameNode在为集群提供服务的同时,可能无法提供足够的资源,所以为了彻底解决这一问题,SecondaryNameNode就运用而生了。
在这里插入图片描述

  1. :SecondaryNameNode(即从元数据节点)引导NameNode(即元数据节点),滚动更新编辑日志,并开始将新的编辑的日志写进edits.new。
  2. :SecondaryNameNode将NameNode的fsimage文件和编辑日志edits文件复制到本地的检查点目录。
  3. :SecondaryNameNode将fsimage文件导入内存,回放编辑日志edits文件,将其合并到fsimage.ckpt文件,并将新的fsimage.ckpt文件压缩后写入磁盘。
  4. :SecondaryNameNode将新的fsimage.ckpt文件传回NameNode。
  5. :NameNode在接收新的fsimage.ckpt文件后,将fsimage.ckpt替换为fsimage,然后直接加载和启用该文件
  6. :NameNode将edits.new更名为edits。默认情况下,该过程一小时发生一次,或者当编辑日志达到默认值(如:64MB)也会触发,具体触发该操作的值是可以通过配置文件配置的。
    (3):DataNode:
    DataNode也被称之为数据节点,它是HDFS主从架构中的从节点,它在NameNode的指导下完成数据的I/O操作。前面说过,存放在HDFS上的文件是有数据块组成的,所以这些数据块都存在DataNode节点上,实际上,在DataNode节点上,数据块就是一个普通的文件,可以在DataNode存储块的对应目录下看到,块的名称叫做blk_blkID。
    DataNode:会不断的向NameNode汇报块报告(即各个DataNode节点,会把本节点上存储的数据块的情况一“块报告”的形式汇报给NameNode)并执行来自NameNode 的zhi
    指令。初始化时,集群中的每个DataNode会将本节点当前存储的块信息以块报告的形式告诉NameNode。在集群正常工作时,DataNode仍然会定期地把最新的快信息汇报给NameNode,同时接收NameNode 的指令,比如,创建,移动或者删除本地磁盘上的数据块等操作。
    DataNode节点是以数据块的形式在本地Linux文件系统上保存HDFS文件的内容,并对外提供文件数据访问功能。
    DataNode节点的一个基本功能就是管理这些保存在Linux文件系统中的数据。
    DataNode节点是将数据块以Linux文件的形式保存在本节点的存储系统上。
    (4):HDFS客户端
    HDFS客户端指用户和HDFS文件系统交互的手段,HDFS提供了非常多的客户端,包括命令行接口,javaAPI,Thrift接口,web界面。
    5:HDFS读数据流程:
    在这里插入图片描述
    6:HDFS写数据流程
    在这里插入图片描述
    数据的冗余存储:
    作为一个分布式文件系统,为了保证系统的容错性和可用性,HDFS采用了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上。这种多副本方式具有以下几个优点:
    (1)加快数据传输速度
    (2)容易检查数据错误
    (3)保证数据可靠性
    在这里插入图片描述
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我菜的要死

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值