@InterfaceAudience.Private public class HFileArchiver extends Object
StoreFiles
)
for a HRegion from the FileSystem
. The hfiles will be archived or deleted, depending on
the state of the system.Modifier and Type | Class and Description |
---|---|
private static class |
HFileArchiver.File
Wrapper to handle file operations uniformly
|
private static class |
HFileArchiver.FileablePath
|
private static class |
HFileArchiver.FileableStoreFile
|
private static class |
HFileArchiver.FileConverter<T>
Adapt a type to match the
HFileArchiver.File interface, which is used internally for handling
archival/removal of files |
private static class |
HFileArchiver.FileStatusConverter
Convert a FileStatus to something we can manage in the archiving
|
private static class |
HFileArchiver.StoreToFile
Convert the
HStoreFile into something we can manage in the archive methods |
Modifier and Type | Field and Description |
---|---|
private static ThreadPoolExecutor |
archiveExecutor |
private static int |
DEFAULT_RETRIES_NUMBER
Number of retries in case of fs operation failure
|
private static Function<HFileArchiver.File,org.apache.hadoop.fs.Path> |
FUNC_FILE_TO_PATH |
private static org.slf4j.Logger |
LOG |
private static String |
SEPARATOR |
Modifier | Constructor and Description |
---|---|
private |
HFileArchiver() |
Modifier and Type | Method and Description |
---|---|
private static void |
archive(org.apache.hadoop.fs.FileSystem fs,
RegionInfo regionInfo,
byte[] family,
Collection<HStoreFile> compactedFiles,
org.apache.hadoop.fs.Path storeArchiveDir) |
static void |
archiveFamily(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.conf.Configuration conf,
RegionInfo parent,
org.apache.hadoop.fs.Path tableDir,
byte[] family)
Remove from the specified region the store files of the specified column family, either by
archiving them or outright deletion
|
static void |
archiveFamilyByFamilyDir(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.conf.Configuration conf,
RegionInfo parent,
org.apache.hadoop.fs.Path familyDir,
byte[] family)
Removes from the specified region the store files of the specified column family, either by
archiving them or outright deletion
|
static void |
archiveRecoveredEdits(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
RegionInfo regionInfo,
byte[] family,
Collection<HStoreFile> replayedEdits)
Archive recovered edits using existing logic for archiving store files.
|
static void |
archiveRegion(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
RegionInfo info)
Cleans up all the files for a HRegion by archiving the HFiles to the archive directory
|
static boolean |
archiveRegion(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootdir,
org.apache.hadoop.fs.Path tableDir,
org.apache.hadoop.fs.Path regionDir)
Remove an entire region from the table directory via archiving the region's hfiles.
|
static void |
archiveRegions(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path rootDir,
org.apache.hadoop.fs.Path tableDir,
List<org.apache.hadoop.fs.Path> regionDirList)
Archive the specified regions in parallel.
|
static void |
archiveStoreFile(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
RegionInfo regionInfo,
org.apache.hadoop.fs.Path tableDir,
byte[] family,
org.apache.hadoop.fs.Path storeFile)
Archive the store file
|
static void |
archiveStoreFiles(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
RegionInfo regionInfo,
org.apache.hadoop.fs.Path tableDir,
byte[] family,
Collection<HStoreFile> compactedFiles)
Remove the store files, either by archiving them or outright deletion
|
private static boolean |
deleteRegionWithoutArchiving(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path regionDir)
Without regard for backup, delete a region.
|
private static void |
deleteStoreFilesWithoutArchiving(Collection<HStoreFile> compactedFiles)
Just do a simple delete of the given store files
|
static boolean |
exists(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
RegionInfo info)
Returns True if the Region exits in the filesystem.
|
private static ThreadPoolExecutor |
getArchiveExecutor(org.apache.hadoop.conf.Configuration conf) |
private static ThreadFactory |
getThreadFactory() |
private static List<HFileArchiver.File> |
resolveAndArchive(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path baseArchiveDir,
Collection<HFileArchiver.File> toArchive,
long start)
Resolve any conflict with an existing archive file via timestamp-append renaming of the
existing file and then archive the passed in files.
|
private static boolean |
resolveAndArchiveFile(org.apache.hadoop.fs.Path archiveDir,
HFileArchiver.File currentFile,
String archiveStartTime)
Attempt to archive the passed in file to the archive directory.
|
private static final org.slf4j.Logger LOG
private static final String SEPARATOR
private static final int DEFAULT_RETRIES_NUMBER
private static final Function<HFileArchiver.File,org.apache.hadoop.fs.Path> FUNC_FILE_TO_PATH
private static ThreadPoolExecutor archiveExecutor
private HFileArchiver()
public static boolean exists(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, RegionInfo info) throws IOException
IOException
public static void archiveRegion(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, RegionInfo info) throws IOException
conf
- the configuration to usefs
- the file system objectinfo
- RegionInfo for region to be deletedIOException
public static boolean archiveRegion(org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path rootdir, org.apache.hadoop.fs.Path tableDir, org.apache.hadoop.fs.Path regionDir) throws IOException
fs
- FileSystem
from which to remove the regionrootdir
- Path
to the root directory where hbase files are stored (for building
the archive path)tableDir
- Path
to where the table is being stored (for building the archive
path)regionDir
- Path
to where a region is being stored (for building the archive path)IOException
- if the request cannot be completedpublic static void archiveRegions(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path rootDir, org.apache.hadoop.fs.Path tableDir, List<org.apache.hadoop.fs.Path> regionDirList) throws IOException
conf
- the configuration to usefs
- FileSystem
from which to remove the regionrootDir
- Path
to the root directory where hbase files are stored (for
building the archive path)tableDir
- Path
to where the table is being stored (for building the archive
path)regionDirList
- Path
to where regions are being stored (for building the archive
path)IOException
- if the request cannot be completedprivate static ThreadPoolExecutor getArchiveExecutor(org.apache.hadoop.conf.Configuration conf)
private static ThreadFactory getThreadFactory()
public static void archiveFamily(org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.conf.Configuration conf, RegionInfo parent, org.apache.hadoop.fs.Path tableDir, byte[] family) throws IOException
fs
- the filesystem where the store files liveconf
- Configuration
to examine to determine the archive directoryparent
- Parent region hosting the store filestableDir
- Path
to where the table is being stored (for building the archive path)family
- the family hosting the store filesIOException
- if the files could not be correctly disposed.public static void archiveFamilyByFamilyDir(org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.conf.Configuration conf, RegionInfo parent, org.apache.hadoop.fs.Path familyDir, byte[] family) throws IOException
fs
- the filesystem where the store files liveconf
- Configuration
to examine to determine the archive directoryparent
- Parent region hosting the store filesfamilyDir
- Path
to where the family is being storedfamily
- the family hosting the store filesIOException
- if the files could not be correctly disposed.public static void archiveStoreFiles(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, RegionInfo regionInfo, org.apache.hadoop.fs.Path tableDir, byte[] family, Collection<HStoreFile> compactedFiles) throws IOException
conf
- Configuration
to examine to determine the archive directoryfs
- the filesystem where the store files liveregionInfo
- RegionInfo
of the region hosting the store filesfamily
- the family hosting the store filescompactedFiles
- files to be disposed of. No further reading of these files should be
attempted; otherwise likely to cause an IOException
IOException
- if the files could not be correctly disposed.public static void archiveRecoveredEdits(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, RegionInfo regionInfo, byte[] family, Collection<HStoreFile> replayedEdits) throws IOException
conf
- Configuration
to determine the archive directory.fs
- the filesystem used for storing WAL files.regionInfo
- RegionInfo
a pseudo region representation for the archiving logic.family
- a pseudo familiy representation for the archiving logic.replayedEdits
- the recovered edits to be archived.IOException
- if files can't be achived due to some internal error.private static void archive(org.apache.hadoop.fs.FileSystem fs, RegionInfo regionInfo, byte[] family, Collection<HStoreFile> compactedFiles, org.apache.hadoop.fs.Path storeArchiveDir) throws IOException
IOException
public static void archiveStoreFile(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, RegionInfo regionInfo, org.apache.hadoop.fs.Path tableDir, byte[] family, org.apache.hadoop.fs.Path storeFile) throws IOException
fs
- the filesystem where the store files liveregionInfo
- region hosting the store filesconf
- Configuration
to examine to determine the archive directorytableDir
- Path
to where the table is being stored (for building the archive
path)family
- the family hosting the store filesstoreFile
- file to be archivedIOException
- if the files could not be correctly disposed.private static List<HFileArchiver.File> resolveAndArchive(org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path baseArchiveDir, Collection<HFileArchiver.File> toArchive, long start) throws IOException
fs
- FileSystem
on which to archive the filesbaseArchiveDir
- base archive directory to store the files. If any of the files to archive
are directories, will append the name of the directory to the base
archive directory name, creating a parallel structure.toArchive
- files/directories that need to be archviedstart
- time the archiving started - used for resolving archive conflicts.IOException
- if an unexpected file operation exception occurredprivate static boolean resolveAndArchiveFile(org.apache.hadoop.fs.Path archiveDir, HFileArchiver.File currentFile, String archiveStartTime) throws IOException
If the same file already exists in the archive, it is moved to a timestamped directory under the archive directory and the new file is put in its place.
archiveDir
- Path
to the directory that stores the archives of the hfilescurrentFile
- Path
to the original HFile that will be archivedarchiveStartTime
- time the archiving started, to resolve naming conflictsIOException
- on failure to complete FileSystem
operations.private static boolean deleteRegionWithoutArchiving(org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path regionDir) throws IOException
regionDir
- Path
to the region to be deleted.fs
- FileSystem from which to delete the regionIOException
- on filesystem operation failureprivate static void deleteStoreFilesWithoutArchiving(Collection<HStoreFile> compactedFiles) throws IOException
A best effort is made to delete each of the files, rather than bailing on the first failure.
compactedFiles
- store files to delete from the file system.IOException
- if a file cannot be deleted. All files will be attempted to deleted before
throwing the exception, rather than failing at the first file.Copyright © 2007–2020 The Apache Software Foundation. All rights reserved.