Le réglage des performances dans Hadoop aide à optimiser les performances du cluster Hadoop. Dans cet article MapReduce Performance Tuning, vous allez d'abord explorer les différentes manières d'améliorer les performances du cluster Hadoop et d'obtenir les meilleurs résultats de la programmation MapReduce dans Hadoop.
Ensuite, l'article couvrira sept méthodes ou concepts importants pour Hadoop MapReduce Performance Tuning. Ces méthodes sont le réglage de la mémoire dans Hadoop, l'amélioration des performances d'E/S, le débordement du disque dans Hadoop, le réglage des tâches de mappage et de réduction, l'écriture de combinaison, l'utilisation de jointures asymétriques et l'exécution spéculative.
Ces techniques peuvent être utilisées pour configurer des clusters Hadoop dans la production avec du matériel de base pour améliorer les performances avec un coût opérationnel minimal.
Introduction au réglage des performances de Hadoop MapReduce
L'installation du cluster Hadoop en production n'est que la moitié de la bataille gagnée. Pour l'administrateur Hadoop, il est extrêmement important d'ajuster la configuration du cluster Hadoop afin d'obtenir des performances maximales.
Le réglage des performances Hadoop permet d'optimiser les performances du cluster Hadoop et d'obtenir les meilleurs résultats lors de l'exécution de tâches MapReduce dans les entreprises Big Data.
Lors de l'installation de Hadoop, le cluster Hadoop est configuré avec les paramètres de configuration par défaut.
Il est très important pour les administrateurs Hadoop de se familiariser avec les différentes spécifications matérielles telles que la capacité de la RAM, le nombre de disques montés sur les DataNodes, le nombre de cœurs de processeur, le nombre de cœurs physiques ou virtuels, les cartes NIC, etc.
En tant que tel, il n'existe pas de technique unique de réglage des performances qui s'adapte à tous les travaux Hadoop car il est très difficile d'obtenir un équilibre entre toutes les ressources tout en résolvant le problème du Big Data.
Nous pouvons choisir les trucs et astuces de réglage des performances en fonction de la quantité de données à déplacer et du type de travail Hadoop à exécuter en production. Le réglage des performances le meilleur et le plus efficace permet d'atteindre des performances maximales.
Pour effectuer la même chose, nous devons répéter le processus mentionné ci-dessous jusqu'à ce que la sortie souhaitée soit obtenue de manière optimale.
Exécuter le travail -> Identifier le goulot d'étranglement -> Résoudre le goulot d'étranglement.
Donc, fondamentalement, pour le réglage des performances, nous devons d'abord exécuter le travail Hadoop MapReduce, identifier le goulot d'étranglement, puis résoudre le problème à l'aide des méthodes ci-dessous. Nous devons répéter l'étape ci-dessus jusqu'à ce que le niveau de performance souhaité soit atteint.
Conseils et astuces pour le réglage des performances de MapReduce
Les méthodes utilisées pour le réglage des performances de Hadoop MapReduce peuvent être classées en deux catégories. Ces deux catégories sont :
1. Réglage des performances basé sur les paramètres d'exécution Hadoop
2. Réglage des performances spécifiques à l'application Hadoop
Voyons maintenant comment nous pouvons améliorer les performances du cluster Hadoop en fonction de ces deux catégories.
1. Réglage des performances basé sur les paramètres d'exécution Hadoop
Cette catégorie traite du réglage des paramètres d'exécution Hadoop, tels que le réglage de l'utilisation du processeur, de la mémoire, du disque et du réseau pour le réglage des performances. Les techniques incluses dans cette catégorie sont :
un. Réglage de la mémoire
L'étape la plus importante pour garantir les performances maximales d'une tâche Hadoop consiste à régler les paramètres de configuration de la mémoire en surveillant l'utilisation de la mémoire sur le serveur.
Chaque tâche MapReduce dans Hadoop collecte les informations sur les différents enregistrements d'entrée lus, le nombre d'enregistrements de réduction, le nombre d'enregistrements mis en pipeline pour une exécution ultérieure, la mémoire d'échange, la taille de tas définie, etc.
Les tâches Hadoop ne sont généralement pas liées au CPU. Ainsi, la principale préoccupation est d'optimiser l'utilisation de la mémoire et les débordements de disque.
La meilleure règle empirique pour le réglage de la mémoire afin d'optimiser les performances consiste à s'assurer que les tâches MapReduce ne déclenchent pas d'échange. Cela signifie utiliser autant de mémoire que possible sans déclencher l'échange.
Des logiciels comme Cloudera Manager, Nagios ou Ganglia peuvent être utilisés pour surveiller l'utilisation de la mémoire d'échange.
Chaque fois qu'il y a une énorme utilisation de la mémoire d'échange, l'utilisation de la mémoire doit être optimisée en configurant le mapred.child.java.opts propriété en réduisant la quantité de RAM allouée à chaque tâche dans la mapred.child.java.opts .
Nous pouvons ajuster la mémoire pour la tâche en définissant le mapred.child.java.opts à -Xmx2048M dans un mapred-site.xml.
b. Minimiser le débordement du disque de carte
Disk IO est le goulot d'étranglement des performances dans Apache Hadoop. Il y avait beaucoup de paramètres que nous pouvions ajuster pour minimiser les déversements. Nous pouvons ajuster les paramètres comme :
- Compression de la sortie du mappeur
- Assurez-vous que le mappeur utilise 70 % de la mémoire de tas pour le tampon auxiliaire.
Mais pensez-vous que renverser fréquemment est vraiment une bonne idée ?
Il est fortement suggéré de ne pas renverser plus d'une fois car si nous renversons une fois, nous devons alors relire et réécrire toutes les données :3x l'IO.
c. Réglage des tâches du mappeur
Nous pouvons définir implicitement le nombre de tâches de la carte. Le moyen le plus courant et le plus efficace d'ajuster les performances Hadoop pour le mappeur consiste à contrôler le nombre de mappeurs et la taille de chaque tâche.
Tout en traitant les fichiers volumineux, le framework divise le fichier en plus petits morceaux afin que le mappeur puisse l'exécuter en parallèle. Cependant, l'initialisation d'un nouveau travail de mappeur prend généralement quelques secondes, ce qui représente également une surcharge et doit être minimisé. Donc, les suggestions pour la même chose sont :
- Réutiliser la tâche jvm
- Visez les tâches cartographiques qui durent de 1 à 3 minutes chacune. Donc, si le temps d'exécution moyen du mappeur est inférieur à une minute, augmentez mapred.min.split.size, pour allouer moins de mappeurs dans l'emplacement et ainsi réduire la surcharge d'initialisation du mappeur.
- Utilisez le format d'entrée de fichier Combiner pour un ensemble de fichiers plus petits.
2. Réglage des performances spécifiques à l'application Hadoop
Les techniques incluses dans cette catégorie sont :
un. Minimiser la sortie du mappeur
En minimisant la sortie du mappeur, nous pouvons améliorer les performances car la sortie du mappeur est très sensible aux E/S du disque, aux E/S du réseau et à la sensibilité de la mémoire lors de la phase de lecture aléatoire. Nous pouvons y parvenir en :
- Filtrer les enregistrements du côté mappeur au lieu du côté réducteur.
- Utiliser un minimum de données pour former la clé et la valeur de sortie de notre mappeur dans MapReduce.
- Compresser la sortie du mappeur
b. Équilibrage du chargement du réducteur
Les tâches de réduction déséquilibrées créent des problèmes de performances. Certains des réducteurs prennent la majeure partie de la sortie du mappeur et fonctionnent extrêmement longtemps par rapport aux autres réducteurs. Nous pouvons équilibrer le chargement du réducteur en :
- Implémentation d'une meilleure fonction de hachage dans la classe Partitioner.
- Écriture d'une tâche de prétraitement pour séparer les clés à l'aide de plusieurs sorties. Utilisez ensuite une autre tâche de réduction de carte pour traiter les clés spéciales qui peuvent causer le problème.
c. Réduisez les données intermédiaires avec Combiner dans Hadoop
De plus, nous pouvons ajuster les performances du cluster Hadoop en écrivant un combinateur. Combiner réduit la quantité de données à transférer du mappeur au réducteur. Cela s'avère bénéfique car cela réduit la congestion du réseau.
d. Exécution spéculative
Les performances des travaux MapReduce sont sérieusement affectées lorsque les tâches prennent plus de temps pour terminer leur exécution. L'exécution spéculative dans Hadoop est l'approche courante pour résoudre ce problème en sauvegardant les tâches lentes sur les autres machines.
Nous pouvons activer l'exécution spéculative en définissant les paramètres de configuration 'mapreduce.map.tasks.speculative.execution' et 'mapreduce.reduce.tasks.speculative.execution' à vrai. Cela réduira le temps d'exécution du travail.
Résumé
Enfin, nous avons vu que le réglage des performances dans Hadoop aide à optimiser les performances du cluster Hadoop. L'article expliquait divers trucs et astuces pour optimiser les performances du cluster Hadoop.
L'article a mis en évidence certaines des astuces les meilleures et les plus efficaces pour maximiser les performances.
Cependant, si vous avez des questions sur ce sujet, n'hésitez pas à les partager avec nous dans la section des commentaires.