apache-spark

    Apache Spark: Avantages et Inconvénients

    Apache Spark est l’outil de génération de données massives largement utilisé par les industries  Apache Spark atteint des performances élevées pour les données par lots et en continu, en utilisant un planificateur DAG de pointe, un optimiseur de requêtes et un moteur d’exécution physique. Spark est principalement conçu pour la science des données et les abstractions de Spark facilitent les choses. Apache Spark fournit des API de haut niveau en Java, Scala, Python et R. Il dispose également d’un moteur optimisé pour les graphes d’exécution généraux. En traitement de données, Apache Spark est le plus grand projet open source.

    Dans cet article, nous allons voir les avantages et inconvénients.

    AvantagesRésultat de recherche d'images pour "le symbol plus"

    Calcul en mémoire dans Spark

    Avec le traitement en mémoire, nous pouvons augmenter la vitesse de traitement. Ici, les données sont mises en cache, nous n’avons donc pas besoin d’extraire les données du disque, le temps est donc sauvegardé. Spark dispose d’un moteur d’exécution DAG qui facilite le calcul en mémoire et le flux de données acyclique se traduisant par une vitesse élevée.

    Rapidité de Traitement

    Avec Apache Spark, on atteint une vitesse de traitement de données élevée. Environ 100 fois plus rapide en mémoire et 10 fois plus rapide sur le disque. Ceci est rendu possible en réduisant le nombre de lecture-écriture sur le disque.

    Dynamique dans la nature

    Il est facilement possible de développer une application parallèle, car Spark fournit 80 opérateurs de haut niveau.

    Tolérance aux pannes dans l’étincelle

    Apache Spark offre une tolérance aux pannes via Spark abstraction-RDD. Les RDD Spark sont conçus pour gérer l’échec de tout nœud de travail du cluster. Ainsi, cela garantit une perte de données nulle.

    Traitement de flux en temps réel

    Spark a une disposition pour le traitement de flux en temps réel. Auparavant, le problème avec Hadoop MapReduce était qu’il pouvait gérer et traiter des données déjà présentes, mais pas les données en temps réel. mais avec Spark Streaming, nous pouvons résoudre ce problème.

    InconvénientsRésultat de recherche d'images pour "le symbol moins"

    L’Absence de support pour le traitement en temps réel

    Dans Spark Streaming, le flux de données en direct qui arrive est divisé en lots de l’intervalle prédéfini, et chaque lot de données est traité comme une base de données distribuée résiliente Spark (RDD). Ensuite, ces RDD sont traités à l’aide d’opérations telles que mapper, réduire, joindre, etc. Le résultat de ces opérations est envoyé par lots. Ainsi, ce n’est pas un traitement en temps réel, mais Spark gère presque en temps réel des données temps réel. Le traitement par micro-lots a lieu dans Spark Streaming.


    Problème avec les petits fichiers

    Si nous utilisons Spark avec Hadoop, nous rencontrons un problème pour la gestion de petits fichiers. HDFS fournit un nombre limité de gros fichiers plutôt qu’un grand nombre de petits fichiers. Un autre endroit où Spark Legs est derrière est que nous stockons les données compressées dans S3. Ce modèle est très bien sauf quand il y a beaucoup de petits fichiers compressés. La mission de Spark consiste maintenant à conserver ces fichiers sur le réseau et à les décompresser. Les fichiers compressés ne peuvent être décompressés que si l’intégralité du fichier se trouve sur un noyau. Il faudra donc beaucoup de temps pour graver leurs fichiers de décompression principaux en séquence.

    Dans la RDD résultante, chaque fichier deviendra une partition; du coup, il y aura une grande quantité de petites partition dans une RDD. Maintenant, si nous voulons que notre traitement soit efficace, les RDD doivent être repartitionnés dans un format gérable. 


    Aucun système de gestion de fichiers

    Apache Spark n’a pas son propre système de gestion de fichiers. Il repose donc sur une autre plate-forme comme Hadoop ou une autre plate-forme sur le cloud. C’est l’un des problèmes connus de Spark. La capacité en mémoire peut être un goulot d’étranglement lorsque nous voulons un traitement rentable des mégadonnées, car conserver des données en mémoire coûte assez cher. En effet, la consommation de mémoire est très élevée et elle n’est pas gérée de manière conviviale. Apache Spark nécessite beaucoup de RAM pour s’exécuter en mémoire, le coût de Spark est donc assez élevé.

    Manque d’algorithmes

    Spark MLlib est à la ramasse en ce qui concerne un certain nombre d’algorithmes disponibles, tels que la distance de Tanimoto.

    Optimisation manuelle

    Le travail Spark doit être optimisé manuellement et convient à des jeux de données spécifiques. Si nous voulons que la partition et le cache dans Spark soient corrects, ils doivent être contrôlés manuellement.

    Traitement itératif

    Dans Spark, les données sont itérées par lots et chaque itération est planifiée et exécutée séparément.

    Temps de Latence

    Apache Spark a une latence plus élevée par rapport à Apache Flink.

    Spark ne prend pas en charge les critères de fenêtre basés sur les enregistrements. Il n’a que des critères de fenêtre temporels.

     

    Conclusion:

    Kafka est une plate-forme unifiée permettant de gérer tous les flux de données en temps réel. Kafka prend en charge la livraison de messages à faible temps de latence et offre une garantie de tolérance de panne en cas de panne de la machine. Il a la capacité de gérer un grand nombre de consommateurs divers. Kafka est très rapide, effectue 2 millions d’écritures / seconde. Kafka conserve toutes les données sur le disque, ce qui signifie essentiellement que toutes les écritures sont stockées dans la mémoire cache de la page du système d’exploitation (RAM). Cela rend très efficace le transfert de données du cache de pages vers un socket réseau.

     

    >