HDFS文件存储组织

来源:互联网 发布:中国经济数据公布时间 编辑:程序博客网 时间:2024/05/17 23:37

1、作为一个分布式文件系统,HDFS内部的数据和文件存储机制、读写过程与普通的本地文件系统有较大的差别。

2、文件数据的存储组织

①HDFS中最主要的部分就是NameNode和DataNode。NameNode存储了所有文件元数据、文件与数据块的映射关系,以及文件属性等核心数据,DataNode则存储了具体的数据块。

3、NameNode目录结构NameNode借助本地文件系统来保存数据,保存的文件架位置由配置选项{dfs.name.dir}决定(未配置此选项,则为hadoop安装目录下的/tmp/dfs/name),

所以这里我们以${dfs.name.dir}代表NameNode节点管理的根目录。目录下的文件和子目录则以${dfs.name.dir}/file和${dfs.name.dir}/subdir的格式来表示。

  在NameNode的${dfs.name.dir}之下有3个文件夹和1个文件:

  1)current目录:主要包括如下的内容和结构:

    a)文件VERSION:b保存了当前运行的HDFS版本信息

    b)FsImage:是整个系统的空间镜像文件

    c)Edit:EditLog编辑日志

   d)Fstime:上一次检查点的时间

   2)previous.checkPoint  目录:   和current内容结构一致,不同之处在于,此目录保存的是上一次检查点的内容。

   3)image目录: 旧版本(版本<0.13)的FsImage存储位置

   4)in_use.lock: NameNode锁,只有在NameNode有效(启动并且能和DataNode正常交互)时存在;不满足上述情况时,该文件不存在。这一文件具有“锁”的功能,可以防止多个NameNode共享同一目录(如果一个机器上只有一个NameNode,这也是最常见的情况那么这个文件基本不需要)。

4、DataNode目录结构

①DataNode借助本地文件系统来保存数据,一般情况下,保存的文件夹位置由配置选项{dfs.data.dir}决定(未配置此选项,则为hadoop安装目录下的/tmp/dfs/data)。所以可以用${dfs.data.dir}代表DataNode节点管理的数据目录的根目录,目录下的文件和子目录以${dfs.data.dir}/file和${dfs.data.dir}/subdir的格式表示

②一般来说,在${dfs.data.dir}之下有4个子目录和2个文件

1)current目录:已成功写入的数据块,以及一些系统需要的文件。包括:

    a)文件VERSION:保存了当前运行的HDFS版本信息

    b)Blk_XXXXX和Blk_XXXXX,Meta: 分别是数据块和数据块对应的元数据(比如校验信息等)

    c)subdirXX:当同一目录下文件数超过一定限制(比如64)时,会建立一个subdir目录,保存多出来的数据块和元数据;这样可以保证同一目录下目录+文件数不会太多,可以提高搜索效率。

   2)tmp目录和blocksBeingWritten目录:正在写入的数据块,tmp目录保存的是用户操作引发的写入操作对应数据块,blocksBeingWritten目录是HDFS系统内部副本创建时(当出现副本错误或者数据数量不够等情况时)引发的写入操作对应的数据块。

  3)detach目录:用于DataNode升级

  4)storage文件:由于旧版本(<0.13)的存储目录是storage,因此如果在新版本的DataNode中启动旧版本的HDFS,会因为无法打开storage目录而启动失败,这样可以防止因版本不同带来的风险。

 5)in_use_lock文件: DataNode锁,只有DataNode有效(启动并且能和NameNode正常交互)时存在:不满足上述情况时,该文件不存在。这一文件具有“锁”的功能,可以防止多个DataNode共享同一目录(如果一个机器上只有一个DataNode,这也是最常见的情况,那么这个文件基本不需要)。

5、CheckPointNode目录结构

   ①CheckPointNode和旧版本的SecondaryNameNode作用类似,所以目录结构也十分相近。

   ②CheckPointNode借助本地文件系统来保存数据,一般情况下,保存的文件夹位置由配置选项{dfs.checkpoint.dir}决定(未配置此选项,则为hadoop安装目录下的/tmp/dfs/namesecondary)。

 ③这里我们以${dfs.checkpoint.dir}代表CheckPointNode节点管理的数据目录的根目录,目录下的文件和子目录则以${dfs.checkpoint.dir}/file    和   ${dfs.checkpoint.dir}/subdir的格式表示。

  ④CheckPointNode目录下的文件和NameNode下的文件同名文件作用基本一致,不同之处在于CheckPointNode保存的是自上一个检查之后的临时镜像和日志。

 

 

0 0
原创粉丝点击