HBasesu Amazon S3 (modalità di storage Amazon S3) - Amazon EMR

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

HBasesu Amazon S3 (modalità di storage Amazon S3)

Se utilizzi Amazon HBase EMR versione 5.2.0 o successiva, puoi abilitarlo HBase su Amazon S3, che offre i seguenti vantaggi:

  • La directory HBase principale è archiviata in Amazon S3, inclusi i file di HBase archivio e i metadati delle tabelle. Questi dati sono persistenti all'esterno del cluster, disponibili in tutte le zone di EC2 disponibilità di Amazon e non è necessario ripristinarli utilizzando snapshot o altri metodi.

  • Con i file di archiviazione in Amazon S3, puoi dimensionare il EMR cluster Amazon in base ai tuoi requisiti di elaborazione anziché ai requisiti di dati, con una replica triplica. HDFS

  • Utilizzando Amazon EMR versione 5.7.0 o successiva, puoi configurare un cluster di replica in lettura, che consente di mantenere copie di sola lettura dei dati in Amazon S3. Puoi accedere ai dati dalla replica di lettura al cluster per eseguire operazioni di lettura simultaneamente e nel caso in cui il cluster principale diventi indisponibile.

  • Nella EMR versione 6.2.0 di Amazon e successive, il HFile monitoraggio persistente utilizza una tabella di HBase sistema chiamata hbase:storefile per tracciare direttamente i HFile percorsi utilizzati per le operazioni di lettura. Questa caratteristica è abilitata per impostazione predefinita e non richiede la migrazione manuale.

La seguente illustrazione mostra i HBase componenti rilevanti per HBase Amazon S3.

HBasesull'architettura Amazon S3.

Abilitazione HBase su Amazon S3

Puoi abilitarlo HBase su Amazon S3 utilizzando la EMR console Amazon AWS CLI, o Amazon. EMR API La configurazione è un'opzione durante la creazione del cluster. Quando utilizzi la console, puoi scegliere l'impostazione utilizzando Advanced options (Opzioni avanzate). Quando utilizzi AWS CLI, utilizza l'--configurations opzione per fornire un oggetto di JSON configurazione. Le proprietà dell'oggetto di configurazione specificano la modalità di archiviazione e il percorso della directory principale in Amazon S3. La posizione Amazon S3 specificata deve trovarsi nella stessa regione del cluster AmazonEMR. Solo un cluster attivo alla volta può utilizzare la stessa directory HBase principale in Amazon S3. Per i passaggi della console e un esempio dettagliato di creazione di cluster utilizzando il AWS CLI, consulta. Creazione di un cluster con HBase Un esempio di oggetto di configurazione è mostrato nel frammento seguenteJSON.

{ "Classification": "hbase-site", "Properties": { "hbase.rootdir": "s3://my-bucket/my-hbase-rootdir"} }, { "Classification": "hbase", "Properties": { "hbase.emr.storageMode":"s3" } }
Nota

Se utilizzi un bucket Amazon S3 come moduloHBase, devi aggiungere una barra alla fine di Amazon S3. rootdir URI Per evitare problemi occorre utilizzare, ad esempio, "hbase.rootdir: s3://my-bucket/" anziché "hbase.rootdir: s3://my-bucket".

Utilizzo della replica di lettura al cluster

Dopo aver configurato un cluster primario utilizzando HBase Amazon S3, puoi creare e configurare un cluster di replica in lettura che fornisce accesso in sola lettura agli stessi dati del cluster primario. Ciò è utile quando è necessario accesso simultaneo per eseguire query sui dati o accesso ininterrotto se il cluster principale diventa non disponibile. La funzionalità read-replica è disponibile con Amazon EMR versione 5.7.0 e successive.

Il cluster principale e la replica di lettura al cluster vengono impostati nello stesso modo con una differenza importante. Entrambi fanno riferimento allo stesso percorso hbase.rootdir. Tuttavia, la classificazione hbase per la replica di lettura al cluster include la proprietà "hbase.emr.readreplica.enabled":"true".

Ad esempio, data la JSON classificazione del cluster primario illustrata in precedenza nell'argomento, la configurazione per un cluster di lettura e replica è la seguente:

{ "Classification": "hbase-site", "Properties": { "hbase.rootdir": "s3://my-bucket/my-hbase-rootdir"} }, { "Classification": "hbase", "Properties": { "hbase.emr.storageMode":"s3", "hbase.emr.readreplica.enabled":"true" } }

Sincronizzazione della replica di lettura quando si aggiungono dati

Poiché la replica di lettura utilizza i HBase StoreFiles metadati che il cluster primario scrive su Amazon S3, la replica di lettura è aggiornata solo quanto il data store Amazon S3. Le seguenti indicazioni consentono di ridurre il ritardo tra il cluster principale e la replica di lettura durante la scrittura dei dati.

  • Se possibile, caricare i dati in blocco nel cluster principale. Per ulteriori informazioni, consulta la documentazione relativa al caricamento in blocco di Apache. HBase

  • Dopo che i dati vengono aggiunti, i file dello store devono essere scritti al più presto in Amazon S3 mediante uno svuotamento. Eseguire lo svuotamento manualmente o ottimizzare le impostazioni di svuotamento per ridurre il ritardo.

  • Se è possibile che vengano eseguite compattazioni automatiche, eseguire una compattazione manuale per evitare incoerenze quando le compattazioni vengono attivate.

  • Nel cluster read-replica, quando i metadati sono cambiati, ad esempio quando si verificano divisioni o compattazioni di HBase regioni o quando vengono aggiunte o rimosse tabelle, esegui il comando. refresh_meta

  • Nella replica di lettura al cluster, eseguire il comando refresh_hfiles quando si aggiungono o modificano record in una tabella.

Sincronizzazione dei dati con una replica di lettura HBase

HFileMonitoraggio persistente

Il HFile tracciamento persistente utilizza una tabella di HBase sistema chiamata hbase:storefile per tracciare direttamente i HFile percorsi utilizzati per le operazioni di lettura. I nuovi HFile percorsi vengono aggiunti alla tabella man mano che vengono aggiunti dati aggiuntiviHBase. Ciò rimuove le operazioni di ridenominazione come meccanismo di commit nelle HBase operazioni critiche relative ai percorsi di scrittura e migliora i tempi di ripristino all'apertura di una HBase regione mediante la lettura dalla tabella di hbase:storefile sistema anziché dall'elenco delle directory del file system. Questa funzionalità è abilitata per impostazione predefinita su Amazon EMR versione 6.2.0 e successive e non richiede alcuna procedura di migrazione manuale.

Nota

Il HFile tracciamento persistente tramite la tabella del HBase file system storefile non supporta la funzionalità di HBase replica regionale. Per ulteriori informazioni sulla replica delle aree, consulta HBase Timeline-Consistent High Available Reads.

HFileDisattivazione del tracciamento persistente

Il HFile tracciamento persistente è abilitato per impostazione predefinita a partire dalla EMR versione 6.2.0 di Amazon. Per disabilitare il HFile tracciamento persistente, specifica la seguente modifica della configurazione all'avvio di un cluster:

{ "Classification": "hbase-site", "Properties": { "hbase.storefile.tracking.persist.enabled":"false", "hbase.hstore.engine.class":"org.apache.hadoop.hbase.regionserver.DefaultStoreEngine" } }
Nota

Quando si riconfigura il EMR cluster Amazon, tutti i gruppi di istanze devono essere aggiornati.

Sincronizzazione manuale della tabella Storefile

La tabella storefile viene mantenuta aggiornata man mano che ne vengono create di nuove. HFiles Tuttavia, se la tabella Storefile non è sincronizzata con i file di dati per qualsiasi motivo, è possibile utilizzare i seguenti comandi per sincronizzare manualmente i dati:

Sincronizza la tabella Storefile in una regione online:

hbase org.apache.hadoop.hbase.client.example.RefreshHFilesClient <table>

Sincronizza la tabella Storefile in una regione offline:

  • Rimuove lo znode della tabella Storefile.

    echo "ls /hbase/storefile/loaded" | sudo -u hbase hbase zkcli [<tableName>, hbase:namespace] # The TableName exists in the list echo "delete /hbase/storefile/loaded/<tableName>" | sudo -u hbase hbase zkcli # Delete the Table ZNode echo "ls /hbase/storefile/loaded" | sudo -u hbase hbase zkcli [hbase:namespace]
  • Assegna la regione (da eseguire in "hbase shell").

    hbase cli> assign '<region name>'
  • Se l'assegnazione ha esito negativo.

    hbase cli> disable '<table name>' hbase cli> enable '<table name>'

Ridimensionamento della tabella Storefile

La tabella Storefile è suddivisa in quattro regioni per impostazione predefinita. Se la tabella Storefile presenta ancora un'ingente mole di scrittura, può essere ulteriormente divisa in modalità manuale.

Per dividere una regione critica specifica, utilizza il seguente comando (da eseguire in "hbase shell").

hbase cli> split '<region name>'

Per dividere la tabella, utilizza il seguente comando (da eseguire in "hbase shell").

hbase cli> split 'hbase:storefile'

Considerazioni operative

HBasei server regionali vengono utilizzati BlockCache per archiviare le letture dei dati in memoria e BucketCache per archiviare le letture dei dati sul disco locale. Inoltre, i server regionali archiviano MemStore i dati scritti in memoria e utilizzano i log write-ahead per archiviare le scritture dei dati HDFS prima che i dati vengano scritti in Amazon HBase StoreFiles S3. Le prestazioni di lettura del cluster fanno riferimento alla frequenza con cui un record può essere recuperato dalle cache in memoria o su disco. Un errore nella cache comporta la lettura del record da Amazon S3, che ha una latenza significativamente più elevata e una deviazione standard più elevata rispetto alla lettura da. StoreFile HDFS Inoltre, le frequenze di richiesta massime per Amazon S3 sono inferiori rispetto a quelle che possono essere ottenute dalla cache locale, pertanto il caching dei dati può essere importante per i carichi di lavoro gravosi in lettura. Per maggiori informazioni sulle prestazioni di Amazon S3, consulta la sezione Ottimizzazione delle prestazioni nella Guida per l'utente di Amazon Simple Storage Service.

Per migliorare le prestazioni, consigliamo di memorizzare nella cache la maggior parte possibile del set di dati nello storage delle istanze. EC2 Poiché BucketCache utilizza lo storage delle EC2 istanze del server regionale, puoi scegliere un tipo di EC2 istanza con un instance store sufficiente e aggiungere spazio di EBS archiviazione Amazon per soddisfare la dimensione della cache richiesta. Puoi anche aumentare le BucketCache dimensioni degli archivi e EBS dei volumi di istanze collegati utilizzando la hbase.bucketcache.size proprietà. L'impostazione predefinita è 8192 MB.

Per quanto riguarda le scritture, la frequenza dei MemStore flush e il numero di StoreFiles presenze durante le compattazioni minori e maggiori possono contribuire in modo significativo all'aumento dei tempi di risposta dei Region Server. Per prestazioni ottimali, prendete in considerazione l'aumento delle dimensioni del moltiplicatore di MemStore flush e HRegion block, che aumenta il tempo trascorso tra le compattazioni principali, ma aumenta anche il ritardo di coerenza se utilizzate una replica di lettura. In alcuni casi, potresti ottenere prestazioni migliori utilizzando blocchi di file di dimensioni maggiori (ma inferiori a 5 GB) per attivare la funzionalità di caricamento multiparte di Amazon S3. EMRFS La dimensione predefinita EMR del blocco di Amazon è 128 MB. Per ulteriori informazioni, consulta HDFSconfigurazione. Raramente vediamo clienti che superano le dimensioni dei blocchi da 1 GB mentre eseguono il benchmarking delle prestazioni con scarichi e compattazioni. Inoltre, HBase le compattazioni e i server regionali funzionano in modo ottimale quando StoreFiles è necessario compattarne meno.

Il rilascio delle tabelle su Amazon S3 può richiedere molto tempo perché è necessario rinominare directory di grandi dimensioni. Valuta se disabilitare le tabelle anziché rilasciarle.

Esiste un processo HBase più pulito che pulisce i vecchi WAL file e archivia i file. Con la EMR versione 5.17.0 e successive di Amazon, il pulitore è abilitato a livello globale e le seguenti proprietà di configurazione possono essere utilizzate per controllare il comportamento del pulitore.

Proprietà di configurazione Valore predefinito Descrizione

hbase.regionserver.hfilecleaner.large.thread.count

1

Il numero di thread allocati a clean è scaduto elevato. HFiles

hbase.regionserver.hfilecleaner.small.thread.count

1

Il numero di thread assegnati a clean è scaduto. HFiles

hbase.cleaner.scan.dir.concurrent.size

Impostato su un quarto di tutti i core disponibili.

Il numero di thread per la scansione delle directory. oldWALs

hbase.oldwals.cleaner.thread.size

2

Il numero di thread da pulire WALs sotto la directory. oldWALs

Con Amazon EMR 5.17.0 e versioni precedenti, l'operazione di pulizia può influire sulle prestazioni delle query durante l'esecuzione di carichi di lavoro pesanti, quindi ti consigliamo di abilitare il pulitore solo durante le ore non di punta. Il pulitore ha i seguenti comandi di shell: HBase

  • cleaner_chore_enabled esegue la query se il processo di pulitura è abilitato.

  • cleaner_chore_run esegue manualmente il processo di pulitura per rimuovere file.

  • cleaner_chore_switch abilita o disabilita il processo di pulitura e restituisce lo stato precedente del processo di pulitura. Ad esempio, cleaner_chore_switch true abilita il processo di pulitura.

Proprietà per l'HBaseottimizzazione delle prestazioni su Amazon S3

I seguenti parametri possono essere regolati per ottimizzare le prestazioni del carico di lavoro quando lo utilizzi HBase su Amazon S3.

Proprietà di configurazione Valore predefinito Descrizione

hbase.bucketcache.size

8,192

La quantità di spazio su disco, in MB, riservata agli archivi di EC2 istanze Amazon del server regionale e ai EBS volumi per BucketCache lo storage. L'impostazione si applica a tutte le istanze del server della regione. BucketCache Dimensioni più grandi generalmente corrispondono a prestazioni migliori

hbase.hregion.memstore.flush.size

134217728

Il limite di dati, in byte, in corrispondenza del quale viene attivato uno svuotamento memstore in Amazon S3.

hbase.hregion.memstore.block.multiplier

4

Un moltiplicatore che determina il limite MemStore superiore al quale gli aggiornamenti vengono bloccati. Se il MemStore superamento viene hbase.hregion.memstore.flush.size moltiplicato per questo valore, gli aggiornamenti vengono bloccati. MemStore potrebbero verificarsi scarichi e compattazione per sbloccare gli aggiornamenti.

hbase.hstore.blockingStoreFiles

10

Il numero massimo di questi dati può esistere in un negozio prima StoreFiles che gli aggiornamenti vengano bloccati.

hbase.hregion.max.filesize

10737418240

Le dimensioni massime di una regione prima che venga divisa.

Chiusura e ripristino di un cluster senza perdita di dati

Per chiudere un EMR cluster Amazon senza perdere dati che non sono stati scritti su Amazon S3, è necessario MemStore svuotare la cache in Amazon S3 per scrivere nuovi file di archiviazione. In primo luogo, dovrai disabilitare tutte le tabelle. La seguente configurazione di fase può essere utilizzata quando si aggiunge una fase al cluster. Per ulteriori informazioni, consulta Lavora con i passaggi utilizzando la console AWS CLI and nella Amazon EMR Management Guide.

Name="Disable all tables",Jar="command-runner.jar",Args=["/bin/bash","/usr/lib/hbase/bin/disable_all_tables.sh"]

In alternativa, puoi eseguire direttamente il seguente comando bash.

bash /usr/lib/hbase/bin/disable_all_tables.sh

Dopo aver disabilitato tutte le tabelle, svuota la hbase:meta tabella usando la HBase shell e il seguente comando.

flush 'hbase:meta'

Quindi, puoi eseguire uno script di shell fornito nel EMR cluster Amazon per svuotare la MemStore cache. Puoi aggiungerlo come una fase o eseguirlo direttamente utilizzando la AWS CLI sul cluster. Lo script disabilita tutte le HBase tabelle, il che fa sì che il MemStore server di ogni regione venga trasferito ad Amazon S3. Se lo script viene completato correttamente, i dati vengono mantenuti in Amazon S3 e il cluster può essere terminato.

Per riavviare un cluster con gli stessi HBase dati, specifica la stessa posizione Amazon S3 del cluster precedente nella proprietà di configurazione AWS Management Console o utilizzando la proprietà di hbase.rootdir configurazione.