HDFS全称是Hadoop Distribute File System,它是源于Google的GFS思想演变而来,官网是这样介绍的:
总结一下就是以下两点:
1.HDFS有很高的容错率,并且能够运行在低价或者配置低的硬件之上。
2.HDFS提供了高吞吐量的访问,很适合一些大规模数据上的应用。
在其官网有一张以下图片:
上述图片就是文件的读写流程,在介绍读写流程之前,我先介绍一下上述出现的几个名词。
1.NameNode:它是HDFS上一个主要服务,通俗的称为HDFS中的老大,主要管理文件系统的命名空间以及客户端读写文件的操作规则。官网介绍每个HDFS只有一个Namenode,但是现在可以实现多个。
2.Rack:机架,每个机架上面会有多个Datanode。
3.Datanode:它是集群中的每个节点,换句话说,它就是用来存储文件的。
4.Block:块。通常情况下,一个文件会被分成很多个块,这些块有可能存储在不同的Datanode中。它主要执行文件系统命名空间的操作,如打开、关闭以及重命名文件等等。
5.Metadata:上面说Namenode是负责客户端文件的操作规则,其实他是间接完成的,而直接完成的是Metadata,Metadata就是Namenode的小弟。
文件写的流程:
1.客户端先打开文件分布式文件操作系统,并且告诉Namenode要操作哪些文件。
2.Namenode通过Metadata查询可用的块,并返回一个元素为Datanode的数组。
3.客户端打开文件输出流,向Namenode返回的Datanode中写入数据,在写的同时,默认会同时再多写两个副本,为了提高容错率。
4.写完之后会向客户端返回一个ack标记,用来判断写入成功还是失败。
5.关闭输入输出流。