public class SnapshotManager extends Object implements SnapshotStatsMXBean
FSNamesystem lock in FSNamesystem before calling
into SnapshotManager methods.FSDirectory lock for the SnapshotManager methods
if necessary.| Modifier and Type | Field and Description |
|---|---|
static org.slf4j.Logger |
LOG |
| Constructor and Description |
|---|
SnapshotManager(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hdfs.server.namenode.FSDirectory fsdir) |
| Modifier and Type | Method and Description |
|---|---|
void |
addSnapshottable(INodeDirectory dir)
Add the given snapshottable directory to
snapshottables. |
void |
clearSnapshottableDirs() |
String |
createSnapshot(org.apache.hadoop.hdfs.server.namenode.LeaseManager leaseManager,
INodesInPath iip,
String snapshotRoot,
String snapshotName,
long mtime)
Create a snapshot of the given path.
|
void |
deleteSnapshot(INodesInPath iip,
String snapshotName,
INode.ReclaimContext reclaimContext,
long now)
Delete a snapshot for a snapshottable directory
|
org.apache.hadoop.hdfs.protocol.SnapshotDiffReport |
diff(INodesInPath iip,
String snapshotPath,
String from,
String to)
Compute the difference between two snapshots of a directory, or between a
snapshot of the directory and its current tree.
|
org.apache.hadoop.hdfs.protocol.SnapshotDiffReportListing |
diff(INodesInPath iip,
String snapshotPath,
String from,
String to,
byte[] startPath,
int index,
int snapshotDiffReportLimit)
Compute the partial difference between two snapshots of a directory,
or between a snapshot of the directory and its current tree.
|
int |
getMaxSnapshotID()
Returns the maximum allowable snapshot ID based on the bit width of the
snapshot ID.
|
int |
getNumSnapshots() |
int |
getNumSnapshottableDirs() |
boolean |
getSkipCaptureAccessTimeOnlyChange() |
SnapshotInfo.Bean[] |
getSnapshots()
Return the list of snapshots
|
INodeDirectory |
getSnapshottableAncestorDir(INodesInPath iip)
Get the snapshot root directory for the given directory.
|
org.apache.hadoop.hdfs.protocol.SnapshottableDirectoryStatus.Bean[] |
getSnapshottableDirectories()
Return the list of snapshottable directories
|
org.apache.hadoop.hdfs.protocol.SnapshottableDirectoryStatus[] |
getSnapshottableDirListing(String userName)
List all the snapshottable directories that are owned by the current user.
|
INodeDirectory |
getSnapshottableRoot(INodesInPath iip)
Find the source root directory where the snapshot will be taken
for a given path.
|
boolean |
isAllowNestedSnapshots() |
boolean |
isDescendantOfSnapshotRoot(INodeDirectory dir) |
Map<Integer,org.apache.hadoop.hdfs.server.namenode.snapshot.Snapshot> |
read(DataInput in,
FSImageFormat.Loader loader)
Read values of
snapshotCounter, numSnapshots, and
all snapshots from the DataInput |
void |
registerMXBean() |
void |
removeSnapshottable(List<INodeDirectory> toRemove)
Remove snapshottable directories from
snapshottables |
void |
renameSnapshot(INodesInPath iip,
String snapshotRoot,
String oldSnapshotName,
String newSnapshotName,
long now)
Rename the given snapshot
|
void |
resetSnapshottable(String path)
Set the given snapshottable directory to non-snapshottable.
|
void |
setSnapshottable(String path,
boolean checkNestedSnapshottable)
Set the given directory as a snapshottable directory.
|
void |
shutdown() |
static org.apache.hadoop.hdfs.protocol.SnapshottableDirectoryStatus.Bean |
toBean(INodeDirectory d) |
static SnapshotInfo.Bean |
toBean(org.apache.hadoop.hdfs.server.namenode.snapshot.Snapshot s) |
void |
write(DataOutput out)
Write
snapshotCounter, numSnapshots,
and all snapshots to the DataOutput. |
public SnapshotManager(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.hdfs.server.namenode.FSDirectory fsdir)
public boolean getSkipCaptureAccessTimeOnlyChange()
public boolean isAllowNestedSnapshots()
public void setSnapshottable(String path, boolean checkNestedSnapshottable) throws IOException
IOExceptionpublic void addSnapshottable(INodeDirectory dir)
snapshottables.public void removeSnapshottable(List<INodeDirectory> toRemove)
snapshottablespublic void resetSnapshottable(String path) throws IOException
SnapshotException - if there are snapshots in the directory.IOExceptionpublic INodeDirectory getSnapshottableRoot(INodesInPath iip) throws IOException
IOException - Throw IOException when the given path does not lead to an
existing snapshottable directory.public INodeDirectory getSnapshottableAncestorDir(INodesInPath iip) throws IOException
iip - INodesInPath for the directory to get snapshot root.IOExceptionpublic boolean isDescendantOfSnapshotRoot(INodeDirectory dir)
public String createSnapshot(org.apache.hadoop.hdfs.server.namenode.LeaseManager leaseManager, INodesInPath iip, String snapshotRoot, String snapshotName, long mtime) throws IOException
iip - the INodes resolved from the snapshottable directory's pathsnapshotName - The name of the snapshot.mtime - is the snapshot creation time set by Time.now().IOException - Throw IOException when 1) the given path does not lead to an
existing snapshottable directory, and/or 2) there exists a
snapshot with the given name for the directory, and/or 3)
snapshot number exceeds quotapublic void deleteSnapshot(INodesInPath iip, String snapshotName, INode.ReclaimContext reclaimContext, long now) throws IOException
snapshotName - Name of the snapshot to be deletednow - is the snapshot deletion time set by Time.now().reclaimContext - Used to collect information to reclaim blocks
and inodesIOExceptionpublic void renameSnapshot(INodesInPath iip, String snapshotRoot, String oldSnapshotName, String newSnapshotName, long now) throws IOException
oldSnapshotName - Old name of the snapshotnewSnapshotName - New name of the snapshotnow - is the snapshot modification time set by Time.now().IOException - Throw IOException when 1) the given path does not lead to an
existing snapshottable directory, and/or 2) the snapshot with the
old name does not exist for the directory, and/or 3) there exists
a snapshot with the new name for the directorypublic int getNumSnapshottableDirs()
public int getNumSnapshots()
public void write(DataOutput out) throws IOException
snapshotCounter, numSnapshots,
and all snapshots to the DataOutput.IOExceptionpublic Map<Integer,org.apache.hadoop.hdfs.server.namenode.snapshot.Snapshot> read(DataInput in, FSImageFormat.Loader loader) throws IOException
snapshotCounter, numSnapshots, and
all snapshots from the DataInputIOExceptionpublic org.apache.hadoop.hdfs.protocol.SnapshottableDirectoryStatus[] getSnapshottableDirListing(String userName)
userName - Current user name.SnapshottableDirectoryStatus. If
userName is null, return all the snapshottable dirs.public org.apache.hadoop.hdfs.protocol.SnapshotDiffReport diff(INodesInPath iip, String snapshotPath, String from, String to) throws IOException
IOExceptionpublic org.apache.hadoop.hdfs.protocol.SnapshotDiffReportListing diff(INodesInPath iip, String snapshotPath, String from, String to, byte[] startPath, int index, int snapshotDiffReportLimit) throws IOException
IOExceptionpublic void clearSnapshottableDirs()
public int getMaxSnapshotID()
public void registerMXBean()
public void shutdown()
public org.apache.hadoop.hdfs.protocol.SnapshottableDirectoryStatus.Bean[] getSnapshottableDirectories()
SnapshotStatsMXBeangetSnapshottableDirectories in interface SnapshotStatsMXBeanpublic SnapshotInfo.Bean[] getSnapshots()
SnapshotStatsMXBeangetSnapshots in interface SnapshotStatsMXBeanpublic static org.apache.hadoop.hdfs.protocol.SnapshottableDirectoryStatus.Bean toBean(INodeDirectory d)
public static SnapshotInfo.Bean toBean(org.apache.hadoop.hdfs.server.namenode.snapshot.Snapshot s)
Copyright © 2008–2023 Apache Software Foundation. All rights reserved.