Configurare HBase - 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à.

Configurare HBase

Sebbene le HBase impostazioni predefinite dovrebbero funzionare per la maggior parte delle applicazioni, è possibile modificare le impostazioni HBase di configurazione. A tale scopo, utilizzate le proprietà delle classificazioni di HBase configurazione. Per ulteriori informazioni, consulta Configurazione delle applicazioni.

L'esempio seguente crea un cluster con una directory HBase principale alternativa basata su un file di configurazionemyConfig.json, archiviato in Amazon S3.

Nota

I caratteri di continuazione della riga Linux (\) sono inclusi per questioni di 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-7.5.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 il DNS nome host 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. Puoi farlo utilizzando la EMR console Amazon, il AWS Command Line Interface (AWS CLI) o il AWS SDK. Per ulteriori informazioni, consulta Specifica di una configurazione per un gruppo di istanze in un cluster in esecuzione.

Modifiche all'allocazione della memoria in YARN

HBasenon è in esecuzione come YARN applicazione, pertanto è necessario ricalcolare la memoria allocata a YARN e alle relative applicazioni, con conseguente riduzione della memoria complessiva disponibile YARN se HBase è installata. È necessario tenerne conto quando si pianifica di collocare YARN le applicazioni negli stessi HBase cluster. I tipi di istanza con meno di 64 GB di memoria dispongono della metà della memoria disponibileNodeManager, che viene quindi allocata a. HBase RegionServer Ad esempio, i tipi con memoria superiore a 64 GB, HBase RegionServer la memoria è limitata a 32 GB. Come regola generale, YARN l'impostazione della memoria è un multiplo della memoria operativa del MapReduce riduttore.

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

HBasenumeri di porta

Alcuni numeri di porta scelti HBase sono diversi da quelli predefiniti. Di seguito sono riportate le interfacce e le porte per HBase AmazonEMR.

HBaseporte
Interfaccia Porta Protocollo
HMaster 16000 TCP
HMasterINTERFACCIA UTENTE 16010 HTTP
RegionServer 16020 TCP
RegionServer Informazioni 16030 HTTP
RESTserver 8070 HTTP
RESTINTERFACCIA UTENTE 8085 HTTP
Server Thrift 9090 TCP
Thrift server UI 9095 HTTP
Importante

kms-http-portis 9700 e kms-admin-port is 9701 nella EMR versione 4.6.0 e successive di Amazon.

HBaseimpostazioni del sito da ottimizzare

È possibile configurare alcune o tutte le impostazioni del HBase sito per ottimizzare il HBase cluster 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 è quella di mantenere questo numero basso quando il payload per richiesta si avvicina all'intervallo di MB (inserimenti grandi, scansioni utilizzando una cache di grandi dimensioni) e alto quando il payload è piccolo (get, small put ed eliminazioni). ICVs 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. Se stai scrivendo molti dati nel HBase cluster e ciò causa frequenti suddivisioni, puoi aumentare questa dimensione per ingrandire 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" } } ]