@InterfaceAudience.Private public class HRegionFileSystem extends Object
Modifier and Type | Field and Description |
---|---|
private int |
baseSleepBeforeRetries |
private org.apache.hadoop.conf.Configuration |
conf |
private static int |
DEFAULT_BASE_SLEEP_BEFORE_RETRIES |
private static int |
DEFAULT_HDFS_CLIENT_RETRIES_NUMBER |
private org.apache.hadoop.fs.FileSystem |
fs |
private int |
hdfsClientRetriesNumber
In order to handle NN connectivity hiccups, one need to retry non-idempotent operation at the
client level.
|
private static org.apache.commons.logging.Log |
LOG |
static String |
REGION_INFO_FILE
Name of the region info file that resides just under the region directory.
|
static String |
REGION_MERGES_DIR
Temporary subdirectory of the region directory used for merges.
|
static String |
REGION_SPLITS_DIR
Temporary subdirectory of the region directory used for splits.
|
private static String |
REGION_TEMP_DIR
Temporary subdirectory of the region directory used for compaction output.
|
private HRegionInfo |
regionInfo |
private HRegionInfo |
regionInfoForFs |
private org.apache.hadoop.fs.Path |
tableDir |
Constructor and Description |
---|
HRegionFileSystem(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path tableDir,
HRegionInfo regionInfo)
Create a view to the on-disk region
|
Modifier and Type | Method and Description |
---|---|
(package private) org.apache.hadoop.fs.Path |
bulkLoadStoreFile(String familyName,
org.apache.hadoop.fs.Path srcPath,
long seqNum)
Bulk load: Add a specified store file to the specified family.
|
(package private) void |
checkRegionInfoOnFilesystem()
Write out an info file under the stored region directory.
|
(package private) void |
cleanupAnySplitDetritus()
Clean up any split detritus that may have been left around from previous
split attempts.
|
(package private) void |
cleanupDaughterRegion(HRegionInfo regionInfo)
Remove daughter region
|
(package private) void |
cleanupMergedRegion(HRegionInfo mergedRegion)
Remove merged region
|
(package private) void |
cleanupMergesDir()
Clean up any merge detritus that may have been left around from previous merge attempts.
|
(package private) void |
cleanupSplitsDir()
Clean up any split detritus that may have been left around from previous split attempts.
|
(package private) void |
cleanupTempDir()
Clean up any temp detritus that may have been left around from previous operation attempts.
|
(package private) org.apache.hadoop.fs.Path |
commitDaughterRegion(HRegionInfo regionInfo)
Commit a daughter region, moving it from the split temporary directory
to the proper location in the filesystem.
|
(package private) void |
commitMergedRegion(HRegionInfo mergedRegionInfo)
Commit a merged region, moving it from the merges temporary directory to
the proper location in the filesystem.
|
org.apache.hadoop.fs.Path |
commitStoreFile(String familyName,
org.apache.hadoop.fs.Path buildPath)
Move the file from a build/temp location to the main family store directory.
|
private org.apache.hadoop.fs.Path |
commitStoreFile(String familyName,
org.apache.hadoop.fs.Path buildPath,
long seqNum,
boolean generateNewName)
Move the file from a build/temp location to the main family store directory.
|
(package private) void |
commitStoreFiles(Map<byte[],List<StoreFile>> storeFiles)
Moves multiple store files to the relative region's family store directory.
|
(package private) boolean |
createDir(org.apache.hadoop.fs.Path dir)
Creates a directory.
|
private static boolean |
createDirOnFileSystem(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.Path dir)
Creates a directory for a filesystem and configuration object.
|
(package private) void |
createMergesDir()
Create the region merges directory.
|
static HRegionFileSystem |
createRegionOnFileSystem(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path tableDir,
HRegionInfo regionInfo)
Create a new Region on file-system.
|
(package private) void |
createSplitsDir()
Create the region splits directory.
|
(package private) org.apache.hadoop.fs.Path |
createStoreDir(String familyName)
Create the store directory for the specified family name
|
org.apache.hadoop.fs.Path |
createTempName()
Generate a unique temporary Path.
|
org.apache.hadoop.fs.Path |
createTempName(String suffix)
Generate a unique temporary Path.
|
(package private) boolean |
deleteDir(org.apache.hadoop.fs.Path dir)
Deletes a directory.
|
void |
deleteFamily(String familyName)
Remove the region family from disk, archiving the store files.
|
static void |
deleteRegionFromFileSystem(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path tableDir,
HRegionInfo regionInfo)
Remove the region from the table directory, archiving the region's hfiles.
|
private static String |
generateUniqueName(String suffix)
Generate a unique file name, used by createTempName() and commitStoreFile()
|
Collection<String> |
getFamilies() |
org.apache.hadoop.fs.FileSystem |
getFileSystem() |
(package private) org.apache.hadoop.fs.Path |
getMergesDir() |
(package private) org.apache.hadoop.fs.Path |
getMergesDir(HRegionInfo hri) |
org.apache.hadoop.fs.Path |
getRegionDir() |
HRegionInfo |
getRegionInfo() |
private static byte[] |
getRegionInfoFileContent(HRegionInfo hri) |
HRegionInfo |
getRegionInfoForFS() |
(package private) org.apache.hadoop.fs.Path |
getSplitsDir() |
(package private) org.apache.hadoop.fs.Path |
getSplitsDir(HRegionInfo hri) |
org.apache.hadoop.fs.Path |
getStoreDir(String familyName)
Returns the directory path of the specified family
|
(package private) StoreFileInfo |
getStoreFileInfo(String familyName,
String fileName)
Return the store file information of the specified family/file.
|
(package private) org.apache.hadoop.fs.Path |
getStoreFilePath(String familyName,
String fileName)
Return Qualified Path of the specified family/file
|
Collection<StoreFileInfo> |
getStoreFiles(byte[] familyName)
Returns the store files available for the family.
|
Collection<StoreFileInfo> |
getStoreFiles(String familyName) |
Collection<StoreFileInfo> |
getStoreFiles(String familyName,
boolean validate)
Returns the store files available for the family.
|
org.apache.hadoop.fs.Path |
getTableDir() |
(package private) org.apache.hadoop.fs.Path |
getTempDir() |
boolean |
hasReferences(HTableDescriptor htd)
Check whether region has Reference file
|
boolean |
hasReferences(String familyName)
Returns true if the specified family has reference files
|
static HRegionInfo |
loadRegionInfoFileContent(org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path regionDir)
Create a
HRegionInfo from the serialized version on-disk. |
(package private) void |
logFileSystemState(org.apache.commons.logging.Log LOG)
Log the current state of the region
|
(package private) org.apache.hadoop.fs.Path |
mergeStoreFile(HRegionInfo mergedRegion,
String familyName,
StoreFile f,
org.apache.hadoop.fs.Path mergedDir)
Write out a merge reference under the given merges directory.
|
static HRegionFileSystem |
openRegionFromFileSystem(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path tableDir,
HRegionInfo regionInfo,
boolean readOnly)
Open Region from file-system.
|
void |
removeStoreFile(String familyName,
org.apache.hadoop.fs.Path filePath)
Archives the specified store file from the specified family.
|
void |
removeStoreFiles(String familyName,
Collection<StoreFile> storeFiles)
Closes and archives the specified store files from the specified family.
|
(package private) boolean |
rename(org.apache.hadoop.fs.Path srcpath,
org.apache.hadoop.fs.Path dstPath)
Renames a directory.
|
private void |
sleepBeforeRetry(String msg,
int sleepMultiplier)
sleeping logic; handles the interrupt exception.
|
private static void |
sleepBeforeRetry(String msg,
int sleepMultiplier,
int baseSleepBeforeRetries,
int hdfsClientRetriesNumber)
sleeping logic for static methods; handles the interrupt exception.
|
(package private) org.apache.hadoop.fs.Path |
splitStoreFile(HRegionInfo hri,
String familyName,
StoreFile f,
byte[] splitRow,
boolean top,
RegionSplitPolicy splitPolicy)
Write out a split reference.
|
private static void |
writeRegionInfoFileContent(org.apache.hadoop.conf.Configuration conf,
org.apache.hadoop.fs.FileSystem fs,
org.apache.hadoop.fs.Path regionInfoFile,
byte[] content)
Write the .regioninfo file on-disk.
|
private void |
writeRegionInfoOnFilesystem(boolean useTempDir)
Write out an info file under the region directory.
|
private void |
writeRegionInfoOnFilesystem(byte[] regionInfoContent,
boolean useTempDir)
Write out an info file under the region directory.
|
private static final org.apache.commons.logging.Log LOG
public static final String REGION_INFO_FILE
public static final String REGION_MERGES_DIR
public static final String REGION_SPLITS_DIR
private static final String REGION_TEMP_DIR
private final HRegionInfo regionInfo
private final HRegionInfo regionInfoForFs
private final org.apache.hadoop.conf.Configuration conf
private final org.apache.hadoop.fs.Path tableDir
private final org.apache.hadoop.fs.FileSystem fs
private final int hdfsClientRetriesNumber
private final int baseSleepBeforeRetries
private static final int DEFAULT_HDFS_CLIENT_RETRIES_NUMBER
private static final int DEFAULT_BASE_SLEEP_BEFORE_RETRIES
HRegionFileSystem(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path tableDir, HRegionInfo regionInfo)
conf
- the Configuration
to usefs
- FileSystem
that contains the regiontableDir
- Path
to where the table is being storedregionInfo
- HRegionInfo
for regionpublic org.apache.hadoop.fs.FileSystem getFileSystem()
FileSystem
public HRegionInfo getRegionInfo()
HRegionInfo
that describe this on-disk region viewpublic HRegionInfo getRegionInfoForFS()
public org.apache.hadoop.fs.Path getTableDir()
Path
to the region's root directory.public org.apache.hadoop.fs.Path getRegionDir()
Path
to the region directory.org.apache.hadoop.fs.Path getTempDir()
Path
to the region's temp directory, used for file creationsvoid cleanupTempDir() throws IOException
IOException
public org.apache.hadoop.fs.Path getStoreDir(String familyName)
familyName
- Column Family NamePath
to the directory of the specified familyorg.apache.hadoop.fs.Path createStoreDir(String familyName) throws IOException
familyName
- Column Family NamePath
to the directory of the specified familyIOException
- if the directory creation fails.public Collection<StoreFileInfo> getStoreFiles(byte[] familyName) throws IOException
familyName
- Column Family NameStoreFileInfo
for the specified family.IOException
public Collection<StoreFileInfo> getStoreFiles(String familyName) throws IOException
IOException
public Collection<StoreFileInfo> getStoreFiles(String familyName, boolean validate) throws IOException
familyName
- Column Family NameStoreFileInfo
for the specified family.IOException
org.apache.hadoop.fs.Path getStoreFilePath(String familyName, String fileName)
familyName
- Column Family NamefileName
- File NameStoreFileInfo getStoreFileInfo(String familyName, String fileName) throws IOException
familyName
- Column Family NamefileName
- File NameStoreFileInfo
for the specified family/fileIOException
public boolean hasReferences(String familyName) throws IOException
familyName
- Column Family NameIOException
public boolean hasReferences(HTableDescriptor htd) throws IOException
htd
- table desciptor of the regionIOException
public Collection<String> getFamilies() throws IOException
IOException
public void deleteFamily(String familyName) throws IOException
familyName
- Column Family NameIOException
- if an error occours during the archivingprivate static String generateUniqueName(String suffix)
suffix
- extra information to append to the generated namepublic org.apache.hadoop.fs.Path createTempName()
Path file = fs.createTempName();
...StoreFile.Writer(file)...
fs.commitStoreFile("family", file);
Path
of the temporary filepublic org.apache.hadoop.fs.Path createTempName(String suffix)
Path file = fs.createTempName();
...StoreFile.Writer(file)...
fs.commitStoreFile("family", file);
suffix
- extra information to append to the generated namePath
of the temporary filepublic org.apache.hadoop.fs.Path commitStoreFile(String familyName, org.apache.hadoop.fs.Path buildPath) throws IOException
familyName
- Family that will gain the filebuildPath
- Path
to the file to commit.Path
of the committed fileIOException
private org.apache.hadoop.fs.Path commitStoreFile(String familyName, org.apache.hadoop.fs.Path buildPath, long seqNum, boolean generateNewName) throws IOException
familyName
- Family that will gain the filebuildPath
- Path
to the file to commit.seqNum
- Sequence Number to append to the file name (less then 0 if no sequence number)generateNewName
- False if you want to keep the buildPath namePath
of the committed fileIOException
void commitStoreFiles(Map<byte[],List<StoreFile>> storeFiles) throws IOException
storeFiles
- list of store files divided by familyIOException
public void removeStoreFile(String familyName, org.apache.hadoop.fs.Path filePath) throws IOException
familyName
- Family that contains the store filesfilePath
- Path
to the store file to removeIOException
- if the archiving failspublic void removeStoreFiles(String familyName, Collection<StoreFile> storeFiles) throws IOException
familyName
- Family that contains the store filesstoreFiles
- set of store files to removeIOException
- if the archiving failsorg.apache.hadoop.fs.Path bulkLoadStoreFile(String familyName, org.apache.hadoop.fs.Path srcPath, long seqNum) throws IOException
familyName
- Family that will gain the filesrcPath
- Path
to the file to importseqNum
- Bulk Load sequence numberPath
of the bulk loaded fileIOException
org.apache.hadoop.fs.Path getSplitsDir()
Path
to the temp directory used during split operationsorg.apache.hadoop.fs.Path getSplitsDir(HRegionInfo hri)
void cleanupSplitsDir() throws IOException
IOException
void cleanupAnySplitDetritus() throws IOException
IOException
void cleanupDaughterRegion(HRegionInfo regionInfo) throws IOException
regionInfo
- daughter HRegionInfo
IOException
org.apache.hadoop.fs.Path commitDaughterRegion(HRegionInfo regionInfo) throws IOException
regionInfo
- daughter HRegionInfo
IOException
void createSplitsDir() throws IOException
IOException
org.apache.hadoop.fs.Path splitStoreFile(HRegionInfo hri, String familyName, StoreFile f, byte[] splitRow, boolean top, RegionSplitPolicy splitPolicy) throws IOException
hri
- HRegionInfo
of the destinationfamilyName
- Column Family Namef
- File to split.splitRow
- Split Rowtop
- True if we are referring to the top half of the hfile.splitPolicy
- IOException
org.apache.hadoop.fs.Path getMergesDir()
Path
to the temp directory used during merge operationsorg.apache.hadoop.fs.Path getMergesDir(HRegionInfo hri)
void cleanupMergesDir() throws IOException
IOException
void cleanupMergedRegion(HRegionInfo mergedRegion) throws IOException
mergedRegion
- HRegionInfo
IOException
void createMergesDir() throws IOException
IOException
- If merges dir already exists or we fail to create it.cleanupMergesDir()
org.apache.hadoop.fs.Path mergeStoreFile(HRegionInfo mergedRegion, String familyName, StoreFile f, org.apache.hadoop.fs.Path mergedDir) throws IOException
mergedRegion
- HRegionInfo
of the merged regionfamilyName
- Column Family Namef
- File to create reference.mergedDir
- IOException
void commitMergedRegion(HRegionInfo mergedRegionInfo) throws IOException
mergedRegionInfo
- merged region HRegionInfo
IOException
void logFileSystemState(org.apache.commons.logging.Log LOG) throws IOException
LOG
- log to output informationIOException
- if an unexpected exception occursprivate static byte[] getRegionInfoFileContent(HRegionInfo hri) throws IOException
hri
- IOException
public static HRegionInfo loadRegionInfoFileContent(org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path regionDir) throws IOException
HRegionInfo
from the serialized version on-disk.fs
- FileSystem
that contains the Region Info fileregionDir
- Path
to the Region Directory that contains the Info fileHRegionInfo
instance gotten from the Region Info file.IOException
- if an error occurred during file open/read operation.private static void writeRegionInfoFileContent(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path regionInfoFile, byte[] content) throws IOException
IOException
void checkRegionInfoOnFilesystem() throws IOException
IOException
private void writeRegionInfoOnFilesystem(boolean useTempDir) throws IOException
useTempDir
- indicate whether or not using the region .tmp dir for a safer file creation.IOException
private void writeRegionInfoOnFilesystem(byte[] regionInfoContent, boolean useTempDir) throws IOException
regionInfoContent
- serialized version of the HRegionInfo
useTempDir
- indicate whether or not using the region .tmp dir for a safer file creation.IOException
public static HRegionFileSystem createRegionOnFileSystem(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path tableDir, HRegionInfo regionInfo) throws IOException
conf
- the Configuration
to usefs
- FileSystem
from which to add the regiontableDir
- Path
to where the table is being storedregionInfo
- HRegionInfo
for region to be addedIOException
- if the region creation fails due to a FileSystem exception.public static HRegionFileSystem openRegionFromFileSystem(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path tableDir, HRegionInfo regionInfo, boolean readOnly) throws IOException
conf
- the Configuration
to usefs
- FileSystem
from which to add the regiontableDir
- Path
to where the table is being storedregionInfo
- HRegionInfo
for region to be addedreadOnly
- True if you don't want to edit the region dataIOException
- if the region creation fails due to a FileSystem exception.public static void deleteRegionFromFileSystem(org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.fs.Path tableDir, HRegionInfo regionInfo) throws IOException
conf
- the Configuration
to usefs
- FileSystem
from which to remove the regiontableDir
- Path
to where the table is being storedregionInfo
- HRegionInfo
for region to be deletedIOException
- if the request cannot be completedboolean createDir(org.apache.hadoop.fs.Path dir) throws IOException
dir
- IOException
boolean rename(org.apache.hadoop.fs.Path srcpath, org.apache.hadoop.fs.Path dstPath) throws IOException
srcpath
- dstPath
- IOException
boolean deleteDir(org.apache.hadoop.fs.Path dir) throws IOException
dir
- IOException
private void sleepBeforeRetry(String msg, int sleepMultiplier) throws InterruptedException
InterruptedException
private static boolean createDirOnFileSystem(org.apache.hadoop.fs.FileSystem fs, org.apache.hadoop.conf.Configuration conf, org.apache.hadoop.fs.Path dir) throws IOException
fs
- conf
- dir
- IOException
private static void sleepBeforeRetry(String msg, int sleepMultiplier, int baseSleepBeforeRetries, int hdfsClientRetriesNumber) throws InterruptedException
InterruptedException
Copyright © 2007–2019 The Apache Software Foundation. All rights reserved.