一、相关基本概念
文件系统。文件系统是操作系统提供的用于解决“如何在磁盘上组织文件”的一系列方法和数据结构。
分布式文件系统。分布式文件系统是指利用多台计算机协同作用解决单台计算机所不能解决的存储问题的文件系统。如单机负载高、数据不安全等问题。
HDFS。英文全称为Hadoop Distributed File System,是Hadoop项目的核心子项目,是分布式计算中数据存储管理的基础,它是基于流式数据访问和处理超大文件的需求而开发的分布式文件系统,可以运行于廉价的商用服务器上。 HDFS 源于谷歌公司在2003年10月份发表的GFS(Google File System) 论文
二、HDFS存储架构
HDFS采用主从架构(Master/Slave架构)
HDFS集群是由一个NameNode和多个的 DataNode组成。
HDFS集群是由一个NameNode和多个的 DataNode组成
1:Namenode
NameNode是HDFS集群的主服务器,通常称为名称节点或者主节点。一旦NameNode关闭,就无法访问Hadoop集群。NameNode主要以元数据的形式进行管理和存储,用于维护文件系统名称并管理客户端对文件的访问;NameNode记录对文件系统名称空间或其属性的任何更改操作;HDFS负责整个数据集群的管理,并且在配置文件中可以设置备份数量,这些信息都由NameNode存储。
2:Datanode
DataNode是HDFS集群中的从服务器,通常称为数据节点。文件系统存储文件的方式是将文件切分成多个数据块,这些数据块实际上是存储在DataNode节点中的,因此DataNode机器需要配置大量磁盘空间。它与NameNode保持不断的通信,DataNode在客户端或者NameNode的调度下,存储并检索数据块,对数据块进行创建、删除等操作,并且定期向NameNode发送所存储的数据块列表。
三、HDFS写入流程
1)Hadoop客户端和NameNode通信请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。
2)NameNode返回信息给hadoop客户端是否可以上传。
3)Hadoop客户端会先对文件进行切分,比如:一个block块大小为128M,如果上传文件300M大小,文件会被切分成3个块,两个128M、一个44M,并向NameNode发上传请求。
4)NameNode返回DataNode的服务器信息给hadoop客户端。
5)hadoop客户端请求一台DataNode上传数据(本质上是一个RPC调用,建立通道),第一个DataNode收到请求会继续调用第二个DataNode,然后第二个调用第三个DataNode,将整个通道建立完成,逐级返回hadoop客户端。
6)hadoop客户端开始往第一个DataNode上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位(一个packet为64kb),当然在写入的时候通道会进行数据校验,它并不是通过一个packet进行一次校验而是以checksum为单位进行校验(512byte),第一台DataNode收到一个packet就会传给第二台,第二台传给第三台;第一台每传一个packet会放入一个应答队列等待应答。
7)当一个block传输完成之后,hadoop客户端再次请求NameNode上传第二个block的DataNode服务器,直至所有的block上传完成。
四、HDFS读取流程
1)hadoop客户端发送请求,调用Distributed File System API的open方法发送请求到NameNode,获得存放在NameNode节点上文件的block位置映射信息。
2)Namenode把文件所有block的位置信息返回给hadoop客户端。
3)hadoop客户端拿到block的位置信息后调用FSDataInputStream API的read方法并行的读取block信息,block默认有3个副本,所以每一个block只需要从一个副本读取。
4)hadoop客户端从DataNode上取回文件的所有block按照一定的顺序组成最终需要的文件。
五、HDFS的优缺点
随着互联网数据规模的不断增大,对文件存储系统提出了更高的要求,需要更大的容量、好更的性能以及安全性更高的文件存储系统,与传统分布式文件系统一样,HDFS分布式文件系统也是通过计算机网络与节点相连,也有传统分布式文件系统的优点和缺点。
1:HDFS的优点
高容错性
适合处理高吞吐量
适合存储和管理大规模数据
适合一次写入 多次读取
适合处理非结构化数据
2:HDFS的缺点
不适合低延时数据访问
不适合小文件存储
不支持文件随机修改
创作不易 觉得有帮助请点赞关注收藏~~~