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à.
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-labelemr-7.13.0--applications Name=HBase \ --instance-type m5.xlarge --instance-count 3 --configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/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 l'hostname DNS interno del nodo primario 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 tale scopo, puoi utilizzare la console Amazon EMR, AWS Command Line Interface (AWS CLI) o l' AWS SDK. 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 istanza con meno di 64 GB di memoria hanno metà della memoria disponibileNodeManager, che viene quindi allocata all'HBase. RegionServer Ad esempio, i tipi con memoria superiore a 64 GB, la RegionServer memoria HBase ha un limite di 32 GB. Come regola generale, la memoria di impostazione YARN è un multiplo della memoria di lavoro del MapReduce riduttore.
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.
| Interfaccia | Porta | Protocollo |
|---|---|---|
| HMaster | 16000 | TCP |
| HMaster UI | 16010 | HTTP |
| RegionServer | 16020 | TCP |
| RegionServer Informazioni | 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 10737418240. 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": "10737418240" } } ]
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" } } ]
Considerazioni sulle prestazioni
Abilitazione di Z Garbage Collector (ZGC) per HBase
Con Amazon EMR versione 7.10.0 e successive, gli utenti possono configurare senza problemi le impostazioni Garbage Collection (GC) per il proprio cluster HBase. Consigliamo di abilitare Z Garbage Collector (ZGC) per ottenere tempi di pausa GC a bassa latenza e inferiori al millisecondo.
Ecco una configurazione per abilitare ZGC per HBase (s): RegionServer
[ { "Classification": "hbase-env", "Properties": {}, "Configurations": [ { "Classification": "export", "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-21", "HBASE_REGIONSERVER_GC_OPTS": "\"-XX:+UseZGC -XX:+ZGenerational\"" } } ] } ]
Nota
La variabile di ambiente JAVA_HOME deve essere impostata quando si utilizza Generational ZGC (consigliato) perché è stata introdotta in JDK 21, se si desidera utilizzare la modalità non generazionale (senza-XX:+ZGenerational) di ZGC non è necessario impostare JAVA_HOME. In JDK 24, la modalità non generazionale di ZGC è stata rimossa.
Sintonizzazione ZGC
-
Abilita JVM Fixed Heap
Z Garbage Collector (ZGC) offre prestazioni più efficienti se configurato con una memoria a heap fisso, eliminando il sovraccarico dovuto alla restituzione della memoria al sistema operativo. Per configurare la memoria heap fissa per il cluster HBase, utilizzate la seguente configurazione:
[ { "Classification": "hbase", "Properties": { "hbase.regionserver.fixed.heap.enabled": "true" } } ] -
Attiva Pre-touch
L'attivazione del pre-touch migliora le prestazioni della Garbage Collection (GC) riducendo la latenza iniziale e fornendo prestazioni più prevedibili. Per abilitare il pre-touch per il cluster HBase, utilizzate la seguente configurazione:
[ { "Classification": "hbase-env", "Properties": {}, "Configurations": [ { "Classification": "export", "Properties": { "JAVA_HOME": "/usr/lib/jvm/jre-21", "HBASE_REGIONSERVER_GC_OPTS": "\"-XX:+UseZGC -XX:+ZGenerational -XX:+AlwaysPreTouch\"" } } ] } ]