HBase
 sql >> Database >  >> NoSQL >> HBase

In che modo HBase in CDP può sfruttare S3 di Amazon

Cloudera Data Platform (CDP) fornisce una soluzione pronta all'uso che consente alle distribuzioni Apache HBase di utilizzare Amazon Simple Storage Service (S3) come livello di persistenza principale per il salvataggio dei dati delle tabelle. Amazon S3 è un negozio di oggetti che offre un elevato grado di durabilità con una struttura dei costi pay-per-use. Non esiste alcun componente lato server da eseguire o gestire per S3:tutto ciò che serve è la libreria client S3 e le credenziali AWS. Tuttavia, HBase richiede un filesystem coerente e atomico, il che significa che non può utilizzare direttamente S3 perché è un archivio di oggetti eventualmente coerente. Sia CDH che HDP hanno fornito HBase solo utilizzando HDFS perché ci sono stati impedimenti di lunga data che hanno impedito a HBase di utilizzare nativamente S3. Per affrontare questi problemi, abbiamo creato una soluzione pronta all'uso che stiamo offrendo per la prima volta tramite CDP. Quando avvii un cluster HBase (Operational Database) su CDP, gli HBase StoreFiles (i file di supporto per le tabelle HBase) vengono archiviati in S3 e i log write-ahead (WAL) HBase vengono archiviati in un'istanza HDFS eseguita insieme a HBase come di consueto.

Descriveremo brevemente ogni componente che entra in questa architettura e il ruolo che ciascuno svolge.

L'adattatore del filesystem S3A è fornito da Hadoop per accedere ai dati in S3 tramite le API FileSystem standard. L'adattatore S3A consente alle applicazioni scritte su API Hadoop di accedere ai dati in S3 utilizzando un URI del formato "s3a://my_bucket/" invece di "hdfs://namenode:8020/" come con HDFS. La possibilità di specificare un "filesystem" predefinito da utilizzare rende estremamente semplici le migrazioni in stile "lift-and-shift" da cluster locali con HDFS a cluster basati su cloud con S3. HBase può essere configurato con una posizione di archiviazione di base (ad es. una directory in HDFS o un bucket S3) per tutti i dati dell'applicazione che consente a HBase di funzionare allo stesso modo, indipendentemente dal fatto che tali dati siano in HDFS o S3.

S3Guard fa parte del progetto Apache Hadoop che fornisce un elenco di directory coerente e lo stato degli oggetti per l'adattatore S3A, trasparente per l'applicazione. A tal fine, S3Guard utilizza un database distribuito coerente per tenere traccia delle modifiche apportate a S3 e garantisce che un client veda sempre lo stato corretto da S3. Senza S3Guard, HBase potrebbe non vedere un nuovo StoreFile che è stato aggiunto a una tabella HBase. Se HBase non ha osservato un file anche temporaneamente, ciò potrebbe causare la perdita di dati in HBase. Tuttavia, S3guard non fornisce tutto ciò che HBase richiede per utilizzare S3.

HBase Object Store Semantics (o semplicemente "HBOSS") è un nuovo progetto software nell'ambito del progetto Apache HBase creato appositamente per colmare il divario tra S3Guard e HBase. HBOSS è una facciata sopra l'adattatore S3A e S3Guard che utilizza un blocco distribuito per garantire che le operazioni HBase possano atomicamente manipolare i suoi file su S3. Un esempio in cui HBase richiede l'atomicità è la ridenominazione di una directory. Con il client S3, viene implementata una ridenominazione come copia dei dati di origine nella destinazione seguita da una cancellazione dei dati di origine. Senza il blocco fornito da HBOSS, HBase potrebbe vedere l'operazione di ridenominazione in corso che potrebbe causare una perdita di dati. Per realizzare questo blocco distribuito, HBOSS utilizza Apache ZooKeeper. Il riutilizzo di ZooKeeper è in base alla progettazione poiché HBase richiede già un'istanza ZooKeeper per garantire che tutti i servizi HBase funzionino insieme. Pertanto, l'integrazione di HBOSS non richiede oneri aggiuntivi di gestione del servizio e colma il divario su ciò che HBase richiede per utilizzare S3 con S3Guard.

Configurare HBase per utilizzare S3 per i suoi StoreFiles ha molti vantaggi per i nostri utenti. Uno di questi vantaggi è che gli utenti possono disaccoppiare lo storage e il calcolo. Se ci sono momenti in cui non è necessario l'accesso a HBase, HBase può essere spento in modo pulito e tutte le risorse di calcolo recuperate per eliminare qualsiasi costo operativo. Quando è nuovamente necessario l'accesso HBase, il cluster HBase può essere ricreato, puntando agli stessi dati in S3. All'avvio, HBase può reinizializzarsi esclusivamente dai dati in S3.

L'uso di S3 per archiviare HBase StoreFiles presenta alcune sfide. Uno di questi problemi è la maggiore latenza per una ricerca casuale di un file in S3 rispetto a HDFS. Una maggiore latenza nell'accesso S3 comporterebbe un tempo di recupero e scansione di HBase più lungo di quanto normalmente impiegherebbe con HDFS. Le latenze S3 variano da 10 a 100 di millisecondi rispetto all'intervallo da 0,1 a 9 millisecondi con HDFS. CDP può ridurre l'impatto di questa latenza S3 configurando automaticamente HBase per utilizzare BucketCache. Con BucketCache abilitato, le latenze S3 vengono rilevate solo la prima volta che uno StoreFile viene letto da S3. Dopo che HBase ha letto un file, proverà a memorizzare nella cache i dati grezzi per sostituire le letture S3 lente con letture veloci della memoria locale. Quando un cluster HBase viene avviato tramite CDP, viene automaticamente configurato per memorizzare nella cache i dati letti di recente dalla memoria S3 per fornire letture più veloci dei dati "caldi".

Siamo estremamente lieti di fornire queste nuove funzionalità ai nostri utenti. Prova subito HBase in esecuzione su S3 nel modello di database operativo in CDP!