中企动力 > 头条 > 元数据管理

网站性能检测评分

注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。

元数据管理

好程序员:Namenode元数据管理 互联网视频课程

img

苏老四

关注

在NameNode运行时会将内存中的元数据信息存储到所指定的文件,即${dfs.name.dir}/current目录下的fsimage文件,此外还会将另外一部分对NameNode更改的日志信息存储到${dfs.name.dir}/current目录下的edits文件中。fsimage文件和edits文件可以确定NameNode节点当前的状态,这样在NameNode节点由于突发原因崩溃时,可以根据这两个文件中的内容恢复到节点崩溃前的状态,所以对NameNode节点中内存元数据的每次修改都必须保存下来。但是如果每次都保存到fsimage文件中,这样效率就特别低,所以引入编辑日志文件edits,保存对元数据的修改信息,也就是fsimage文件保存NameNode节点中某一时刻内存中的元数据(即目录树),edits保存这一时刻之后的对元数据的更改信息。

一、内存元数据

内存中有一份完整的元数据(内存meta data),包含文件路径、副本数、blockid,及每一个block所在datanode的信息。

二、Fsimage镜像文件

fsimage 文件其实是 Hadoop 文件系统元数据的一个永久性的检查点,其中包含 Hadoop 文件系统中的所有目录和文件 idnode 的序列化信息;

使用命令将二进制fsimage文件还原成XML文件hdfs fs -oiv -i fsimage“文件输入路径” -p XML -o “输出路径”

1.首先是一个image head,其中包含:

imgVersion(int):当前image的版本信息

namespaceID(int):用来确保别的HDFS instance中的datanode不会误连上当前NN。

numFiles(long):整个文件系统中包含有多少文件和目录

genStamp(long):生成该image时的时间戳信息。

2.接下来便是对每个文件或目录的源数据信息,如果是目录,则包含以下信息:

path(String):该目录的路径,如“/user/build/build-index”

replications(short):副本数(目录虽然没有副本,但这里记录的目录副本数也为3)

mtime(long):该目录的修改时间的时间戳信息

atime(long):该目录的访问时间的时间戳信息

blocksize(long):目录的blocksize都为0

numBlocks(int):实际有多少个文件块,目录的该值都为-1,表示该item为目录

nsQuota(long):namespace Quota值,若没加Quota限制则为-1

dsQuota(long):disk Quota值,若没加限制则也为-1

username(String):该目录的所属用户名

group(String):该目录的所属组

permission(short):该目录的permission信息,如644等,有一个short来记录。

3.若从fsimage中读到的是一个文件,则还会额外包含如下信息:

blockid(long):属于该文件的block的blockid

numBytes(long):该block的大小

genStamp(long):该block的时间戳

三、edits日志文件

edits存放的是 Hadoop文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到 edits文件中。

好程序员:Namenode元数据管理 企业视频课程

img

尹太君

关注

在NameNode运行时会将内存中的元数据信息存储到所指定的文件,即${dfs.name.dir}/current目录下的fsimage文件,此外还会将另外一部分对NameNode更改的日志信息存储到${dfs.name.dir}/current目录下的edits文件中。fsimage文件和edits文件可以确定NameNode节点当前的状态,这样在NameNode节点由于突发原因崩溃时,可以根据这两个文件中的内容恢复到节点崩溃前的状态,所以对NameNode节点中内存元数据的每次修改都必须保存下来。但是如果每次都保存到fsimage文件中,这样效率就特别低,所以引入编辑日志文件edits,保存对元数据的修改信息,也就是fsimage文件保存NameNode节点中某一时刻内存中的元数据(即目录树),edits保存这一时刻之后的对元数据的更改信息。

一、内存元数据

内存中有一份完整的元数据(内存meta data),包含文件路径、副本数、blockid,及每一个block所在datanode的信息。

二、Fsimage镜像文件

fsimage 文件其实是 Hadoop 文件系统元数据的一个永久性的检查点,其中包含 Hadoop 文件系统中的所有目录和文件 idnode 的序列化信息;

使用命令将二进制fsimage文件还原成XML文件hdfs fs -oiv -i fsimage“文件输入路径” -p XML -o “输出路径”

1.首先是一个image head,其中包含:

imgVersion(int):当前image的版本信息

namespaceID(int):用来确保别的HDFS instance中的datanode不会误连上当前NN。

numFiles(long):整个文件系统中包含有多少文件和目录

genStamp(long):生成该image时的时间戳信息。

2.接下来便是对每个文件或目录的源数据信息,如果是目录,则包含以下信息:

path(String):该目录的路径,如“/user/build/build-index”

replications(short):副本数(目录虽然没有副本,但这里记录的目录副本数也为3)

mtime(long):该目录的修改时间的时间戳信息

atime(long):该目录的访问时间的时间戳信息

blocksize(long):目录的blocksize都为0

numBlocks(int):实际有多少个文件块,目录的该值都为-1,表示该item为目录

nsQuota(long):namespace Quota值,若没加Quota限制则为-1

dsQuota(long):disk Quota值,若没加限制则也为-1

username(String):该目录的所属用户名

group(String):该目录的所属组

permission(short):该目录的permission信息,如644等,有一个short来记录。

3.若从fsimage中读到的是一个文件,则还会额外包含如下信息:

blockid(long):属于该文件的block的blockid

numBytes(long):该block的大小

genStamp(long):该block的时间戳

三、edits日志文件

edits存放的是 Hadoop文件系统的所有更新操作的路径,文件系统客户端执行的所有写操作首先会被记录到 edits文件中。

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP