public class LocalMetadataStore extends Object implements MetadataStore
| Modifier and Type | Field and Description |
|---|---|
static org.slf4j.Logger |
LOG |
| Constructor and Description |
|---|
LocalMetadataStore() |
| Modifier and Type | Method and Description |
|---|---|
void |
close() |
void |
delete(org.apache.hadoop.fs.Path p)
Deletes exactly one path, leaving a tombstone to prevent lingering,
inconsistent copies of it from being listed.
|
void |
deleteSubtree(org.apache.hadoop.fs.Path path)
Deletes the entire sub-tree rooted at the given path, leaving tombstones
to prevent lingering, inconsistent copies of it from being listed.
|
void |
destroy()
Destroy all resources associated with the metadata store.
|
void |
forgetMetadata(org.apache.hadoop.fs.Path p)
Removes the record of exactly one path.
|
PathMetadata |
get(org.apache.hadoop.fs.Path p)
Gets metadata for a path.
|
PathMetadata |
get(org.apache.hadoop.fs.Path p,
boolean wantEmptyDirectoryFlag)
Gets metadata for a path.
|
Map<String,String> |
getDiagnostics()
Get any diagnostics information from a store, as a list of (key, value)
tuples for display.
|
void |
initialize(org.apache.hadoop.conf.Configuration conf)
Performs one-time initialization of the metadata store via configuration.
|
void |
initialize(org.apache.hadoop.fs.FileSystem fileSystem)
Performs one-time initialization of the metadata store.
|
DirListingMetadata |
listChildren(org.apache.hadoop.fs.Path p)
Lists metadata for all direct children of a path.
|
void |
move(Collection<org.apache.hadoop.fs.Path> pathsToDelete,
Collection<PathMetadata> pathsToCreate)
Record the effects of a
FileSystem.rename(Path, Path) in the
MetadataStore. |
void |
prune(long modTime)
Clear any metadata older than a specified time from the repository.
|
void |
prune(long modTime,
String keyPrefix)
Same as
MetadataStore.prune(long), but with an additional
keyPrefix parameter to filter the pruned keys with a prefix. |
void |
put(Collection<PathMetadata> metas)
Saves metadata for any number of paths.
|
void |
put(DirListingMetadata meta)
Save directory listing metadata.
|
void |
put(PathMetadata meta)
Saves metadata for exactly one path.
|
String |
toString() |
void |
updateParameters(Map<String,String> parameters)
Tune/update parameters for an existing table.
|
public void initialize(org.apache.hadoop.fs.FileSystem fileSystem)
throws IOException
MetadataStoreinitialize in interface MetadataStorefileSystem - FileSystem associated with the MetadataStoreIOException - if there is an errorpublic void initialize(org.apache.hadoop.conf.Configuration conf)
throws IOException
MetadataStoreinitialize in interface MetadataStoreconf - Configuration.IOException - if there is an errorMetadataStore.initialize(FileSystem)public void delete(org.apache.hadoop.fs.Path p)
throws IOException
MetadataStoredelete in interface MetadataStorep - the path to deleteIOException - if there is an errorpublic void forgetMetadata(org.apache.hadoop.fs.Path p)
throws IOException
MetadataStoreMetadataStore.delete(Path). It is currently intended for testing
only, and a need to use it as part of normal FileSystem usage is not
anticipated.forgetMetadata in interface MetadataStorep - the path to deleteIOException - if there is an errorpublic void deleteSubtree(org.apache.hadoop.fs.Path path)
throws IOException
MetadataStoreMetadataStore.get(Path),
implementations must also update any stored DirListingMetadata
objects which track the parent of this file.deleteSubtree in interface MetadataStorepath - the root of the sub-tree to deleteIOException - if there is an errorpublic PathMetadata get(org.apache.hadoop.fs.Path p) throws IOException
MetadataStoreget in interface MetadataStorep - the path to getpath, null if not foundIOException - if there is an errorpublic PathMetadata get(org.apache.hadoop.fs.Path p, boolean wantEmptyDirectoryFlag) throws IOException
MetadataStorePathMetadata.isEmptyDirectory(). Since determining emptiness
may be an expensive operation, this can save wasted work.get in interface MetadataStorep - the path to getwantEmptyDirectoryFlag - Set to true to give a hint to the
MetadataStore that it should try to compute the empty directory flag.path, null if not foundIOException - if there is an errorpublic DirListingMetadata listChildren(org.apache.hadoop.fs.Path p) throws IOException
MetadataStorelistChildren in interface MetadataStorep - the path to listpath which are being
tracked by the MetadataStore, or null if the path was not found
in the MetadataStore.IOException - if there is an errorpublic void move(Collection<org.apache.hadoop.fs.Path> pathsToDelete, Collection<PathMetadata> pathsToCreate) throws IOException
MetadataStoreFileSystem.rename(Path, Path) in the
MetadataStore. Clients provide explicit enumeration of the affected
paths (recursively), before and after the rename.
This operation is not atomic, unless specific implementations claim
otherwise.
On the need to provide an enumeration of directory trees instead of just
source and destination paths:
Since a MetadataStore does not have to track all metadata for the
underlying storage system, and a new MetadataStore may be created on an
existing underlying filesystem, this move() may be the first time the
MetadataStore sees the affected paths. Therefore, simply providing src
and destination paths may not be enough to record the deletions (under
src path) and creations (at destination) that are happening during the
rename().move in interface MetadataStorepathsToDelete - Collection of all paths that were removed from the
source directory tree of the move.pathsToCreate - Collection of all PathMetadata for the new paths
that were created at the destination of the rename
().IOException - if there is an errorpublic void put(PathMetadata meta) throws IOException
MetadataStoreDirListingMetadata objects which
track the immediate parent of this file.put in interface MetadataStoremeta - the metadata to saveIOException - if there is an errorpublic void put(DirListingMetadata meta) throws IOException
MetadataStoreMetadataStore implementations may
subsequently keep track of all modifications to the directory contents at
this path, and return authoritative results from subsequent calls to
MetadataStore.listChildren(Path). See DirListingMetadata.
Any authoritative results returned are only authoritative for the scope
of the MetadataStore: A per-process MetadataStore, for
example, would only show results visible to that process, potentially
missing metadata updates (create, delete) made to the same path by
another process.put in interface MetadataStoremeta - Directory listing metadata.IOException - if there is an errorpublic void put(Collection<PathMetadata> metas) throws IOException
MetadataStoreput in interface MetadataStoremetas - the metadata to saveIOException - if there is an errorpublic void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableIOExceptionpublic void destroy()
throws IOException
MetadataStoredestroy in interface MetadataStoreIOException - if there is an errorpublic void prune(long modTime)
throws IOException
MetadataStoreprune in interface MetadataStoremodTime - Oldest modification time to allowIOException - if there is an errorpublic void prune(long modTime,
String keyPrefix)
MetadataStoreMetadataStore.prune(long), but with an additional
keyPrefix parameter to filter the pruned keys with a prefix.prune in interface MetadataStoremodTime - Oldest modification time to allowkeyPrefix - The prefix for the keys that should be removedpublic Map<String,String> getDiagnostics() throws IOException
MetadataStoregetDiagnostics in interface MetadataStoreIOException - if there is an errorpublic void updateParameters(Map<String,String> parameters) throws IOException
MetadataStoreupdateParameters in interface MetadataStoreparameters - map of params to change.IOException - if there is an errorCopyright © 2008–2021 Apache Software Foundation. All rights reserved.