HDFS概述

HDFS简介

HDFS是Hadoop Distributed File System的首字母组合,即Hadoop的分布式文件系统。

在大数据时代,需要处理分析的数据集的大小已经远远超过了单台计算机的存储能力,因此需要将数据集进行分区并存储到若干台独立的计算机中。
但是,分区存储的数据不方便管理和维护,迫切需要一种文件系统来管理多台机器上的文件,这就是分布式文件系统。
分布式文件系统是一种允许文件通过网络在多台主机上进行分享的文件系统,可让多台机器上的多用户分享文件和存储空间。
在这里插入图片描述

• HDFS 主要针对"一次写入,多次读取"的应用场景,不适合实时交互性很强的应用场景,也不适合存储大量小文件.
• HDFS 是 Hadoop 的一个分布式文件系统,是 Hadoop 框架使用的主要分布式存储,被设计成适合运行在通用硬件上的分布式文件系统.
• HDFS 总的设计思想是分而治之,即将大文件和大批量文件分布式存放在大量独立的服务器上,以便采取分而治之的方式对海量数据进行运算分析.
• HDFS 是一个主/从体系结构,从最终用户的角度来看,它就像传统的文件系统一样,可以通过目录路径对文件执行 CRUD[Create、Read、Update、Delete]操作.
• HDFS 体系结构中有两类结点:一类是 NameNode,又叫"名称结点";另一类是 DataNode,又叫"数据结点";这两类结点分别承担 Master 和 Worker 具体任务的执行.
• 由于分布式存储的性质,HDFS集群拥有一个NameNode和一些DataNode;NameNode 管理文件系统的元数据,DataNode 存储实际的数据.
• 客户端通过同 NameNode 和 DataNode 的交互来访问文件系统; 通过联系 NameNode 来获取文件的元数据,而真正的文件 I/O 操作则直接和 DataNode 交互进行.

HDFS基本原理和设计理念

文件系统的问题
文件系统是操作系统提供的磁盘空间管理服务,该服务只需要用户指定文件的存储位置及文件读取路径,而不需要用户了解文件在磁盘上是如何存放的。
但是当文件所需空间大于本机磁盘空间时,应该如何处理呢?
• 加磁盘,但是加到一定程度就有限制了.
• 加机器,即用远程共享目录的方式提供网络化的存储,此方式是分布式文件系统的雏形,它可以把不同文件放入不同的机器中,而且空间不足时可继续加机器,突破了存储空间的限制.

但是这种传统的分布式文件系统存在多个问题:
1)数据可靠性低—如果某个文件所在的机器出现故障,那么这个文件就不能访问了,甚至会造成数据的丢失。
2)各个存储结点的负载不均衡,单机负载可能极高—如果某个文件是热门文件,则会有很多用户经常读取这个文件,这就会造成该文件所在机器的访问压力极高.
3)文件管理困难—如果想把一些文件的存储位置进行调整,就需要查看目标机器的空间是否够用,并且需要管理员维护文件位置,在机器非常多的情况下,这种操作就极为复杂.

HDFS 的基本思想

HDFS 是个抽象层,底层依赖很多独立的服务器,对外提供统一的文件管理功能.
在这里插入图片描述

如果用户访问 HDFS 中的 /a/b/c.mpg 文件时,HDFS 负责从底层的相应服务器中读取该文件,然后返回给用户,这样用户就只需和 HDFS 打交道,而不用关心这个文件是如何存储的.
负载均衡
为了解决存储结点负载不均衡的问题,HDFS首先把一个文件分割成多个块,然后再把这些文件块存储在不同服务器上;HDFS采取"就近原则"进行数据的分配存储.
这种方式的优势就是不怕文件大,且读文件的压力不会全部集中在一台服务器上,从而可以避免某个热点文件会带来的单机负载过高的问题.

例如,用户需要保存文件 /a/b/xxx.avi 时,HDFS 首先会把这个文件进行分割
问题: 怎么切割? 一秒定律(根据我们配置切割成不同大小的,那么怎么切呢,按照硬盘一秒钟读取文件大小的速度切割)
如分为4块,然后分别存放到不同的服务器上。
在这里插入图片描述

数据可靠性
但是如果某台服务器坏了,那么文件就会读不全; 如果磁盘不能恢复,那么存储在上面的数据就会丢失.
为了保证文件的可靠性,HDFS 会把每个文件块进行多个备份,一般情况下是 3 个备份(一个原始的,2个备份的).
要在由服务器 A、B、C、D 的存储结点组成的 HDFS 上存储文件 /a/b/xxx.avi,则 HDFS 会把文件分成 4 块,分别为 块1、块2、块3 、块4.
为了保证文件的可靠性,HDFS 会把数据块按以下方式存储到 4 台服务器上。
在这里插入图片描述

采用分块多副本存储方式后,HDFS 文件的可靠性就大大增强了,即使某个服务器出现故障,也仍然可以完整读取文件;
同时还带来一个很大的好处,就是增加了文件的并发访问能力。
例如,多个用户读取这个文件时,都要读取块1,HDFS 可以根据服务器的繁忙程度,选择从哪台服务器读取块1。
文件管理
为了管理文件,HDFS 需要记录维护一些元数据,也就是关于文件数据信息的数据:如 HDFS 中存了哪些文件,文件被分成了哪些块,每个块被放在哪台服务器上等.
HDFS 把这些元数据抽象为一个目录树,来记录这些复杂的对应关系.
这些元数据由一个单独的模块进行管理,这个模块叫作名称结点(NameNode),存放文件块的真实服务器叫作数据结点(DataNode).

HDFS 的设计理念

简单来讲,HDFS 的设计理念是,可以运行在普通机器上,以流式数据方式存储文件,一次写入、多次查询, 具体有以下几点:

  1. 可构建在廉价机器上HDFS 的设计理念之一就是让它能运行在普通的硬件之上,即便硬件出现故障,也可以通过容错策略来保证数据的高可用性.
  2. 适合存储大文件这里说的大文件包含两种意思:一是文件大小超过 100MB 及达到 GB 甚至 TB、PB 级的文件;二是百万规模以上的文件数量.
  3. 高容错性由于 HDFS 需要建立在普通计算机上,所以结点故障是正常的事情;
    HDFS 将数据自动保存多个副本,副本丢失后,自动恢复,从而实现数据的高容错性.
  4. 适合批处理HDFS 适合一次写入、多次查询(读取)的情况.
    在数据集生成后,需要长时间在此数据集上进行各种分析,每次分析都将涉及该数据集的大部分数据甚至全部数据,
    因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要.

HDFS 的局限

HDFS 的设计理念是为了满足特定的大数据应用场景,所以 HDFS 具有一定的局限性,不能适用于所有的应用场景.
HDFS 的局限主要有以下几点:

  1. 实时性差要求低时间延迟的应用不适合在 HDFS 上运行,HDFS 是为高数据吞吐量应用而优化的,这可能会以高时间延迟为代价.
  2. 小文件问题由于 NameNode 将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总量受限于 NameNode 的内存总容量;
    根据经验,每个文件、目录和数据块的存储信息大约占 150 字节, 过多的小文件存储会大量消耗 NameNode 的存储量.
  3. 文件修改问题HDFS 只支持上传,下载,不支持修改操作(一次写入,多次读取);
    HDFS 中的文件只有一个写入者,而且写操作总是将数据添加在文件的末尾(默认追加);
    HDFS 不支持具有多个写入者的操作(同一时间段只能有一个写入者),也不支持在文件的任意位置进行修改.
  • 14
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

早拾碗吧

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

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

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

打赏作者

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

抵扣说明:

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

余额充值