HBase
 sql >> Base de données >  >> NoSQL >> HBase

Limitations de Hadoop, façons de résoudre les inconvénients de Hadoop

Nous avons discuté des fonctionnalités Hadoop dans notre précédent tutoriel Hadoop. Nous allons maintenant couvrir les limites de Hadoop. Les frameworks Apache Hadoop présentent divers inconvénients.

Par exemple, problème de petits fichiers, traitement lent, traitement par lots uniquement, latence, problème de sécurité, vulnérabilité, pas de mise en cache, etc.

Nous aborderons en détail toutes ces limitations de Hadoop dans ce tutoriel Hadoop.

Qu'est-ce qu'Hadoop ?

Apache Hadoop est un cadre logiciel open source pour le stockage et le traitement distribués d'une énorme quantité d'ensembles de données. Open source signifie qu'il est disponible gratuitement et même nous pouvons modifier son code source selon les exigences.

Apache Hadoop permet également d'exécuter des applications sur un système avec des milliers de nœuds. Son système de fichiers distribué offre des taux de transfert de données rapides entre les nœuds.

Il permet également au système de continuer à fonctionner en cas de défaillance du nœud. Les principales fonctionnalités de Hadoop sont les suivantes :

  • Dans Apache Hadoop, les données sont disponibles malgré une défaillance de la machine due à de nombreuses copies de données. Ainsi, si une machine tombe en panne, on peut accéder aux données à partir d'un autre chemin.
  • Apache Hadoop est évolutif, car il est facile d'ajouter du nouveau matériel au nœud.
  • Hadoop est hautement tolérant aux pannes, car par défaut, 3 répliques de chaque bloc sont stockées dans le cluster. Ainsi, si un nœud du cluster tombe en panne, les données de ce nœud peuvent être récupérées facilement à partir de l'autre nœud.
  • Apache Hadoop s'exécute sur un cluster de matériel de base qui n'est pas très cher.
  • Dans Apache Hadoop, les données sont stockées de manière fiable sur le cluster malgré une panne matérielle due à la réplication des données sur le cluster.

Bien que Hadoop soit l'outil le plus puissant du Big Data, il existe diverses limites. En raison des limitations de Hadoop, Apache Spark et Apache Flink ont ​​vu le jour.

Limites de Hadoop

Diverses limitations d'Apache Hadoop sont données ci-dessous avec leur solution-

un. Problèmes avec les petits fichiers

Le principal problème avec Hadoop est qu'il n'est pas adapté aux petites données. HDFS n'a pas la capacité de prendre en charge la lecture aléatoire de petits en raison de sa conception à haute capacité.

Les petits fichiers sont plus petits que la taille du bloc HDFS (128 Mo par défaut). Si vous stockez un si grand nombre de petits fichiers, HDFS ne peut pas gérer ces nombreux petits fichiers.

Comme HDFS a été conçu pour fonctionner avec un petit nombre de fichiers volumineux pour stocker de grands ensembles de données plutôt qu'un grand nombre de petits fichiers. S'il y a beaucoup de petits fichiers, alors le NameNode sera surchargé car il stocke l'espace de noms de HDFS.

Solution : 

Fusionnez simplement les petits fichiers pour créer des fichiers plus volumineux, puis copiez-les plus gros sur HDFS.

Archives Hadoop (fichiers HAR) traite du problème de nombreux petits fichiers. Hadoop Archives fonctionne en créant un système de fichiers en couches au-dessus de HDFS.

Avec la commande help Hadoop archive, les fichiers HAR sont créés; cela exécute une tâche MapReduce pour regrouper les fichiers archivés dans un petit nombre de fichiers HDFS. La lecture de fichiers via HAR n'est pas plus efficace que la lecture via HDFS.

Comme chaque accès au fichier HAR nécessite la lecture de deux fichiers d'index ainsi que le fichier de données à lire, cela le ralentira.

Les fichiers de séquence surmontent également le problème des petits fichiers. Dans lequel nous utilisons le nom du fichier comme clé et le contenu du fichier comme valeur.

En écrivant un programme pour les fichiers (100 Ko), nous pouvons les mettre dans un seul fichier de séquence, puis nous pouvons les traiter en continu en opérant sur le fichier de séquence.

MapReduce dans Hadoop peut diviser le fichier de séquence en morceaux et opérer sur chaque morceau indépendamment car le fichier de séquence est divisible.

En stockant des fichiers dans Hbase, nous pouvons surmonter le problème des petits fichiers. Nous ne stockons pas réellement des millions de petits fichiers dans HBase, mais ajoutons plutôt le contenu binaire du fichier dans une cellule.

b. Vitesse de traitement lente

MapReduce traite une énorme quantité de données. Dans Hadoop, MapReduce fonctionne en divisant le traitement en phases :Map et Réduire . Ainsi, MapReduce nécessite beaucoup de temps pour effectuer ces tâches, augmentant ainsi la latence. Par conséquent, réduit la vitesse de traitement.

Solution :

En traitant les données en mémoire, Apache Spark surmonte ce problème. Comme dans le traitement en mémoire, aucun temps n'est consacré au déplacement des données/processus vers et depuis le disque, ce qui le rend plus rapide.

Apache Spark est 100 fois plus rapide que MapReduce car il traite tout en mémoire.

Flink peut également résoudre ce problème. Flink traite plus rapidement que Spark en raison de son architecture de streaming.

c. Prise en charge du traitement par lots uniquement

Hadoop ne prend en charge que le traitement par lots, il n'est pas adapté au streaming de données. Par conséquent, les performances globales sont plus lentes. Le framework MapReduce n'exploite pas au maximum la mémoire du cluster Hadoop.

Solution

Apache Spark résout ce problème car il prend en charge le traitement de flux. Mais le traitement de flux Spark n'est pas aussi efficace que Flink car il utilise le traitement par micro-lots. Apache Flink améliore les performances globales car il fournit une exécution unique pour le streaming ainsi que le traitement par lots.

d. Pas de traitement en temps réel

Apache Hadoop est un framework de traitement par lots. Cela signifie qu'il prend une énorme quantité de données en entrée, les traite et produit le résultat.

Le traitement par lots est très efficace pour traiter un volume élevé de données, mais dépend de la taille des données traitées et de la puissance de calcul du système ; une sortie peut être considérablement retardée. Apache Hadoop n'est pas adapté au traitement en temps réel.

Solution :

Spark convient au traitement de flux. Le traitement à la vapeur fournit des données d'entrée/sortie continues. Il traite les données dans un court laps de temps.

Flink fournit un temps d'exécution unique pour les flux ainsi que le traitement par lots.

e. Traitement itératif

Apache Hadoop n'est pas très efficace pour le traitement itératif. Comme Hadoop n'est pas pris en charge, le flux de données cyclique (c'est-à-dire une chaîne d'étapes dans laquelle chaque sortie de l'étape précédente est l'entrée de l'étape suivante).

Solution :

Spark surmonte ce problème. Comme Apache Spark accède aux données de la RAM au lieu du disque. Cela améliore considérablement les performances d'un algorithme itératif qui accède au même ensemble de données à plusieurs reprises.

Dans Apache Spark, pour le traitement itératif, chaque itération doit être planifiée et exécutée séparément.

f. Latence

MapReduce dans Hadoop est plus lent car il prend en charge différents formats, structures et énormes quantités de données. Dans MapReduce, Map prend un ensemble de données et le convertit en un autre ensemble de données, où un élément individuel est décomposé en une paire clé-valeur.

Réduire prend la sortie de la carte comme et Réduire prend la sortie de la carte comme entrée et traite plus loin. MapReduce nécessite beaucoup de temps pour effectuer ces tâches, augmentant ainsi la latence.

Solution :

Apache Spark peut réduire ce problème. Bien que Spark soit le système batch, il est relativement plus rapide, car il met en cache une grande partie des données d'entrée en mémoire par RDD. Le streaming de données Apache Flink atteint une faible latence et un débit élevé.

g. Pas de facilité d'utilisation

Le développeur MapReduce dans Hadoop doit remettre du code pour chaque opération, ce qui rend le travail très difficile. Dans Hadoop, MapReduce n'a pas de mode interactif, mais l'ajout de hive et pig rend le travail avec MapReduce un peu plus facile.

Solution :

Spark a surmonté ce problème, car le Spark a un mode interactif. Ainsi, les développeurs et les utilisateurs peuvent avoir des commentaires intermédiaires pour les requêtes et autres activités.

Comme Spark a des tonnes d'opérateurs de haut niveau, il est donc facile de programmer Spark. On peut également utiliser Apache Flink car il dispose également d'opérateurs de haut niveau.

h. Problème de sécurité

Apache Hadoop est un défi dans la maintenance des applications complexes. Hadoop manque de chiffrement au niveau du stockage et du réseau, ce qui est un sujet de préoccupation majeur. Apache Hadoop prend en charge l'authentification Kerberos, qui est difficile à gérer.

Solution :

Apache Spark offre un bonus de sécurité. Si vous exécutez Apache Spark dans HDFS, il peut utiliser les ACL HDFS et les autorisations au niveau des fichiers.

je. Vulnérable par nature

Apache Hadoop est écrit en Java. Java est le langage le plus populaire, c'est pourquoi Java est le plus exploité par les cybercriminels.

j. Pas de mise en cache

Apache Hadoop n'est pas efficace pour la mise en cache. MapReduce ne peut pas mettre en cache les données intermédiaires en mémoire pour l'exigence supplémentaire et cela diminue les performances de Hadoop.

Solution :

Spark et Flink surmontent ce problème. Spark et Flink cachent les données en mémoire pour d'autres itérations qui améliorent les performances globales.

k. Code long

Apache Hadoop a 1 20 000 lignes de code. Le nombre de lignes produit le nombre de bogues. Par conséquent, l'exécution des programmes prendra plus de temps.

Solution :

Spark et Flink sont écrits en Scala et Java. Mais l'implémentation est en Scala, donc le nombre de lignes de code est inférieur à Hadoop. Ainsi, il faut moins de temps pour exécuter les programmes.

Conclusion

En raison de la limitation de Hadoop, le besoin de Spark et Flink est apparu. Ainsi, rendez le système plus convivial pour jouer avec une énorme quantité de données.

Apache Spark fournit un traitement en mémoire des données, améliorant ainsi la vitesse de traitement. Flink améliore les performances car il fournit une seule exécution pour le streaming ainsi que le traitement par lots.

Spark offre un bonus de sécurité. Par conséquent, on peut résoudre toutes ces limitations Hadoop en utilisant d'autres technologies de Big Data comme Apache Spark et Flink.

Si vous trouvez d'autres limitations de Hadoop, veuillez nous en informer en laissant un commentaire dans une section ci-dessous.