HDFS概述

 

目录

分布式文件系统(Hadoop Distributed File System)

HDFS 的基本思想

HDFS 的设计理念

HDFS 的局限


分布式文件系统(Hadoop Distributed File System)

   随着数据量的不断增大,传统的数据处理技术已经无法满足大数据处理。所以出现了分布式文件存储系统。需要将数据分区并储存若干个计算上中。这就出现了数据不方便管理的问题!分布式文件管理系统就是用来管理多台机器上的文件的。

分布式文件系统是一种允许文件通过网络在多台主机上进行分享的文件系统,可让多台机器上的多用户分享文件和存储空间

 

HDFS 的基本思想

化大为小,分而治之。

具体就是将一个超大的数据,分成N个小文件。多个机器进行存储。

HDFS 数据单位 数据块 DataBlock --> 一秒定律来决定大小 --> 150M/S --> 128M

 HDFS 是 Hadoop 的一个分布式文件系统,是 Hadoop 应用程序使用的主要分布式存储。

HDFS 被设计成适合运行在通用硬件上的分布式文件系统。

但由于分布式存储的性质,HDFS 集群拥有一个 NameNode 和一些 DataNode。

                NameNode 管理文件系统的元数据,

                DataNode 存储实际的数据。

        客户端通过同 NameNode 和 DataNode 的交互来访问文件系统。

        客户端通过联系 NameNode 来获取文件的元数据,而真正的文件 I/O 操作是直接和 DataNode 交互进行的。(NIO+SCOKET)

        HDFS 主要针对“一次写入,多次读取”的应用场景,不适合实时交互性很强的应用场景,也不适合存储大量小文件。

HDFS 是个抽象层,底层依赖很多独立的服务器,对外提供统一的文件管理功能。

HDFS概述

例如,用户访问 HDFS 中的 /a/b/c.mpg 这个文件时,HDFS 负责从底层的相应服务器中读取该文件,然后返回给用户,这样用户就只需和 HDFS 打交道,而不用关心这个文件是如何存储的。

       为了解决存储结点负载不均衡的问题,HDFS 首先把一个文件分割成多个块,然后再把这些文件块存储在不同服务器上。

        这种方式的优势就是不怕文件太大,并且读文件的压力不会全部集中在一台服务器上,从而可以避免某个热点文件会带来的单机负载过高的问题。但是同时也面临这一个问题,如果一台机器的出现故障,那么会出现文件读不全的问题,一般会在其他机器有备份。一般备份策略是在本机架上备份两份 其他机架一份。默认是备份三份。

  假如要在由服务器 A、B、C 和 D 的存储结点组成的 HDFS 上存储文件 ,则 HDFS 会把文件分成 4 块,分别为块   1、块 2、块 3 和块 4。

        为了保证文件的可靠性,HDFS 会把数据块按以下方式存储到 4 台服务器上,如图 3 所示。

HDFS概述

  采用分块多副本存储方式后,HDFS 文件的可靠性就大大增强了,即使某个服务器出现故障,也仍然可以完整读取文件,该方式同时还带来一个很大的好处,就是增加了文件的并发访问能力。

     例如,多个用户读取这个文件时,都要读取块 1,HDFS 可以根据服务器的繁忙程度,选择从哪台服务器读取块 1。

  为了管理文件,HDFS 需要记录维护一些元数据,也就是关于文件数据信息的数据,如 HDFS 中存了哪些文件,文件被分成了哪些块,每个块被放在哪台服务器上等。
        HDFS 把这些元数据抽象为一个目录树,来记录这些复杂的对应关系。这些元数据由一个单独的模块进行管理,这个模块叫作名称结点(NameNode)。存放文件块的真实服务器叫作数据结点(DataNode)。

HDFS 的设计理念

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

        1)可构建在廉价机器上HDFS 的设计理念之一就是让它能运行在普通的硬件之上,即便硬件出现故障,也可以通过容错策略来保证数据的高可用性。

        2)高容错性由于 HDFS 需要建立在普通计算机上,所以结点故障是正常的事情。HDFS 保存多个副本将数据自动,副本丢失后,自动恢复,从而实现数据的高容错性。

        3)适合批处理HDFS 适合一次写入、多次查询(读取)的情况。

        在数据集生成后,需要长时间在此数据集上进行各种分析。每次分析都将涉及该数据集的大部分数据甚至全部数据,因此读取整个数据集的时间延迟比读取第一条记录的时间延迟更重要。

        4) 适合存储大文件这里说的大文件包含两种意思:一是文件大小超过 100MB 及达到 GB 甚至 TB、PB 级的文件;二是百万规模以上的文件数量。

HDFS 的局限

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

        1) 实时性差要求低时间延迟的应用不适合在 HDFS 上运行,HDFS 是为高数据吞吐量应用而优化的,这可能会以高时间延迟为代价。

        2) 小文件问题由于 NameNode 将文件系统的元数据存储在内存中,因此该文件系统所能存储的文件总量受限于 NameNode 的内存总容量。

        根据经验,每个文件、目录和数据块的存储信息大约占 150 字节。过多的小文件存储会大量消耗 NameNode 的存储量。

        3)文件修改问题HDFS 中的文件只有一个写入者,而且写操作总是将数据添加在文件的末尾。HDFS 不支持具有多个写入者的操作,也不支持在文件的任意位置进行修改。

总结:延迟高、不适合小文件存储、不方便修改,一次只能一个写入者