1:HDFS产出背景及定义
1:产生背景
需要一种系统来管理多台机器上的文件,HDFS只是分布式文件管理系统中的一种。
2:定义
分布式的文件系统。适用场景是适合一次写入,多次读出的场景。
2:HDFS优缺点
优点
1:高容错性
数据自动保存多个副本,它通过增加副本的形式,提高容错性。
第一个副本丢失之后,可以自动恢复。
2:适合处理大数据
无论是数据文件内存大还是文件数量多都适合。
3:可构建在链家机器上,通过多副本机制,提高可靠性。
缺点
1:不适合低延迟数据访问,比如毫秒级的存储数据。
2:无法高效的对大量小文件进行存储
1:存储大量小文件,会占用NameNode大量内存来存储文件目录和块信息。这样是不可取的,因为NameNode的内存总是有限的。
2:小文件存储的寻址时间会超过读取时间,它违反了HDFS的设计目标。
3:不支持并发写入、文件随机修改
1:一个文件只能有一个写,不允许多个进程同时写。
2:仅支持数据append,不支持文件的随机修改。
3:组成。
1:NameNode(nn):就是master,它是一个主管、管理者
1:管理HDFS的名称空间
2:配置副本策略
3:管理数据块(BLOCK)映射信息
4:处理客户端读写请求
2:DataNode。NameNode下达命令,DataNode执行实际的操作。
1:存储实际的数据块
2:执行数据库的读写操作
3:Client:客户端
1:文件切分。文件上传HDFS的时候,client将文件切分成一个一个的Block,然后进行上传。
2:与NameNode交互,获取文件的位置信息。
3:与DataNode交互,读取或者写入数据
4:Client提供一些命令来管理HDFS,比如HDFS的格式化
5:Client可以通过一些命令来访问HDFS,比如对HDFS增删改查操作。
4:Secondary NameNode:并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务。
1:辅助NameNode,分担其工作量,比如定期合并Fsimag和Edits,并推送给NameNode。
2:在进击情况下,可以辅助恢复NameNode。
4:HDFS文件块大小
HDFS的文件在物理上是分块存储,块的大小可以通过配置参数来规定,默认大小在2.x和3.xz中是128M,1.x是64M
1:首先由集群中有几个块
2:其次如果寻址时间约为10ms,即查找到目标块的时间是10ms
3:寻址时间为传输时间的百分之一时,则为最佳状态。因此传输时间10ms/0.01=1s
4:而目前磁盘的传输速率普遍为100MB/s
5:Block大小=1s*100MB/S=100MB
为什么块的大小不能设置太小,也不能设置太大
1:HDFS的块设置太小,会增加寻址时间,程序一致找块的开始位置。
2:如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据时,会非常慢。
总结:HDFS块的大小主要取决于磁盘传输速率。