HDFS文件系统出现的原因是,文件较大时,如达到TB,PB级别,不好存储,磁盘较慢,存储时间太长,也可能磁盘容量不足。因此HDFS文件系统实行切块存放的方法。在文件数量特别多且分块存储到多台机器上的情况下,硬件出现故障是不能避免的事情,为了解决这个问题,HDFS提出了冗余的方法,即一块文件多次备份,并为保证文件的准确性,使用流式读写文件的方法,这样也提高了文件的吞吐量。HDFS文件系统的另一个特点就是,文件一次存入多次读取,不允许修改文件只允许增加文件内容。

HDFS文件系统采用了Master/Slaver架构,由一个Namenode节点和多个Datanode节点组成。HDFS文件系统使用分开存储的方式,默认一个文件块的大小是128M。名字空间可以创建目录,保存文件,Namenode维护文件系统的名字空间,任何对文件系统名字空间或属性的修改都会记录下来。管理目录结构及文件分块位置信息叫做元数据,元数据存放在Namenode节点中。文件系统中的文件切成多个块存放在不同的磁盘上,一个磁盘上有多个块,维护这些块信息是由Datanode承担。Datanode定时向Namenode汇报自己所持有的数据块信息。在大规模数据中,文件存储过程中出现丢失,错误等现象是会出现的,为了解决这个问题,提出了副本机制,一般一个文件存入HDFS文件系统中默认会备份三份。HDFS文件系统适用于一次读入多次写出,不支持文件修改,适用于大规模数据的存储分析,数据挖掘等服务,适合作网盘服务。

Namenode是HDFS文件系统的核心,称为Master,存放着文件系统的元数据,文件系统中所有文件的目录树,但不存实际数据。Namenode知道文件系统中任意给定文件的块及其位置。但是Namenode不持久化存储每个文件各个块所在的Datanode所在位置信息,这些信息将在系统启动时从数据节点构建,并存放在内存中。开机时Datanode节点向Namenode发送信息,存在内存中。因此Namenode所在机器需要大内存空间。此外为了防止系统故障造成的问题,Namenode有一个镜像文件和日志文件,根据镜像文件和日志文件,可以恢复数据。

Datanode存储实际数据,称为slaver,Datanode与Namenode通信,并向Namenode汇报自己负责持有的块。当某个Datanode关闭时不会影响数据可用,Namenode会安排其他副本,Datanode节点需要大容量磁盘存储大量实际数据。Datanode定时向Namenode发送心跳,如果Namenode长时间未收到Datanode的心跳则认为该Datanode节点失败。

HDFS文件上传流程:

  1. 客户端向Namenode发送文件上传请求,调用RPC。
  2. Namenode节点进行一系列检查工作:检查父目录是否存在,文件是否已经上传,是否有文件上传权限等。
  3. 如果检查没有问题,向客户端发送允许上传的响应。
  4. 客户端将上传信息传送给Namenode节点,包括文件长度,文件名等
  5. Namenode根据上传的信息进行计算,出需要那排的存储节点数,根据Datanode的信息,安排返回哪些节点给客户端。
  6. 客户端获取Namenode返回的信息进行上传。
  7. 客户端对数据进行逻辑切块。
  8. 客户端准备对第一个数据块进行上传。
  9. 客户端建立第一个数据块的pipline,连接第一个数据块要存放到Datanode的通道。
  10. Datanode通过通道返回信息告知通道建立成功。
  11. 数据块传输到第一个节点,第一个节点把数据通过pipline复制到第二个节点,直到复制到所有备份节点,并进行数据校验。
  12. 返回结果,并关闭pipline。

 

HFDFS文件下载流程:

  1. 客户端向Namenode发送下载文件请求。
  2. Namenode进行系列检查,如文件是否存在,是否有下载文件的权限等,若检查没有问题,Namenode查找自己的元数据,返回数据对应的块以及块的存储位置给客户端。
  3. 客户端在网络拓扑结构中根据就近原则在就近的节点上下载文件,并进行校验,若校验通过,则下载文件成功,继续下载下一个块文件。

 

     由上文件上传下载过程可知,Namenode是整个文件系统的核心,其主要职责是响应客户端请求,维护文件系统目录树,管理Datanode节点信息。

MapReduce核心思想是分而治之。Map把复杂任务分解成小任务来并行处理,可以分解的前提是小任务可以并行计算,彼此之间没有依赖关系。Reduce把Map阶段计算的结果进行全局汇总。在HDFS文件系统中存储的文件每个块,会有一个Map程序,处理这个块的文件,处理的结果由Reduce程序综合。这样实现了在处理数据时是移动了计算而不是移动数据,移动数据的耗费的时间和成本都比较好。