Configurazione di HBase - Amazon EMR

Configurazione di HBase

Anche se la maggior parte delle applicazioni funziona correttamente con le impostazioni predefinite, puoi scegliere di modificare le impostazioni di configurazione HBase. A tale scopo, utilizza le proprietà delle classificazioni di configurazione HBase. Per ulteriori informazioni, consulta Configurazione delle applicazioni.

L'esempio seguente consente di creare un cluster con una directory principale HBase alternativa basata su un file di configurazione, myConfig.json, archiviato in Amazon S3.

Nota

I caratteri di continuazione della riga Linux (\) sono inclusi per la leggibilità. Possono essere rimossi o utilizzati nei comandi Linux. Per Windows, rimuoverli o sostituirli con un accento circonflesso (^).

aws emr create-cluster --release-label emr-5.36.1 --applications Name=HBase \ --instance-type m5.xlarge --instance-count 3 --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json

Il file myConfig.json specifica la proprietà hbase.rootdir per la classificazione della configurazione hbase-site come mostrato nel seguente esempio. Sostituisci ip-XXX-XX-XX-XXX.ec2.internal con il nome host DNS interno del nodo master del cluster.

[ { "Classification":"hbase-site", "Properties": { "hbase.rootdir": "hdfs://ip-XXX-XX-XX-XXX.ec2.internal:8020/user/myCustomHBaseDir" } } ]
Nota

Con Amazon EMR versione 5.21.0 e successive, puoi sovrascrivere le configurazioni del cluster e specificare classificazioni di configurazione aggiuntive per ogni gruppo di istanze in un cluster in esecuzione. A questo scopo, utilizza la console di Amazon EMR, la AWS Command Line Interface (AWS CLI) o l'SDK AWS. Per ulteriori informazioni, consulta Specifica di una configurazione per un gruppo di istanze in un cluster in esecuzione.

Modifiche apportate all'allocazione di memoria in YARN

Poiché HBase non è in esecuzione come un'applicazione YARN, è necessario ricalcolare la quantità di memoria allocata per YARN e le relative applicazioni. Ciò risulta in una riduzione della memoria complessiva disponibile in YARN se HBase è installato. Durante la pianificazione occorre tenere conto di ciò per co-ubicare le applicazioni YARN e HBase sugli stessi cluster. I tipi di istanze con meno di 64 GB di memoria dispongono della metà della memoria disponibile in NodeManager, che viene quindi allocata ad HBase RegionServer. Per i tipi di istanze con memoria superiore a 64 GB, la memoria HBase RegionServer è limitata a 32 GB. Come regola generale, la memoria impostazione YARN è un multiplo della memoria dell'attività del riduttore MapReduce.

Le tabelle in Valori predefiniti per le impostazioni di configurazione delle attività mostrano le modifiche alle impostazioni YARN in base alla memoria necessaria per HBase.

Numeri di porta HBase

Alcuni numeri di porta scelti per HBase differiscono dall'impostazione predefinita. Di seguito sono riportate le interfacce e le porte per HBase su Amazon EMR.

Porte HBase
Interfaccia Porta Protocollo
HMaster 16000 TCP
HMaster UI 16010 HTTP
RegionServer 16020 TCP
RegionServer Info 16030 HTTP
Server REST 8070 HTTP
IU REST 8085 HTTP
Server Thrift 9090 TCP
Thrift server UI 9095 HTTP
Importante

La kms-http-port è 9700 e la kms-admin-port è 9701 in Amazon EMR versione 4.6.0 e successive.

Impostazioni sito HBase da ottimizzare

Puoi impostare una qualsiasi o tutte le impostazioni sito HBase per ottimizzare il cluster HBase per il carico di lavoro dell'applicazione. Ti consigliamo le seguenti impostazioni come punto di partenza nella tua indagine.

zookeeper.session.timeout

Il timeout predefinito è 40 secondi (40000 ms). Se un server della regione si arresta in modo anomalo, questo è il tempo impiegato dal server master per notare l'assenza del server della regione e avviare il ripristino. Per accelerare il ripristino del server master, puoi ridurre questo valore a un periodo di tempo più breve. Nell'esempio seguente vengono utilizzati 30 secondi o 30000 ms:

[ { "Classification":"hbase-site", "Properties": { "zookeeper.session.timeout": "30000" } } ]

hbase.regionserver.handler.count

Definisce il numero di thread che vengono mantenuti aperti dal server della regione per servire richieste a tabelle. L'impostazione predefinita di 10 è bassa, in modo da impedire agli utenti di interrompere i propri server della regione durante l'utilizzo di buffer di scrittura di grandi dimensioni con un numero elevato di client simultanei. La regola generale è mantenere questo numero basso quando il payload per richiesta si avvicina all'intervallo di MB (put grandi, scan utilizzando una cache di grandi dimensioni) e alto quando il payload è di dimensioni ridotte (get, put piccoli, ICV, delete). Nell'esempio seguente il numero di thread aperti viene aumentato a 30:

[ { "Classification":"hbase-site", "Properties": { "hbase.regionserver.handler.count": "30" } } ]

hbase.hregion.max.filesize

Questo parametro controlla le dimensioni, in byte, delle singole regioni. Per impostazione predefinita, è impostato su 1073741824. Nel caso di scrittura di una quantità elevata di dati nel cluster HBase che causa frequenti suddivisioni, puoi aumentare queste dimensioni per rendere più grandi le singole regioni. Ciò consente di ridurre le suddivisioni ma richiede più tempo per bilanciare il carico delle regioni da un server a un altro.

[ { "Classification":"hbase-site", "Properties": { "hbase.hregion.max.filesize": "1073741824" } } ]

hbase.hregion.memstore.flush.size

Questo parametro controlla le dimensioni massime di memstore, in byte, prima che venga svuotato nel disco. Per impostazione predefinita, tale valore è 134217728. Se il carico di lavoro è costituito da brevi picchi di operazioni di scrittura, potrebbe essere necessario aumentare questo limite in modo che tutte le scritture rimangono in memoria durante il picco e vengano svuotate nel disco più tardi. Ciò può incrementare le prestazioni durante i picchi.

[ { "Classification":"hbase-site", "Properties": { "hbase.hregion.memstore.flush.size": "134217728" } } ]