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.

  1. Per modificarlo, passare al riquadro Advanced HBase-env (Ambiente HBase avanzato) nella scheda Configs (Configurazioni) e quindi trovare l'impostazione HBASE_HEAPSIZE.

  2. Impostare il valore predefinito su 5.000 MB.

    `Apache Ambari HBase memory heapsize`.

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.

  1. 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).

    Apache HBase memory block cache size.

  2. 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.

Apache HBase number of rows fetched.

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.

`Apache HBase HRegion max filesize`.

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.

Apache HBase Region 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.

hbase.hregion.memstore.mslab.enabled.

Passaggi successivi