什么是HDFS?
全称Hadoop Distributed File System,分布式文件系统。适合一次写入,多次读取的应用场景。
HDFS架构与功能:
- NameNode:master,管理者
1)管理HDFS的命名空间。
2)管理副本的分配策略。
3)管理数据块的映射信息(元数据)。
4)处理客户端的读写请求 - DataNode:slave,执行实际的操作。
1)存储数据块。
2)执行数据块的读写操作。 - SecondaryNameNode:NameNode的助手,并非NameNode的热备。
1)辅助NameNode,定期合并fsimage和edits文件,并发送给NameNode。(HA集群中,standby状态的NameNode会取代SecondaryNameNode的功能)。
2)紧急情况下,可辅助恢复NameNode(已弃用,使用zokeeper和HA代替)。 - Client:客户端。
1)文件切分。文件再上传的时候由客户端切分为一个个block后再进行上传。
2)与NameNode交互,获取数据块的存储位置信息。
3)与DataNode进行交互,进行文件的读写。
4)提供了一些管理HDFS的命令,比如NameNode格式化。
5)提供了一些操作HDFS的命令,比如HDFS的增删改查操作等。
HDFS的优点:
- 1.高容错率。
一个文件多个副本存储,即使副本丢失或者损坏了,也可以自动恢复副本。
- 2.适合处理大规模数据。
可以处理GB/TB甚至PB级别的数据。也可以处理百万规模数量的文件。
- 3.可搭建在廉价机上。
通过副本机制提高容错率。
HDFS的缺点:
- 1.不适合低延时的数据访问,比如毫秒级别的数据访问。
- 2.无法高效的对小文件进行存储。
存储大量的小文件,会占用大量NameNode的内存来存储元数据信息。小文件寻址的时间会超过读取时间,违背了HDFS的设计原则。 - 3.不支持并发写入和文件的随机修改。
一个文件只允许一个线程写入。文件只可以追加,不可以随机修改。