Configuration de HBase - Amazon EMR

Configuration de HBase

Bien que les paramètres HBase par défaut soient adaptés à la plupart des applications, vous pouvez modifier vos paramètres de configuration HBase. Pour ce faire, utilisez les propriétés des classifications de configuration HBase. Pour de plus amples informations, veuillez consulter Configuration des applications.

L'exemple suivant crée un cluster avec un autre répertoire racine HBase basé sur un fichier de configuration, myConfig.json, stocké dans Amazon S3.

Note

Les caractères de continuation de ligne Linux (\) sont inclus pour des raisons de lisibilité. Ils peuvent être supprimés ou utilisés dans les commandes Linux. Pour Windows, supprimez-les ou remplacez-les par un caret (^).

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

Le myConfig.json fichier spécifie la hbase.rootdir propriété de la classification de configuration hbase-site, comme illustré dans l'exemple suivant. Remplacez ip-XXX-XX-XX-XXX.ec2.internal par le nom d'hôte DNS interne du nœud principal du cluster.

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

Avec la version 5.21.0 et ultérieures d'Amazon EMR, vous permet de remplacer les configurations de cluster et de spécifier des classifications de configuration supplémentaires pour chaque groupe d'instances dans un cluster en cours d'exécution. Pour ce faire, vous pouvez utiliser la console Amazon EMR, le AWS Command Line Interface (AWS CLI) ou le AWS SDK. Pour plus d'informations, consultez Fourniture d'une configuration pour un groupe d'instances dans un cluster en cours d'exécution.

Changements d'allocation de mémoire dans YARN

HBase ne s'exécute pas en tant qu'application YARN. Par conséquent, il est nécessaire de recalculer la mémoire allouée à YARN et à ses applications, ce qui se traduit par une réduction de la mémoire globale disponible pour YARN si HBase est installé. Vous devez tenir compte de ceci lorsque vous planifiez de placer des applications YARN et HBase sur les mêmes clusters. Les types d'instance avec moins de 64 Go de mémoire ont la moitié de la mémoire disponible pour NodeManager, qui est ensuite allouée au serveur de région HBase. Pour les types d'instance dotés d'une mémoire supérieure à 64 Go, la mémoire du serveur de région HBase est limitée à 32 Go. En règle générale, la mémoire de paramétrage YARN est un multiple de la mémoire des tâches de réducteur MapReduce.

Les tables dans Valeurs par défaut des paramètres de configuration des tâches présentent les modifications apportées aux paramètres YARN en fonction de la mémoire requise pour HBase.

Numéros des ports HBase

Certains numéros de ports choisis pour HBase sont différents des numéros par défaut. Vous trouverez ci-dessous les interfaces et les ports pour HBase sur Amazon EMR.

Ports HBase
utilisateur Port Protocole
HMaster 16000 TCP
Interface utilisateur de HMaster 16010 HTTP
RegionServer 16020 TCP
Infos sur RegionServer 16030 HTTP
Serveur REST 8070 HTTP
Interface utilisateur de REST 8085 HTTP
Serveur Thrift 9090 TCP
Interface utilisateur du serveur Thrift 9095 HTTP
Important

Le kms-http-port est 9700 et kms-admin-port est 9701 dans Amazon EMR version 4.6.0 et ultérieure.

Paramètres de site HBase à optimiser

Vous pouvez définir tout ou partie des paramètres de site HBase pour optimiser le cluster HBase en fonction de la charge de travail de votre application. Nous recommandons les paramètres suivants comme point de départ dans votre enquête.

zookeeper.session.timeout

Le délai d'attente par défaut est de 40 secondes (40 000 ms). En cas de défaillance d'un serveur de région, il s'agit du temps nécessaire au serveur maître pour remarquer l'absence du serveur de région et commencer la récupération. Pour aider le serveur maître à récupérer plus rapidement, vous pouvez réduire cette valeur à une période de temps plus courte. L'exemple suivant utilise 30 secondes ou 30 000 ms :

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

hbase.regionserver.handler.count

Cela définit le nombre de threads que le serveur de région laisse ouverts pour diffuser les demandes aux tables. La valeur par défaut de 10 est faible, afin d'empêcher les utilisateurs de supprimer leurs serveurs de région lorsqu'ils utilisent de grands tampons d'écriture avec un grand nombre de clients simultanés. La règle de base est de maintenir ce nombre à un niveau bas lorsque la charge utile par demande approche de la plage du Mo (opérations big de grande ampleur, analyses à l'aide d'un cache volumineux) et à un niveau élevé lorsque la charge utile est faible (opérations get, put de petite taille, ICV, suppressions). L'exemple suivant augmente le nombre de threads ouverts à 30 :

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

hbase.hregion.max.filesize

Ce paramètre régit la taille, en octets, des régions individuelles. Par défaut, l'attribut est défini sur 1073741824. Si vous écrivez beaucoup de données dans votre cluster HBase et que cela provoque des divisions fréquentes, vous pouvez augmenter cette taille pour agrandir des régions individuelles. Cela réduit les divisions mais augmente le temps nécessaire pour équilibrer la charge des régions d'un serveur à un autre.

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

hbase.hregion.memstore.flush.size

Ce paramètre régit la taille maximale de memstore, en octets, avant son vidage sur le disque. Par défaut, il s'agit de 134217728. Si votre charge de travail se compose de courtes périodes intensives d'opérations d'écriture, vous pouvez augmenter cette limite afin que toutes les écritures restent en mémoire au cours de ces périodes et soient vidées sur le disque plus tard. Cela peut améliorer les performances au cours de ces périodes intensives.

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