资讯详情

HDFS元数据管理

1.元数据管理概述

> HDFS类型分类包括以下几部分

  • 文件、目录本身的属性信息,如文件名、目录名、修改信息等
  • 存储文件记录的信息,如存储块信息、块状态、副本数量等
  • 记录 HDFS 的 Datanode 信息,用于 DataNode 的管理。

> 按形式分

  • 内存元数据 内存
  • 两种元数据文件 磁盘

> HDFS 磁盘上元数据文件分为持久存储两类:

  • fsimage 镜像文件:是元数据的持久检查点,包括 Hadoop 文件系统中的所有目录和文件元数据信息,但不包括文件块位置的信息。
  • Edits 编辑日志:存储 Hadoop 文件系统客户端执行的所有变更操作(文件创建、删除或修改)日志将首先记录在文件系统的所有变更操作中 edits 文件中。

> ps:所谓持久化,就是将数据保存到硬盘中,使应用程序或机器重启后能够继续访问以前保存的数据

当客户端对 HDFS 操作中的文件新增或修改,操作记录首先记录在内 edits 在日志文件中,当客户端成功操作时,相应的元数据将更新到内存元数据。 fsimage 文件一般都很大(GB 水平很常见),如果所有更新操作都是常见的 fsimage添加到文件中会导致系统运行缓慢。

HDFS 这种设计从内存中的数据更新和快速查询开始,大大缩短了操作响应时间; 第二,内存中元数据丢失的风险相当高(断电等)。),因此辅助元数据镜像文件(fsimage) 编辑日 志文件(edits)保证元数据安全的备份机制。

2.元数据目录

在 Hadoop 的 HDFS 在首次部署配置文件后,不能立即启动使用,而是首先对文件系统进行 统一格式化。需要在。 NameNode(NN)节点操作如下:

$HADOOP_HOME/bin/hdfs namenode –format

文件系统:此时的文件系统在物理上并不存在

格式化:格式化不是指传统意义上的本地磁盘格式化,而是一些清除和准备工作。

> HDFS中文件块目录结构的具体格式如下:

 ${dfs.datanode.data.dir}/ ├── current │ ├── BP-526805057-127.0.0.1-1411980876842 │ │ └── current │ │ ├── VERSION │ │ ├── finalized │ │ │ ├── blk_1073741825 │ │ │ ├── blk_1073741825_1001.meta │ │ │ ├── blk_1073741826 │ │ │ └── blk_1073741826_1002.meta │ │ └── rbw │ └── VERSION └── in_use.lock  

目录在哪里? hdfs-site.xml的dfs.namenode.name.dir指定 可以是多个

> seen_txid:

$dfs.namenode.name.dir/current/seen_txid 储存是非常重要的 transactionId 的文 件,format 之后是 它代表的是 namenode 里面的 edits_*文件尾数,namenode 重启的 按照时间 seen_txid数字,从头开始 edits_0000001~到 seen_txid 数字 当你的 hdfs 异常重启时,必须进行比较 seen_txid 内部的数字是你吗? edits 最后的 尾数。

完成后会在$dfs.namenode.name.dir/current创建文件结构:这个目录也正是 namenode 与元数据相关的文件目录:

cat VERSION  namespaceID=1752067181 clusterID=cluster84 cTime=0 storageType=NAME_NODE blockpoolID=BP-824456762-192.168.20.39-1508928616349 layoutVersion=-60

  • namespaceID/clusterID/blockpoolID:HDFS 集群的唯一标识符.防止 DataNodes 意外注册到另一个集群 namenode 上
  • storageType:解释文件存储的过程数据结构信息(如果是 DataNode,storageType=DATA_NODE);
  • cTime:NameNode 存储系统创建时间,第一个格式化文件系统 0.文件系统升级后,该值将更新到升级后的时间戳;
  • layoutVersion :表示 HDFS 永久性数据结构的版本信息是负整数。

3.SecondaryNameNode:

> 原因: HDFS 集群运行一段事件后

  • edit logs 文件变化很大,如何管理文件是一个挑战。
  • NameNode 重启会需要很长时间,因为有很多变化需要合并 fsimage 文件上。
  • 如果 NameNode 挂断了,就失去了一些变化。因为这个时候 fsimage 文件很旧。

作用:减小sedit logs获得最新文件的大小和大小fsimage 文件,减少namenode压力。相当于windows恢复功能(可以说是快照) 职责:其职责是合并 NameNode的editlogs到fsimage文件中。

4.checkpoint

> 简介:

每次达到触发条件,都会通过secondary namenode 将 namenode 积累的一切 edits 和一个 最新的 fsimage 下载到本地并加载到内存 merge(这个过程叫 checkpoint)

> Checkpoint 触发条件

  • dfs.namenode.checkpoint.period:两次连续的 checkpoint 时间间隔。默认情况下。 1 小时
  • dfs.namenode.checkpoint.txns:最大的没有执行 checkpoint 事务的数量将被迫执行 checkpoint,即使检查点周期尚未达到。默认设置为 100 万

拓展

1.hdfs oiv命令

命令hdfs oiv用于将fsimage,edits文件转换为文本文件等其他格式XML文件。 > HDFS查看fsimage,edits

命令说明 > 必要参数

-i,–inputFile <arg> 输入FSImage文件.

-o,–outputFile <arg> 如果存在输出转换后的文件,它将被覆盖

> 可选参数:

-p,–processor <arg> 将FSImage文件转换成哪种格式: (Ls|XML|FileDistribution).默认为Ls.

-h,–help 显示帮助信息

hdfs oiv -i fsimage_0000000000016975189 -o 123.xml

hdfs oiv -i /var/lib/hadoop-yarn/test00001/data/fsimage_0000000000016975189 -o fsimage.txt

2.hadoop命令fsck命令

在HDFS中,提供了fsck用于检查的命令HDFS上述文件和目录的健康状况,获取文件block块信息、位置信息等。 > 具体命令介绍

  • - move: 移动损坏的文件到/lost found目录下
  • - delete: 删除损坏的文件
  • - openforwrite: 输出检测中正在写的文件
  • - list-corruptfileblocks: 输出损坏的块及其文件
  • - files: 输出正在检测的文件
  • - blocks: 输出block的详细报告 (需要和-files一起使用参数)
  • - locations: 输出block的位置信息 (需要和-files一起使用参数)
  • - racks: 输出文件块位置的机架信息(需要和-files一起使用参数)

例如要查看HDFS中文件block块的具体分布,可以这样写:

hadoop fsck /yor_file_path -files -blocks -locations -racks 

 

> 实例

$ hadoop fsck /qpf/yyd/test/job.properties -files -blocks  -locations -racks
DEPRECATED: Use of this script to execute hdfs command is deprecated.
Instead use the hdfs command for it.

Connecting to namenode via http://yhml01cs002:50070/fsck?ugi=yarn&files=1&blocks=1&locations=1&racks=1&path=%2Fqpf%2Fyyd%2Ftest%2Fjob.properties
FSCK started by yarn (auth:SIMPLE) from /172.20.1.36 for path /qpf/yyd/test/job.properties at Mon Nov 05 18:39:04 CST 2018
/qpf/yyd/test/job.properties 276 bytes, 1 block(s):  OK
0. BP-824456762-192.168.20.39-1508928616349:blk_1074586437_845778 len=276 Live_repl=3 [/default/172.20.1.36:50010, /default/172.20.1.37:50010, /default/172.20.1.38:50010]

Status: HEALTHY
 Total size:    276 B
 Total dirs:    0
 Total files:    1
 Total symlinks:        0
 Total blocks (validated):    1 (avg. block size 276 B)
 Minimally replicated blocks:    1 (100.0 %)
 Over-replicated blocks:    0 (0.0 %)
 Under-replicated blocks:    0 (0.0 %)
 Mis-replicated blocks:        0 (0.0 %)
 Default replication factor:    3
 Average block replication:    3.0
 Corrupt blocks:        0
 Missing replicas:        0 (0.0 %)
 Number of data-nodes:        3
 Number of racks:        1
FSCK ended at Mon Nov 05 18:39:04 CST 2018 in 3 milliseconds


The filesystem under path '/qpf/yyd/test/job.properties' is HEALTHY

> 参数解释

0. 表示block个数; BP-824456762-192.168.20.39-1508928616349:blk_1074586437_845778表示block id;  len=276 表示该文件块大小;  Live_repl=3 表示该block块的副本数; 

3.datanode存储目录说明

current目录:真正存放block数据块文件的地方 tmp目录:这个目录主要临时存放一些正在写入的block数据文件,成功写入完成后这个临时文件就会从tmp目录移动到current目录。

> 其中subdir说明

[yarn@yhml01cs005 ~]$ cd /home/yhml01/dfs/dn/current/BP-824456762-192.168.20.39-1508928616349/current/finalized

[yarn@yhml01cs005 finalized]$ ll
total 164
drwxr-xr-x 258 hdfs hdfs 8192 Dec  5  2017 subdir0
drwxr-xr-x 258 hdfs hdfs 8192 Jan  9  2018 subdir1
drwxr-xr-x 258 hdfs hdfs 8192 Feb  8  2018 subdir2

[yarn@yhml01cs005 subdir1]$ ll
total 52176
-rw-r--r-- 1 hdfs hdfs   999018 Dec 18  2017 blk_1073824301
-rw-r--r-- 1 hdfs hdfs     7815 Dec 18  2017 blk_1073824301_83516.meta
-rw-r--r-- 1 hdfs hdfs  8042801 Dec 18  2017 blk_1073824302
-rw-r--r-- 1 hdfs hdfs    62843 Dec 18  2017 blk_1073824302_83517.meta
-rw-r--r-- 1 hdfs hdfs  4356708 Dec 18  2017 blk_1073824303
-rw-r--r-- 1 hdfs hdfs    34047 Dec 18  2017 blk_1073824303_83518.meta
-rw-r--r-- 1 hdfs hdfs  1483913 Dec 18  2017 blk_1073824304
-rw-r--r-- 1 hdfs hdfs    11603 Dec 18  2017 blk_1073824304_83519.meta
-rw-r--r-- 1 hdfs hdfs  8042801 Dec 18  2017 blk_1073824305

可以看到这个目录主要存放了block数据文件,block数据文件的命名规则是blk_$BLOCKID$,还有就是block文件的元数据文件,元数据文件的命名规则是:blk_$BLOCKID$_$时间戳$,同时大家可以看到很多累似subdir00命名的文件夹,这些文件夹其中存放的也是block数据文件及其元数据文件,hadoop规定每个目录存放的block数据文件个数是有限制的,达到限制之后就会新建sub子目录进行存放,这些sub子目录包括current目录,都会和一个FSDir对象对应。

ps:机器不同配置的目录不同(dfs.data.dir, dfs.datanode.data.dir配置)  

 

标签: fqpf10n60c二三极管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台