HDFS产出的背景和意义
1.1hdfs产生的背景
随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘中但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。hdfs只是分布式管理系统的一种。
1.2hdfs的定义
HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS优缺点
优点1.高容错性:
(1)数据自动保存多副本。它通过增加副本的形式,提高容错。 (2)某个副本丢失后,可以自动恢复。
2.适合处理大数据
(1)数据规模:能够 处理数据规模达到GB、TB\甚至PB级别的数据
(2)文件规模:能够处理百万规模以上的文件数据,数据量之大。
3.可构建在廉价机器上,通过多副本机制,提高可靠性。
缺点:
1.不适合低延迟的数据访问,比如毫秒级的存储数据,是做不到的。
2.无法高效的对大量小文件进行存储。
(1)存储大量小文件的话,它会占用NameNode大量的内存来存储文件目录和快信息,这样是不可取的,因为NameNode的内存有限的;
(2)小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。
3.不支持并发写入、文件随机修改
(1)一个文件只有一个写,不允许多个线程同时写
(2)仅支持数据append(追加),不支持文件随机修改
HDFS组成架构
1.Namenode:就是master,它是一个管理者、主管。
(1)管理HDFS的名称空间; (2)配置副本策略 (3)管理数据块(block)映射信息 (4)处理客户端的读写请求
2.DataNode :就是slave。NameNode下达命令,DataNode执行实际操作。
(1)存储实际数据块 (2)执行实际的读写操作
3.Client(客户端)
-
文件切分,文件上传HDFS的时候,client将文件切分成一个一个的block,然后进行上传
-
与NameNode交互,获取文件的位置信息
-
与DataNode交互,读取或者写入数据
-
client提供一些命令管理HDFS,比如NameNode的格式化
-
client可以通过一些命令来访问hdfs,比如说对hdfs增删改操作
4 SecondaryNameNode:并非是NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。1.辅助NameNode,分担其工作量,比如定期合并Fsimage和edits,并推送NameNode
2.在紧急情况下,可辅助恢复NameNode
思考题:为什么块信息大小不能设置太小,也不能设的太大?
1.HDFS的块信息设置太小,会增加寻址时间,程序一直在找的开始位置
2.如果块信息设置太大,从磁盘传输数据的时间明显大于定位这个块开始位置所需要的时间。导致程序在处理这块数据非常慢。
总结:HDFS块的大小设置取决于磁盘传输速率。