@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.FileWrapper 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.Fileinterface, which is used internally for handling
 archival/removal of files | 
| private static class  | HFileArchiver.FileStatusConverterConvert a FileStatus to something we can manage in the archiving | 
| private static class  | HFileArchiver.StoreToFileConvert the  HStoreFileinto something we can manage in the archive
 methods | 
| Modifier and Type | Field and Description | 
|---|---|
| private static ThreadPoolExecutor | archiveExecutor | 
| private static int | DEFAULT_RETRIES_NUMBERNumber 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) | 
| 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
IOExceptionpublic 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 deletedIOExceptionpublic 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 IOExceptionIOException - 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
IOExceptionpublic 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.