Ottimizzare Apache HBase con Apache Ambari in Azure HDInsight
Apache Ambari è un'interfaccia Web per gestire e monitorare i cluster HDInsight. Per un'introduzione all'interfaccia utente Web di Ambari, vedere Gestire i cluster HDInsight usando l'interfaccia utente Web di Apache Ambari.
La configurazione di Apache HBase viene modificata dalla scheda Configurazioni HBase. Le sezioni seguenti descrivono alcune delle impostazioni di configurazione importanti che influiscono sulle prestazioni di HBase.
Impostare HBASE_HEAPSIZE
Nota
Questo articolo contiene riferimenti al termine master, un termine che Microsoft non usa più. Quando il termine verrà rimosso dal software, verrà rimosso anche dall'articolo.
Le dimensioni dell'heap HBase specificano, in megabyte, la quantità massima di heap che devono essere usati dai server di area e master. Il valore predefinito è 1.000 MB. Questo valore deve essere ottimizzato per il carico di lavoro del cluster.
Per modificarlo, passare al riquadro Advanced HBase-env (Ambiente HBase avanzato) nella scheda Configs (Configurazioni) e quindi trovare l'impostazione
HBASE_HEAPSIZE
.Impostare il valore predefinito su 5.000 MB.
Ottimizzare i carichi di lavoro con numero elevato di letture
Le configurazioni seguenti sono importanti per migliorare le prestazioni dei carichi di lavoro con numero elevato di letture.
Dimensioni della cache dei blocchi
La cache dei blocchi è la cache di lettura, Il hfile.block.cache.size
parametro controlla le dimensioni della cache dei blocchi. Il valore predefinito è 0,4, che corrisponde al 40% della memoria totale del server di area. Maggiore sarà la dimensione della cache dei blocchi, più velocemente saranno letture casuali.
Per modificare questo parametro, passare alla scheda Settings (Impostazioni) nella scheda Configs (Configurazioni) di HBase e quindi individuare % of RegionServer Allocated to Read Buffers (% di server di area allocata ai buffer di lettura).
Per modificare il valore, selezionare l'icona Edit (Modifica).
Dimensioni del memstore
Tutte le modifiche vengono archiviate nel buffer di memoria, denominato memstore. Questo buffer aumenta la quantità totale di dati che possono essere scritti su disco in un'unica operazione. Consente inoltre di velocizzare l'accesso alle modifiche recenti. Le dimensioni memstore definiscono i due parametri seguenti:
hbase.regionserver.global.memstore.UpperLimit
: definisce la percentuale massima del server di area che può essere usata dal memstore combinato.hbase.regionserver.global.memstore.LowerLimit
: definisce la percentuale minima del server di area che può essere usata dal memstore combinato.
Per ottimizzare le letture casuali, è possibile ridurre i limiti massimo e minimo del memstore.
Numero di righe recuperate quando si esegue l'analisi dal disco
L'impostazione hbase.client.scanner.caching
definisce il numero di righe lette dal disco quando il metodo next
viene chiamato su uno scanner. Il valore predefinito è 100. Maggiore è il numero, meno saranno le chiamate remote eseguite dal client al server di area e le analisi saranno quindi più rapide. Questa impostazione, tuttavia, aumenta la pressione della memoria sul client.
Importante
Non impostare il valore in modo tale che l'intervallo di tempo tra le chiamate al metodo next su uno scanner sia superiore al timeout dello scanner. La durata del timeout dello scanner è definita dalla proprietà hbase.regionserver.lease.period
.
Ottimizzare i carichi di lavoro con numero elevato di scritture
Le configurazioni seguenti sono importanti per migliorare le prestazioni dei carichi di lavoro con numero elevato di scritture.
Dimensioni massime del file di area
HBase archivia i dati in un formato di file interno, denominato HFile
. La proprietà hbase.hregion.max.filesize
definisce le dimensioni di un singolo HFile
oggetto per un'area. Un'area viene suddivisa in due aree se la somma di tutte HFiles
in un'area è maggiore di questa impostazione.
Maggiori sono le dimensioni del file di area, minore è il numero di suddivisioni. È possibile aumentare le dimensioni del file per determinare un valore che garantisca prestazioni in scrittura ottimali.
Evitare il blocco degli aggiornamenti
La proprietà
hbase.hregion.memstore.flush.size
definisce a quali dimensioni il memstore viene scaricato su disco. Le dimensioni predefinite sono pari a 128 MB.hbase.hregion.memstore.block.multiplier
Definisce il moltiplicatore di blocchi dell'area HBase. Il valore predefinito è 4. Il valore massimo consentito è 8.HBase blocca gli aggiornamenti se il memstore è pari a (
hbase.hregion.memstore.flush.size
*hbase.hregion.memstore.block.multiplier
) byte.Con i valori predefiniti delle dimensioni di flush e del moltiplicatore di blocco, gli aggiornamenti vengono bloccati quando le dimensioni del memstore sono pari a 128 * 4 = 512 MB. Per ridurre il conteggio dei blocchi degli aggiornamenti, aumentare il valore di
hbase.hregion.memstore.block.multiplier
.
Definire le dimensioni del memstore
I hbase.regionserver.global.memstore.upperLimit
parametri e hbase.regionserver.global.memstore.lowerLimit
definiscono le dimensioni memstore. Se si impostano questi parametri sullo stesso valore, si riducono le pause tra un'operazione di scrittura e l'altra (aumentando anche la frequenza di flush) e migliorano le prestazioni in scrittura.
Impostare il buffer di allocazione locale del memstore
La proprietà hbase.hregion.memstore.mslab.enabled
definisce l'utilizzo del buffer di allocazione locale memstore. Se abilitata (true), questa impostazione impedisce la frammentazione dell'heap durante un'operazione di scrittura intensa. Il valore predefinito è true.