Hadoop--存储组件HDFS | 青训营笔记

186 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第1天

1. HDFS产生背景及定义

1)HDFS产生背景

随着数据量越来越大,在一个操作系统中存不下所有的数据,那么我们可以把数据分配到更多的操作系统管理的磁盘中,但是这样带来了不方便管理和维护的问题,所以迫切需要一种系统来管理多台机器上的文件,这就促使了分布式文件管理系统的产生。HDFS只是分布式文件管理系统中的一种。

2)HDFS定义

HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由许多服务器联合起来实现其功能,集群中的服务器有各自的角色。

HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不能够改变,只能追加数据。

2. HDFS优缺点

1)优点

  • 高容错性
      存入的数据会自动保存多个副本,通过增加副本的形式来提高容错性。
      某一个副本丢失以后,可以通过其他机架上存储的副本自动恢复数据。

image.png

  • 适合处理规模大的数据
       数据规模:能够处理数据规模达到GB、TB、PB级别的数据;
       文件规模:能够处理百万规模以上的文件数量。

  • 可构建在多台廉价机器上,通过多副本机制,提高可靠性

2)缺点

  • 不适合低延时数据访问,做不到毫秒级的存储数据

  • 无法高效的对大量小文件进行存储
       存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息;
       小文件存储的寻址时间会超过读取时间,违反了HDFS的设计目标。

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

3.HDFS组成架构

image.png

1)NameNode(nn): 相当于Master,是一个主管、管理者

  • 管理HDFS的名称空间;
  • 配置副本策略;
  • 管理数据块(Block)映射信息;
  • 处理客户端读写请求。

2)DataNode:相当于Slave,NaneNode下达命令,DataNode执行实际的操作。

  • 存储实际的数据块;
  • 执行数据块的读/写操作

3)SecondaryNameNode: 并非NameNode的热备,因为当NameNode挂掉的时候,它也并不能马上替换NameNode并提供服务。

  • 辅助NameNode,分担其工作量,比如定期合并Fsimage和Edits,并推送给NameNode;
  • 在紧急情况下,可辅助恢复NameNode。

4) Client: 客户端

  • 文件切分:文件上传HDFS的时候,Client将文件切分成一个一个的Block,然后上传;
  • 与NameNode交互,获取文件的位置信息;
  • 与DataNode交互,读取或写入数据;
  • Client提供一些命令来管理HDFS,例如NameNode格式化;
  • Client可以通过一些命令来访问HDFS,例如对HDFS的增删改查操作。