这是我参与「第四届青训营 」笔记创作活动的第1天
1. HDFS产生背景及定义
1)HDFS产生背景
随着数据量越来越大,在一个操作系统中存不下所有的数据,那么我们可以把数据分配到更多的操作系统管理的磁盘中,但是这样带来了不方便管理和维护的问题,所以迫切需要一种系统来管理多台机器上的文件,这就促使了分布式文件管理系统的产生。HDFS只是分布式文件管理系统中的一种。
2)HDFS定义
HDFS(Hadoop Distributed File System),它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由许多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS的使用场景:适合一次写入,多次读出的场景。一个文件经过创建、写入和关闭之后就不能够改变,只能追加数据。
2. HDFS优缺点
1)优点
- 高容错性
存入的数据会自动保存多个副本,通过增加副本的形式来提高容错性。
某一个副本丢失以后,可以通过其他机架上存储的副本自动恢复数据。
-
适合处理规模大的数据
数据规模:能够处理数据规模达到GB、TB、PB级别的数据;
文件规模:能够处理百万规模以上的文件数量。 -
可构建在多台廉价机器上,通过多副本机制,提高可靠性
2)缺点
-
不适合低延时数据访问,做不到毫秒级的存储数据
-
无法高效的对大量小文件进行存储
存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和块信息;
小文件存储的寻址时间会超过读取时间,违反了HDFS的设计目标。 -
不支持并发写入、文件随机修改
3.HDFS组成架构
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的增删改查操作。