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.apache.commons.logging.Log |
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)
Create a snapshot of the given path.
|
void |
deleteSnapshot(INodesInPath iip,
String snapshotName,
INode.ReclaimContext reclaimContext)
Delete a snapshot for a snapshottable directory
|
org.apache.hadoop.hdfs.protocol.SnapshotDiffReport |
diff(INodesInPath iip,
String snapshotRootPath,
String from,
String to)
Compute the 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
|
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.
|
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)
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 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 String createSnapshot(org.apache.hadoop.hdfs.server.namenode.LeaseManager leaseManager, INodesInPath iip, String snapshotRoot, String snapshotName) throws IOException
iip - the INodes resolved from the snapshottable directory's pathsnapshotName - The name of the snapshot.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) throws IOException
snapshotName - Name of the snapshot to be deletedreclaimContext - Used to collect information to reclaim blocks
and inodesIOExceptionpublic void renameSnapshot(INodesInPath iip, String snapshotRoot, String oldSnapshotName, String newSnapshotName) throws IOException
oldSnapshotName - Old name of the snapshotnewSnapshotName - New name of the snapshotIOException - 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 snapshotRootPath, String from, String to) 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 © 2022 Apache Software Foundation. All rights reserved.