vlambda博客
学习文章列表

大数据实战之认识HDFS

HDFS是分布式文件系统,是大数据存储的基础,它能管理利用多台机器的存储资源,通过目录树来定位文件,但它的使用场景也有限制:适合一次写入,多次读出的场景,且不支持文件的修改。下面来看看HDFS的优缺点。
优点:
  1. 高容错性

    数据按照配置的备份数自动保存多个副本。通过增加副本的形式,提高容错性。当某一个副本丢失后,集群会将副本再次恢复到指定的副本数。

    2. 适合处理大数据

    (1)数据规模:能够处理数据规模达到GB、TB甚至PB级别的数据。

    (2)文件规模:能够处理百万规模以上的文件数量,数量相当之大。

    3. 能够构建在廉价机器上,通过多副本机制,提高可靠性。


    缺点:

    1. 不适合低延时数据访问,例如毫秒级的存储数据,是做不到的。

    2. 无法高效存储大量小文件。

    (1)每一个小文件都需要由NameNode的内存来存储文件目录和块信息,每条记录大约占150字节,大量的小文件会导致占用NameNode的大量内存,所以这是不可取的,因为NameNode的内存是有限的。

     (2)小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。

    3. 不支持并发写入、文件随机修改

    (1)一个文件只能有一个写,不允许多个线程同时写。

    (2)仅支持数据append(追加),不支持文件的随机修改。


HDFS的组成架构:HDFS由NameNode(NN)、DataNode(DN)、Client和Secondary NameNode组成。

  1. NameNode:是Master,它是一个主管、管理者

    (1)管理HDFS的名称空间。

    (2)配置副本策略。

    (3)管理数据块(Block)映射信息。

    (4)处理客户端读写请求。

    2. DataNode:是Slave,NameNode下达命令后由DataNode执行实际的操作

    (1)存储实际的数据块。

    (2)执行数据块的读/写操作。

    3. Secondary NameNode:并不是NameNode的热备(能够及时替换NN工作的备份),而是当NameNode挂掉时,辅助NameNode恢复的服务。

    (1)辅助NameNode,分担其工作量,比如定期合并Fsimage(快照)和Edits(写操作日志),并推送给NameNode。

    (2)在紧急情况下,可辅助恢复NameNode。