public class SnapshotManager extends Object implements SnapshotStats
FSNamesystem lock in FSNamesystem before calling
into SnapshotManager methods.FSDirectory lock for the SnapshotManager methods
if necessary.| Constructor and Description |
|---|
SnapshotManager(FSDirectory fsdir) |
| Modifier and Type | Method and Description |
|---|---|
void |
addSnapshottable(org.apache.hadoop.hdfs.server.namenode.snapshot.INodeDirectorySnapshottable dir)
Add the given snapshottable directory to
snapshottables. |
void |
clearSnapshottableDirs() |
String |
createSnapshot(String path,
String snapshotName)
Create a snapshot of the given path.
|
void |
deleteSnapshot(String path,
String snapshotName,
INode.BlocksMapUpdateInfo collectedBlocks,
List<org.apache.hadoop.hdfs.server.namenode.INode> removedINodes)
Delete a snapshot for a snapshottable directory
|
INodeDirectorySnapshottable.SnapshotDiffInfo |
diff(String path,
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() |
SnapshottableDirectoryStatus[] |
getSnapshottableDirListing(String userName)
List all the snapshottable directories that are owned by the current user.
|
org.apache.hadoop.hdfs.server.namenode.snapshot.INodeDirectorySnapshottable |
getSnapshottableRoot(String path)
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 |
removeSnapshottable(List<org.apache.hadoop.hdfs.server.namenode.snapshot.INodeDirectorySnapshottable> toRemove)
Remove snapshottable directories from
snapshottables |
void |
renameSnapshot(String path,
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.
|
public SnapshotManager(FSDirectory fsdir)
public void setSnapshottable(String path, boolean checkNestedSnapshottable) throws IOException
IOExceptionpublic void addSnapshottable(org.apache.hadoop.hdfs.server.namenode.snapshot.INodeDirectorySnapshottable dir)
snapshottables.public void removeSnapshottable(List<org.apache.hadoop.hdfs.server.namenode.snapshot.INodeDirectorySnapshottable> toRemove)
snapshottablespublic void resetSnapshottable(String path) throws IOException
SnapshotException - if there are snapshots in the directory.IOExceptionpublic org.apache.hadoop.hdfs.server.namenode.snapshot.INodeDirectorySnapshottable getSnapshottableRoot(String path) throws IOException
path - The directory path where the snapshot will be taken.IOException - Throw IOException when the given path does not lead to an
existing snapshottable directory.public String createSnapshot(String path, String snapshotName) throws IOException
path - The directory path where the snapshot will be taken.snapshotName - 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(String path, String snapshotName, INode.BlocksMapUpdateInfo collectedBlocks, List<org.apache.hadoop.hdfs.server.namenode.INode> removedINodes) throws IOException
path - Path to the directory where the snapshot was takensnapshotName - Name of the snapshot to be deletedcollectedBlocks - Used to collect information to update blocksMapIOExceptionpublic void renameSnapshot(String path, String oldSnapshotName, String newSnapshotName) throws IOException
path - The directory path where the snapshot was takenoldSnapshotName - 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()
getNumSnapshottableDirs in interface SnapshotStatspublic int getNumSnapshots()
getNumSnapshots in interface SnapshotStatspublic 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 SnapshottableDirectoryStatus[] getSnapshottableDirListing(String userName)
userName - Current user name.SnapshottableDirectoryStatus. If
userName is null, return all the snapshottable dirs.public INodeDirectorySnapshottable.SnapshotDiffInfo diff(String path, String from, String to) throws IOException
IOExceptionpublic void clearSnapshottableDirs()
public int getMaxSnapshotID()
Copyright © 2014 Apache Software Foundation. All Rights Reserved.