HDFS
一、概念
1.HDFS(分布式文件系统)是指被设计成适合运行在通用硬件上的分布式文件系统,有着高容错性、高吞吐量等特点。
2.简言之就是:“把数据分散不同———>聚集使用”
3.一个HDFS集群由一个NameNode:(①名称节点②主服务器管理文件系统的命名空间和客户端对文件的询问操作集群中的DataNode管理存储的数据)和若干个DataNone(数据节点)组成。
4.故障检测和自动快速恢复是HDFS一个很核心的设计目标。
二、体系结构
1.HDFS设计理念:①低成本:兼容廉价的硬件设备。②处理大规模数据:典型文件大小GB-TB级别,关注横向扩展。③批量数据访问:批量读而非随机读,关注吞吐量而非响应时间。④高容错:副本冗余机制。⑤适应场景:大文件访问,静态数据访问。⑥不适合的场景:存储大量小文件,随机读取,低延迟读取。
2.HDFS体系结构:
从上两幅图中可以看出,HDFS由一个Namenode、一个Secondary NameNode、若干Datanodes和Client组成,采用主从结构,存储的基本单位是块。如果把HDFS比作一本书,Namenode存储的则是书的目录,Datanode存储的就是书的正文内容,一章是一个文件,一节是一个块,目录称为元数据(描述数据属性的信息),目录指明的各章节页码称为映射,用户访问数据,首先要访问Namenode。
(1)块(基本操作单位):
①HDFS把一个文件被分成多个块,以块作为存储单位,默认一个块为64~128MB。
②HDFS采用抽象的块概念可以带来以下几个明显的好处:支持大规模文件存储、简化系统设计、适合数据备份。
③一个数据块通常要备份3份。
从以上这幅图中可以深入了解到,1.概念:fsimage保存了最新的元数据检查点。edits保存自du最新检查zhi点后的命名dao空间的变化。2、工作原理:从最新检查点后,hadoop将对每个文件的操作都保存在edits中,为避免edits不断增大,secondary namenode就会周期性合并fsimage和edits成新的fsimage,edits再记录新的变化。这种机制有个问题:因edits存放在Namenode中,当Namenode挂掉,edits也会丢失,导致利用secondary namenode恢复Namenode时,会有部分数据丢失。
(2)NameNode(主节点)
①存储元数据:文件、块与DataNode之间的映射。
②元数据保存在内存。
③NameNode由FsImage、EditLog两文件组成。FsImage保存文件、块的目录结构,EditLog保存对文件、块的操作,如创建、删除等。
④在NameNode统一调度下进行数据块的创建、删除和复制等操作。
(3)DataNode(从节点)
①存储文件内容。
②文件内容保存在磁盘上。
③维护BIock ID到DataNode本地文件的映射关系。
④向名称节点定期发送自己所存储的块的列表(心跳)。
(4)Secondary NameNode(冷备份)
①它的职责是合并NameNode的edit logs到fsimage文件中。