Apache Spark

    Big Data : Qu’est ce que Apache Spark ?

    Apache Spark est aujourd’hui l’un des environnements de traitement distribué Big Data dans le monde les plus populaires. Apache Spark peut être déployé selon plusieurs formes. Sur cet environnement il est possible de coder selon différents langages de programmation. Comme par exemple Java, Python, Scala ou R. Spark prend en charge, les données en flux continu, les données structurées SQL, le machine learning. Les grandes entreprises de télécommunications, Les banques, les gouvernements et tous les grands géants de la technologie tels que Facebook,  Apple et Microsoft utilisent Apache Spark.


    Résultat de recherche d'images pour "apache spark"
    De base,  Apache Spark peut s’exécuter dans un mode de cluster qui nécessite simplement le framework Apache Spark et une machine virtuelle Java sur chaque ordinateur de votre cluster. Cependant, il existe une grande probabilité pour que votre besoin soit de bénéficier d’un système de gestion de ressources. Cela afin de répartir les nœuds de travail à la demande. Si vous avez beson d’une solution gérée, alors Apache Spark peut s’intégrer dans Amazon EMR, Google Cloud Dataproc et Microsoft Azure HDInsight. La société qui emploie les fondateurs d’Apache Spark, fournit aussi le framework d’analyse Databricks. Databricks est un service de gestion complet qui fournit des clusters Spark, une gestion de streaming, un développement intégré des ordinateurs portables basé sur le Web et des performances optimisées des E / S dans le cloud. une distribution standard Apache Spark.

    Spark contre Hadoop

    Résultat de recherche d'images pour "hadoop"

    Apache Spark contre Apache Hadoop le titre est un peu mal choisi. En effet, aujourd’hui Spark se présente dans la plupart des versions Hadoop. Spark se distingue grâce à 2 principaux avantages. Spark est l’environnement privilégié pour le traitement des données massives.

    Le premier bénéfice est sa vitesse de traitement. Spark peut effectuer des tâches jusqu’à cent fois plus  vite que MapReduce dans certaines situations. Notamment par rapport aux tâches à plusieurs étapes qui nécessitent l’écriture de l’état sur disque entre les étapes. Même les tâches Apache Spark pour lesquelles les données ne peuvent pas être entièrement contenues dans la mémoire ont tendance à être environ 10 fois plus rapides que leurs homologues MapReduce.

     

    Le deuxième bénéfice que propose Spark est son API parfaite pour les programmeurs. La vitesse de traitement est certes un atout très précieux. Mais la facilité d’utilisation de l’API de Spark est peut-être un atout plus précieux.

    Spark RDD

    L’innovation technique principale proposée par Apache Spark est le concept de RDD. RDD qui signifie Resilient Distributed Dataset, base de données résilientes et distribuées. Les RDD sont une abstraction de programmation. Elles représentent une collection immuable d’objets pouvant être distribué sur un cluster. Les actions sur les RDD peuvent être réparties sur le cluster et exécutées dans un processus de traitement par lots parallèle, ce qui permet un traitement parallèle rapide et évolutif.

    Il est possible de générer une RDD depuis un simple fichier texte. On peut aussi en créer a partir de bases de données SQL, NoSQL entre autres. Une bonne majorité de l’API Spark repose sur le concept de RDD. Cela favorisant la cartographie et la réduction des fonctionnalités. Mais proposant aussi une gestion intégrée pour les principales actions telles que la jonction de datasets, le filtrage, l’échantillonnage et l’agrégation.

    Spark opère de manière distribuée en associant un processus principal de commande qui divise une application Spark en sous-tâches et les reparti entre de nombreux processus exécuteurs. Il est possible de définir le nombre d’exécuteurs en fonction des besoins de l’application.

    Spark Streaming

    Spark Streaming a permis à Spark de se faire une place de choix parmi les environnements nécessitant un traitement en temps réel ou presque. Avant, Le traitement par lots et par flux sous Apache Hadoop était quelque chose de très spéciale. Il était possible de coder vos MapReduce selon vos besoin de traitement par lots puis, pour la diffusion en direct il fallait utiliser quelque chose comme Apache Storm. Cela implique forcement des bases de code changeantes qui doivent être synchronisées pour le domaine d’application bien qu’elles soient basées sur des cadres complètement différents, nécessitant des ressources différentes et impliquant des problèmes opérationnels différents pour les exécuter.

    Spark Streaming a généralisé le process par lots Apache Spark en streaming en découpant le flux en une série continue de microbatches, qui sont ensuite gérer à l’aide de l’API Apache Spark. Ainsi, le code dans les opérations par microbatches et en streaming peut partager le même code, fonctionnant sur le même environnement, ce qui réduit les frais du développeur et de l’opérateur.

    Une critique de l’approche Spark Streaming est que, dans les scénarios où une réponse à faible latence est  nécessaire pour les données entrantes. Les performances ne sont peut-être pas comparables à celles d’infrastructures compatibles avec la diffusion en continu telles que Apache Storm, Apache Flink et Apache Apex. qui utilisent tous une méthode de streaming pure plutôt que des microbatches.

    Quel future pour Apache Spark?

    La diffusion en streaming structurée amène des améliorations à Spark. Mais pour le moment elle repose sur le même schéma de traitement des données par diffusion en continu. Neanmoins,  Apache Spark s’efforce d’implémenter une diffusion continue sans microbatches. Ce qui devrait résoudre un grand nombre de soucis liés au traitement des réponses à faible temps de latence. Comme le streaming structuré se base sur le moteur Spark SQL. Tirer avantage de cette méthode de streaming n’aura besoin d’aucune modification du code.

    En plus d’augmenter les performances de streaming, Apache Spark ajoutera une gestion de l’apprentissage, et en particulier de deep learning via des pipelines d’apprentissage en profondeur. En utilisant la structure de pipeline existante de MLlib, vous serez en mesure de construire des classificateurs en seulement quelques lignes de code. Ainsi que d’appliquer des graphiques Tensorflow ou des modèles Keras personnalisés aux données entrantes. Ces graphiques et modèles peuvent même être enregistrés en tant que fonctions définies par l’utilisateur (Spark SQL UDF) personnalisées. De sorte que les modèles d’apprentissage en profondeur puissent être appliqués aux données dans le cadre d’instructions SQL.

     

    Pour le moment, aucune de ces fonctionnalités n’est prête pour la production. Mais étant donné le rythme de développement rapide observé auparavant dans Apache Spark. Elles devraient être prêtes pour les heures de grande écoute en 2018.

    Vous pouvez retrouvez notre article sur la data visualisation en cliquant ici.

    >