HDFS 文件系统NameSpace、副本机制

文件系统NameSpace

HDFS支持传统的层次型目录结构,用户或客户端可以创建目录,并且可以存储文件在这些目录中。HDFS的这种目录层次结构与其他的文件系统非常类似,可以进行创建文件、移动文件、删除文件等操作。还支持不同用户不同目录访问权限。
NameNode维护的是文件系统的NameSpace,对文件系统的任何修改或者属性的修改都会被NameNode记录下来,应用程序可以指定文件的副本个数,每个文件都有自己对应的副本系数,这个副本系数也存储在NameNode上。

HDFS副本机制

上面介绍了HDFS的副本系数,那么到底是如何实现副本的?
HDFS可以在集群中存储非常大的文件,将每个文件都存储一系列的blocks。如果一个文件大于128MB,那么会自动切分这个文件。为了容错,这些Block是以副本的形式存储在集群中。每个文件都有可以设置Block的大小和副本的个数。
每个文件所有的Block大小除了最后一个BLock其余Block的大小都是固定的。
HDFS在文件创建时就可以指定副本系数,也可以在之后进行改变。
HDFS 文件系统NameSpace、副本机制
如上图所示,NameNode存储了FileName,numReplicas,block-ids。
/users/sameerp/data/part-0这个文件的副本系数是2,block-id是1和3
/users/sameerp/data/part-1这个文件的副本系数是3,block-id分别是2、4和5
当某台节点挂掉之后,数据依旧可以正常访问。