|
||||||||||
| 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(org.apache.hadoop.hdfs.server.namenode.FSDirectory fsdir)
|
|
| Method Summary | |
|---|---|
void |
addSnapshottable(INodeDirectory 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 |
SnapshotDiffReport |
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()
|
SnapshotInfo.Bean[] |
getSnapshots()
Return the list of snapshots |
SnapshottableDirectoryStatus.Bean[] |
getSnapshottableDirectories()
Return the list of snapshottable directories |
SnapshottableDirectoryStatus[] |
getSnapshottableDirListing(String userName)
List all the snapshottable directories that are owned by the current user. |
INodeDirectory |
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 |
registerMXBean()
|
void |
removeSnapshottable(List<INodeDirectory> 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. |
void |
shutdown()
|
static 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. |
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
public SnapshotManager(org.apache.hadoop.hdfs.server.namenode.FSDirectory fsdir)
| Method Detail |
|---|
public void setSnapshottable(String path,
boolean checkNestedSnapshottable)
throws IOException
IOExceptionpublic void addSnapshottable(INodeDirectory dir)
snapshottables.
public void removeSnapshottable(List<INodeDirectory> toRemove)
snapshottables
public void resetSnapshottable(String path)
throws IOException
SnapshotException - if there are snapshots in the directory.
IOException
public INodeDirectory 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()
public int getNumSnapshots()
public void write(DataOutput out)
throws IOException
snapshotCounter, numSnapshots,
and all snapshots to the DataOutput.
IOException
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 SnapshotDiffReport diff(String path,
String from,
String to)
throws IOException
IOExceptionpublic void clearSnapshottableDirs()
public int getMaxSnapshotID()
public void registerMXBean()
public void shutdown()
public SnapshottableDirectoryStatus.Bean[] getSnapshottableDirectories()
SnapshotStatsMXBean
getSnapshottableDirectories in interface SnapshotStatsMXBeanpublic SnapshotInfo.Bean[] getSnapshots()
SnapshotStatsMXBean
getSnapshots in interface SnapshotStatsMXBeanpublic static SnapshottableDirectoryStatus.Bean toBean(INodeDirectory d)
public static SnapshotInfo.Bean toBean(org.apache.hadoop.hdfs.server.namenode.snapshot.Snapshot s)
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||