public class HdfsBlobStore extends BlobStore
Provides a HDFS file system backed blob store implementation. Note that this provides an api for having HDFS be the backing store for the blobstore, it is not a service/daemon.
We currently have NIMBUS_ADMINS and SUPERVISOR_ADMINS configuration. NIMBUS_ADMINS are given READ, WRITE and ADMIN access whereas the SUPERVISOR_ADMINS are given READ access in order to read and download the blobs form the nimbus.
The ACLs for the blob store are validated against whether the subject is a NIMBUS_ADMIN, SUPERVISOR_ADMIN or USER who has read, write or admin privileges in order to perform respective operations on the blob.
For hdfs blob store 1. The USER interacts with nimbus to upload and access blobs through NimbusBlobStore Client API. Here, unlike local blob store which stores the blobs locally, the nimbus talks to HDFS to upload the blobs. 2. The USER sets the ACLs, and the blob access is validated against these ACLs. 3. The SUPERVISOR interacts with nimbus through HdfsClientBlobStore to download the blobs. Here, unlike local blob store the supervisor interacts with HDFS directly to download the blobs. The call to HdfsBlobStore is made as a “null” subject. The blobstore gets the hadoop user and validates permissions for the supervisor.
BlobStore.BlobStoreFileInputStream, BlobStore.BlobStoreFileOutputStream, BlobStore.KeyTranslationIterator| Modifier and Type | Field and Description |
|---|---|
static org.slf4j.Logger |
LOG |
BASE_BLOBS_DIR_NAME| Constructor and Description |
|---|
HdfsBlobStore() |
| Modifier and Type | Method and Description |
|---|---|
AtomicOutputStream |
createBlob(String key,
SettableBlobMeta meta,
Subject who)
Creates the blob.
|
void |
deleteBlob(String key,
Subject who)
Deletes the blob data and metadata.
|
void |
fullCleanup(long age) |
InputStreamWithMeta |
getBlob(String key,
Subject who)
Gets the InputStream to read the blob details
|
ReadableBlobMeta |
getBlobMeta(String key,
Subject who)
Gets the current version of metadata for a blob to be viewed by the user or downloaded by the supervisor.
|
int |
getBlobReplication(String key,
Subject who)
Gets the replication factor of the blob.
|
Iterator<String> |
listKeys()
Returns an iterator with all the list of keys currently available on the blob store.
|
void |
prepare(Map conf,
String overrideBase,
NimbusInfo nimbusInfo)
Allows us to initialize the blob store
|
protected void |
prepareInternal(Map conf,
String overrideBase,
org.apache.hadoop.conf.Configuration hadoopConf)
Allow a Hadoop Configuration to be passed for testing.
|
void |
setBlobMeta(String key,
SettableBlobMeta meta,
Subject who)
Sets the metadata with renewed acls for the blob.
|
void |
shutdown() |
AtomicOutputStream |
updateBlob(String key,
Subject who)
Updates the blob data.
|
int |
updateBlobReplication(String key,
int replication,
Subject who)
Modifies the replication factor of the blob.
|
void |
writeMetadata(String key,
SettableBlobMeta meta) |
createBlob, createBlob, filterAndListKeys, readBlob, readBlobTo, validateKeypublic void prepare(Map conf, String overrideBase, NimbusInfo nimbusInfo)
BlobStoreAllows us to initialize the blob store
protected void prepareInternal(Map conf, String overrideBase, org.apache.hadoop.conf.Configuration hadoopConf)
Allow a Hadoop Configuration to be passed for testing. If it’s null then the hadoop configs must be in your classpath.
public AtomicOutputStream createBlob(String key, SettableBlobMeta meta, Subject who) throws AuthorizationException, KeyAlreadyExistsException
BlobStoreCreates the blob.
createBlob in class BlobStorekey - Key for the blob.meta - Metadata which contains the acls informationwho - Is the subject creating the blob.AuthorizationExceptionKeyAlreadyExistsExceptionpublic AtomicOutputStream updateBlob(String key, Subject who) throws AuthorizationException, KeyNotFoundException
BlobStoreUpdates the blob data.
updateBlob in class BlobStorekey - Key for the blob.who - Is the subject having the write privilege for the blob.AuthorizationExceptionKeyNotFoundExceptionpublic ReadableBlobMeta getBlobMeta(String key, Subject who) throws AuthorizationException, KeyNotFoundException
BlobStoreGets the current version of metadata for a blob to be viewed by the user or downloaded by the supervisor.
getBlobMeta in class BlobStorekey - Key for the blob.who - Is the subject having the read privilege for the blob.AuthorizationExceptionKeyNotFoundExceptionpublic void setBlobMeta(String key, SettableBlobMeta meta, Subject who) throws AuthorizationException, KeyNotFoundException
BlobStoreSets the metadata with renewed acls for the blob.
setBlobMeta in class BlobStorekey - Key for the blob.meta - Metadata which contains the updated acls information.who - Is the subject having the write privilege for the blob.AuthorizationExceptionKeyNotFoundExceptionpublic void deleteBlob(String key, Subject who) throws AuthorizationException, KeyNotFoundException
BlobStoreDeletes the blob data and metadata.
deleteBlob in class BlobStorekey - Key for the blob.who - Is the subject having write privilege for the blob.AuthorizationExceptionKeyNotFoundExceptionpublic InputStreamWithMeta getBlob(String key, Subject who) throws AuthorizationException, KeyNotFoundException
BlobStoreGets the InputStream to read the blob details
getBlob in class BlobStorekey - Key for the blob.who - Is the subject having the read privilege for the blob.AuthorizationExceptionKeyNotFoundExceptionpublic Iterator<String> listKeys()
BlobStoreReturns an iterator with all the list of keys currently available on the blob store.
public void shutdown()
public int getBlobReplication(String key, Subject who) throws AuthorizationException, KeyNotFoundException
BlobStoreGets the replication factor of the blob.
getBlobReplication in class BlobStorekey - Key for the blob.who - Is the subject having the read privilege for the blob.AuthorizationExceptionKeyNotFoundExceptionpublic int updateBlobReplication(String key, int replication, Subject who) throws AuthorizationException, KeyNotFoundException
BlobStoreModifies the replication factor of the blob.
updateBlobReplication in class BlobStorekey - Key for the blob.replication - The replication factor the blob has to be set.who - Is the subject having the update privilege for the blobAuthorizationExceptionKeyNotFoundExceptionpublic void writeMetadata(String key, SettableBlobMeta meta) throws AuthorizationException, KeyNotFoundException
public void fullCleanup(long age)
throws IOException
IOExceptionCopyright © 2022 The Apache Software Foundation. All Rights Reserved.