|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.apache.hadoop.hdfs.server.namenode.snapshot.SnapshotManager
public class SnapshotManager
Manage snapshottable directories and their snapshots.
This class includes operations that create, access, modify snapshots and/or
snapshot-related data. In general, the locking structure of snapshot
operations is:
1. Lock the FSNamesystem lock in FSNamesystem before calling
into SnapshotManager methods.
2. Lock the FSDirectory lock for the SnapshotManager methods
if necessary.
| Constructor Summary | |
|---|---|
SnapshotManager(FSDirectory fsdir)
|
|
| Method Summary | |
|---|---|
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. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public SnapshotManager(FSDirectory fsdir)
| Method Detail |
|---|
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)
snapshottables
public void resetSnapshottable(String path)
throws IOException
SnapshotException - if there are snapshots in the directory.
IOException
public 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 quota
public 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 blocksMap
IOException
public 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 snapshot
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()
getNumSnapshottableDirs in interface SnapshotStatspublic int getNumSnapshots()
getNumSnapshots in interface SnapshotStats
public 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 DataInput
IOExceptionpublic 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()
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||