HDFS(Hadoop Distributed File System):Hadoop分布式文件系统。
HDFS只是分布式文件系统中的一种。
产生背景:
随着数据量越来越大,一个操作系统已经很难存下所有数据,此时就需要将数据分配到多个操作系统的磁盘中进行管理和维护。由于无法对多个操作系统上的文件进行高效的管理和维护,因此产生了分布式文件系统。
定义:
HDFS是Hadoop分布式文件系统,用于存储文件,通过目录树定位文件位置,由许多服务器联合起来实现文件管理功能,并且集群中的服务器各自有各自的角色。
HDFS的优点:
- 高容错性:数据会自动保存多个副本,当某一个副本丢失后,它可以自动恢复。
- 适合处理大数据:可处理数据规模达到GB、TB、甚至PB级别的数据,也能处理百万规模以上数量的文件。
- 可搭建在廉价的机器上,通过多个副本的机制,增加了可靠性。
HDFS的缺点:
- 不适合低延时数据访问:比如无法像操作数据库一样在毫秒级内得到结果反馈。
- 无法高效的对大量小文件进行存储:对于每个文件,NameNode都会用内存来存储文件的元数据(文件名、文件目录结构、文件属性和块信息等),小文件和大文件一样都存储了这种元数据信息,但是内存大小是有限的,如果主要存储小文件会失去HDFS存储海量数据的优势(针对小文件,我们可以采用文件合并的思想来解决此问题)。另外,小文件存储的寻址时间会超过读取时间,违反了HDFS的设计目标,寻址时间为传输时间的1%时属于最佳状态。
- 不支持并发写入、文件随机修改:文件只能有一个写,不能多个线程同时操作,只支持对文件内容进行追加,不支持对文件内容进行随机修改。
使用场景:
适合一次写入数据,多次读出的操作场景,且不支持文件修改(只能追加内容)。适合数据分析、离线操作等。
HDFS的组成架构:
- NameNode(HDFS中的老大哥):管理者。管理HDFS的名称空间;副本分配策略管理;管理元数据信息;处理来自用户的请求。
- DataNode(HDFS中的小弟):负责执行命令。存储具体数据块;执行数据的写入\读出操作。
- SecondaryNameNode(NameNode的秘书):辅助NameNode。定期合并Fsimage和Edits,并发送给NameNode;在必要情况下,可以辅助恢复NameNode(不太可靠,不能保证完全恢复)。