HADOOP之HDFS 的数据管理与策略选择----HDFS 快照管理(3)

HDFS 快照管理

1.快照概念

     原则:只做差异的记录;对于大多数不变的数据,是当前物理路径所指的内容,发生变更的INode数据会被额外的拷贝。

2.HDFS 中的快照相关命令

hadoop fs

[-createSnapshot <snapshotDir> [<snapshotName>]]

[-deleteSnapshot <snapshotDir> <snapshotName>]

[-renameSnapshot <snapshotDir> <oldName> <newName>]

hdfs fs

snapshotDiff  diff two snapshots of a directory or diff the current directory  contents with a snapshot

lsSnapshottableDir   list all snapshottable dirs owned by the current user

Use -help to see options

命令中的两个概念:快照目录,具体快照。

 

3.HDFS 内部的快照管理机制

1.快照结构关系

    

                                                                                              图 快照结构图

2.快照调用流程

                                                                                                图 快照调用流程

3.快照原理实现分析

两个关注点:

     A.快照如何生成,如何做到目录结构和原目录结构完全一致。

     B.快照之间是如何比较出差异的。

关注点A:

从SnapshotManager#createSnapshot()方法的源码分析。

HDFS 中只为每个快照保存相对当时快照创建时间点发生过变更的 INode 信息,只是“存不同”。

获取快照信息时,根据快照 Id 和当前没发生过变更的 INode 信息 进行对应恢复。

 

关注点B:

从SnapshotManager#diff()方法的源码分析。

生成 SnapshotDifflnfo 对象,此对象里面包 了源 、目标快照间发生变更 文件目录信息。

根据发生变更的文件目录信息生 diff 报告。这里有两点:SnapshotDifflnfo 对象的构造产生 和 SnapshotDifflnfo 的报告生成。

SnapshotDifflnfo类中维护了3大类信息:

所有被修改过的文件/目录,不包括新建和删除操作。

所有目录下的被创建和删除的子文件。

所有被重命名过的文件/目录信息。

SnapshotDifflnfo 的报告生成:

SnapshotDifflnfo#generateReport()方法.

 

注意:

  1. 在创建快照目录前,需要对目标目录执行allowSnapshot操作。
  2. 原则:不允许创建出网状关系的快照目录(子目录不能为快照目录)

 

5.HDFS 的快照使用

     丢失数据的恢复

     元数据的差异比较

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值