Optimiser Apache HBase avec Apache Ambari dans Azure HDInsight
Apache Ambari est une interface web qui permet de gérer et de superviser les clusters HDInsight. Pour avoir une présentation de l’interface utilisateur web d’Ambari, consultez Gérer des clusters HDInsight à l’aide de l’interface utilisateur web d’Apache Ambari.
La configuration d’Apache HBase peut être modifiée à partir de l’onglet HBase Configs. Les sections suivantes décrivent certains paramètres de configuration importants qui affectent les performances de HBase.
Définir HBASE_HEAPSIZE
Notes
Cet article contient des références au terme maître, un terme que Microsoft n’utilise plus. Lorsque le terme sera supprimé du logiciel, nous le supprimerons de cet article.
La taille de tas HBase spécifie la quantité maximale de tas à utiliser en mégaoctets par les serveurs de région et maîtres. La valeur par défaut est 1 000 Mo. Cette valeur doit être adaptée à la charge de travail du cluster.
Pour la modifier, accédez au volet Advanced HBase-env (HBase-env avancé) dans l’onglet Configs (Configurations) et recherchez le paramètre
HBASE_HEAPSIZE
.Remplacez la valeur par défaut par 5 000 Mo.
Optimiser les charges de travail nécessitant beaucoup de lectures
Les configurations suivantes sont importantes pour améliorer les performances des charges de travail nécessitant beaucoup de lectures.
Taille du cache de blocs
Le cache de blocs est le cache de lecture. Le paramètre hfile.block.cache.size
contrôle la taille du cache de bloc. La valeur par défaut est de 0,4, soit 40 % de la mémoire totale du serveur de la région. Plus la taille du cache de blocs est importante, plus rapides sont les lectures aléatoires.
Pour modifier ce paramètre, accédez à l’onglet Settings (Paramètres) dans l’onglet Configs (Configurations) de HBase, puis recherchez % of RegionServer Allocated to Read Buffers (% du serveur de région alloué aux mémoires tampons de lecture) .
Pour modifier la valeur, sélectionnez l’icône Edit (Modifier) .
Taille de memstore
Toutes les modifications sont stockées dans la mémoire tampon appelée Memstore. Cette mémoire tampon augmente la quantité totale de données qui peuvent être écrites sur le disque en une seule opération. Elle accélère également l’accès aux modifications récentes. La taille de Memstore définit les deux paramètres suivants :
hbase.regionserver.global.memstore.UpperLimit
: définit le pourcentage maximal du serveur de région que Memstore peut utiliser.hbase.regionserver.global.memstore.LowerLimit
: définit le pourcentage minimal du serveur de région que Memstore peut utiliser.
Pour optimiser les lectures aléatoires, vous pouvez réduire les limites supérieure et inférieure de Memstore.
Nombre de lignes extraites lors de l’analyse du disque
Le paramètre hbase.client.scanner.caching
définit le nombre de lignes lues sur le disque lorsque la méthode next
est appelée sur un scanneur. La valeur par défaut est 100. Plus ce nombre est élevé, moins les appels distants effectués depuis le client vers le serveur de région sont nombreux, ce qui accélère l’analyse. Toutefois, ce paramètre augmente également la sollicitation de la mémoire sur le client.
Important
Ne définissez pas une valeur qui rende le délai entre l’appel de la méthode suivante sur un scanneur supérieure au délai du scanneur. La durée d’expiration du scanneur est définie par la propriété hbase.regionserver.lease.period
.
Optimiser les charges de travail nécessitant beaucoup d’écritures
Les configurations suivantes sont importantes pour améliorer les performances des charges de travail nécessitant beaucoup d’écritures.
Taille maximale du fichier de région
HBase stocke les données dans un format de fichier interne, appelé HFile
. La propriété hbase.hregion.max.filesize
définit la taille d’un fichier HFile
unique pour une région. Une région est fractionnée en deux si la somme de tous les fichiers HFiles
d’une région est supérieure à ce paramètre.
Plus la taille du fichier de région est importante, plus le nombre de fractionnements est réduit. Vous pouvez augmenter la taille du fichier pour déterminer une valeur qui optimise les performances d’écriture.
Éviter le blocage des mises à jour
La propriété
hbase.hregion.memstore.flush.size
définit la taille à laquelle Memstore est vidé sur le disque. La taille par défaut est de 128 Mo.Le
hbase.hregion.memstore.block.multiplier
définit le multiplicateur de bloc de la région HBase. La valeur par défaut est 4. La valeur maximale autorisée est 8 Go.HBase bloque les mises à jour si le paramètre Memstore est de (
hbase.hregion.memstore.flush.size
*hbase.hregion.memstore.block.multiplier
) octets.Avec les valeurs par défaut de la taille de vidage et du multiplicateur de bloc, les mises à jour sont bloquées quand Memstore a une taille égale à 128 * 4 = 512 Mo. Pour réduire le nombre de blocages des mises à jour, augmentez la valeur de
hbase.hregion.memstore.block.multiplier
.
Définir la taille de Memstore
Les paramètres hbase.regionserver.global.memstore.upperLimit
et hbase.regionserver.global.memstore.lowerLimit
définissent la taille de Memstore. En définissant deux valeurs égales, vous réduisez les pauses pendant les écritures (ce qui augmente la fréquence des vidages) et améliore les performances d’écriture.
Définir la mémoire tampon d’allocation locale de Memstore
La propriété hbase.hregion.memstore.mslab.enabled
définit l’allocation locale de l’utilisation de la mémoire tampon Memstore. Lorsqu’il est activé (true), ce paramètre empêche la fragmentation des tas pendant une opération nécessitant beaucoup d’écritures. La valeur par défaut est true.