Qu'est qu'Apache Spark ?
Apache Spark est un système de traitement open source distribué, utilisé pour les charges de travail de big data. Il utilise la mise en cache en mémoire, ainsi que l'exécution de requête optimisée pour les requêtes d'analyse rapides par rapport aux données de toutes tailles. Il fournit des API de développement en Java, Scala, Python et R, et prend en charge la réutilisation du code dans plusieurs charges de travail : traitement par lots, requêtes interactives, analytique en temps réel, machine learning et traitement de graphes. Il est utilisé par des organisations de tous les secteurs, notamment à la FINRA, chez Yelp, Zillow, DataXu, Urban Institute et CrowdStrike.
Quelle est l'histoire d'Apache Spark ?
Apache Spark a débuté en 2009 en tant que projet de recherche au sein de l'AMPLab de l'université de Berkley. Il s'agit d'une collaboration impliquant des étudiants, des chercheurs et des professeurs, axée sur les domaines d'applications gourmands en données. L'objectif de Spark était de créer un nouveau cadre, optimisé pour les traitements itératifs rapides tels que le machine learning et l'analyse interactive des données, tout en conservant la capacité de mise à l'échelle et la tolérance aux pannes de Hadoop MapReduce. Le premier article, intitulé « Spark : Cluster Computing with Working Sets », a été publié en juin 2010, alors que Spark était un projet open source sous licence BSD. En juin 2013, Spark a obtenu le statut d'incubation auprès de l'Apache Software Foundation (ASF) et a été établi en tant que projet Apache de premier niveau en février 2014. Spark peut fonctionner de manière autonome, sur Apache Mesos ou, le plus souvent, sur Apache Hadoop.
Comment fonctionne Apache Spark ?
Hadoop MapReduce est un modèle de programmation destiné au traitement de jeux de big data à l'aide d'un algorithme distribué parallèle. Les développeurs peuvent écrire des opérateurs massivement parallélisés, sans avoir à se soucier de la répartition du travail et de la tolérance aux pannes. Cependant, l'un des défis de MapReduce est le processus séquentiel en plusieurs étapes nécessaire à l'exécution d'une tâche. À chaque étape, MapReduce lit les données du cluster, effectue des opérations et réécrit les résultats dans HDFS. Comme chaque étape nécessite une lecture et une écriture sur le disque, les tâches MapReduce sont plus lentes en raison de la latence des E/S du disque.
Spark a été créé pour remédier aux limites de MapReduce, en effectuant un traitement en mémoire, en réduisant le nombre d'étapes d'une tâche et en réutilisant les données dans le cadre de plusieurs opérations parallèles. Avec Spark, une seule étape est nécessaire : les données sont lues en mémoire, les opérations sont effectuées et les résultats sont réécrits, ce qui se traduit par une exécution beaucoup plus rapide. Spark réutilise également les données en utilisant un cache en mémoire pour accélérer considérablement les algorithmes de machine learning qui appellent à plusieurs reprises une fonction sur le même jeu de données. La réutilisation des données s'effectue par la création de DataFrames, une abstraction de Resilient Distributed Dataset (RDD), qui est un ensemble d'objets mis en cache en mémoire et réutilisés dans plusieurs opérations Spark. Cela réduit considérablement la latence, rendant Spark beaucoup plus rapide que MapReduce, en particulier lors du machine learning et de l'analytique interactive.
Principales différences : Apache Spark vs Apache Hadoop
Outre les différences de conception entre Spark et Hadoop MapReduce, de nombreuses entreprises ont trouvé ces cadres de big data complémentaires, en les utilisant ensemble pour relever un défi métier plus vaste.
Hadoop est un cadre open source qui utilise le système de fichiers distribué Hadoop (HDFS) comme stockage, YARN comme moyen de gestion des ressources informatiques utilisées par différentes applications et une mise en œuvre du modèle de programmation MapReduce en tant que moteur d'exécution. Dans une mise en œuvre Hadoop classique, différents moteurs d'exécution sont également déployés, tels que Spark, Tez et Presto.
Spark est un cadre open source axé sur les requêtes interactives, le machine learning et les charges de travail en temps réel. Il ne possède pas son propre système de stockage, mais exécute de l'analytique sur d'autres systèmes de stockage tels que HDFS, ou sur d'autres magasins populaires tels qu'Amazon Redshift, Amazon S3, Couchbase, Cassandra, etc. Spark on Hadoop utilise YARN pour partager un cluster et un jeu de données communs à ceux des autres moteurs Hadoop, garantissant ainsi des niveaux de service et de réponse cohérents.
Quels sont les avantages d'Apache Spark ?
Apache Spark présente de nombreux avantages qui en font l'un des projets les plus actifs de l'écosystème Hadoop. parmi lesquels :
Rapide
Grâce à la mise en cache en mémoire et à l'exécution de requête optimisée, Spark peut exécuter les requêtes d'analyse rapides par rapport aux données de toutes tailles.
Facile d'utilisation pour les développeurs
Apache Spark offre une prise en charge native de Java, Scala, R et Python, pour vous proposer un large éventail de langages pour la création de vos applications. Ces API facilitent la tâche de vos développeurs, car elles masquent la complexité du traitement distribué derrière des opérateurs simples et de haut niveau qui réduisent considérablement la quantité de code requise.
Charges de travail multiples
Apache Spark permet d'exécuter plusieurs charges de travail, notamment des requêtes interactives, des analytiques en temps réel, le machine learning et le traitement de graphes. Une application peut combiner plusieurs charges de travail de manière fluide.
Que sont les charges de travail Apache Spark ?
Le cadre Spark inclut :
- Spark Core comme base de la plateforme
- Spark SQL pour les requêtes interactives
- Spark Streaming pour l'analytique en temps réel
- Spark MLlib pour le machine learning
- Spark GraphX pour le traitement de graphes
Spark Core
Spark Core est la base de la plateforme. Il est responsable de la gestion de la mémoire, de la résolution des pannes, de la planification, de la distribution et de la surveillance des tâches, ainsi que de l'interaction avec les systèmes de stockage. Spark Core est exposé via une interface de programmation d'application (API) conçue pour Java, Scala, Python et R. Ces API cachent la complexité du traitement distribué derrière des opérateurs simples et de haut niveau.
MLlib
Machine Learning
Spark inclut MLlib, une bibliothèque d'algorithmes permettant de faire du machine learning sur des données à grande échelle. Les modèles de machine learning peuvent être entraînés par des scientifiques des données avec R ou Python sur n'importe quelle source de données Hadoop, enregistrés à l'aide de MLlib et importés dans un pipeline basé sur Java ou Scala. Spark a été conçu pour un calcul rapide et interactif qui s'exécute en mémoire, ce qui permet au machine learning de fonctionner rapidement. Les algorithmes incluent la capacité de procéder à la classification, à la régression, au clustering, au filtrage collaboratif et à l'exploration de modèles.
Spark Streaming
En temps réel
Spark Streaming est une solution en temps réel qui tire parti de la capacité de planification rapide de Spark Core pour effectuer des analytiques de streaming. Il ingère les données par mini-lots et permet l'analytique de ces données à l'aide du même code d'application écrit pour l'analytique par lots. Cela améliore la productivité des développeurs, car ils peuvent utiliser le même code pour le traitement par lots et pour les applications de streaming en temps réel. Spark Streaming prend en charge les données de Twitter, Kafka, Flume, HDFS et ZeroMQ, ainsi que de nombreuses autres données issues de l'écosystème Spark Packages.
Spark SQL
Requêtes interactives
Spark SQL est un moteur de requêtes distribué qui fournit des requêtes interactives à faible latence jusqu'à 100 fois plus rapidement que MapReduce. Il inclut un optimiseur basé sur les coûts, un stockage en colonnes et la génération de code pour des requêtes rapides, tout en s'adaptant à des milliers de nœuds. Les analystes métier peuvent utiliser le langage SQL standard ou le langage de requête Hive pour interroger les données. Les développeurs peuvent utiliser des API, disponibles en Scala, Java, Python et R. Elles prennent en charge diverses sources de données prêtes à l'emploi, notamment JDBC, ODBC, JSON, HDFS, Hive, ORC et Parquet. D'autres magasins populaires, telles qu'Amazon Redshift, Amazon S3, Couchbase, Cassandra, MongoDB, Salesforce.com, Elasticsearch et bien d'autres, sont disponibles dans l'écosystème Spark Packages.
GraphX
Traitement des graphes
Spark GraphX est un cadre de traitement de graphes distribué basé sur Spark. GraphX fournit un ETL, une analyse exploratoire et un calcul graphique itératif pour permettre aux utilisateurs de créer et de transformer de manière interactive une structure de données de graphe à grande échelle. Il est livré avec une API très flexible et une sélection d'algorithmes Graph distribués.
Quels sont les cas d'utilisation d'Apache Spark ?
Spark est un système de traitement distribué à usage général, utilisé pour les charges de travail de big data. Il a été déployé dans tous les types de cas d'utilisation du big data afin de détecter des modèles et de fournir des informations en temps réel. Ces exemples de cas d'utilisation incluent :
Services financiers
Spark est utilisé dans le secteur bancaire pour prévoir le taux de désabonnement des clients et recommander de nouveaux produits financiers. Dans les banques d'investissement, Spark est utilisé pour analyser les cours des actions afin de prévoir les tendances futures.
Soins médicaux
Spark est utilisé pour fournir des soins complets aux patients, en mettant les données à la disposition des agents de santé de première ligne pour chaque interaction avec le patient. Spark peut également être utilisé pour prédire/recommander un traitement aux patients.
Fabrication
Spark est utilisé pour éliminer les temps d'arrêt des équipements connectés à Internet, en recommandant à quel moment effectuer une maintenance préventive.
Vente au détail
Spark est utilisé pour attirer et fidéliser les clients grâce à des services et des offres personnalisés.
Comment fonctionne le déploiement d'Apache Spark dans le cloud ?
Spark est une charge de travail idéale dans le cloud, car le cloud offre des performances, une capacité de mise à l’échelle, une fiabilité, une disponibilité et des économies d'échelle considérables. Une étude ESG a révélé que 43 % des personnes interrogées considèrent le cloud comme leur principal déploiement pour Spark. Les principales raisons pour lesquelles les clients perçoivent le cloud comme un avantage pour Spark sont un temps de déploiement plus rapide, une meilleure disponibilité, des mises à jour de fonctionnalités plus fréquentes, une plus grande élasticité, une couverture géographique plus étendue et les coûts liés à l'utilisation réelle.
Quelles sont les offres AWS pour Apache Spark ?
Amazon EMR est l'emplacement idéal pour déployer Apache Sparks dans le cloud, car il combine l'intégration et la rigueur du test des distributions commerciales Hadoop & Spark à l'évolutivité, la simplicité et la rentabilité du cloud. Il vous permet de lancer des clusters Spark en quelques minutes sans avoir besoin d'allouer des nœuds, de configurer des clusters, de configurer Spark ou d'ajuster des clusters. Amazon EMR vous permet d'allouer une, des centaines ou des milliers d'instances de calcul en quelques minutes. Vous pouvez utiliser l'autoscaling pour qu'EMR augmente automatiquement vos clusters Spark afin de traiter des données de toute taille, puis les réduise lorsque votre travail est terminé afin d'éviter de payer pour de la capacité inutilisée. Vous pouvez réduire votre facture en vous engageant à respecter une durée définie et en économisant jusqu'à 75 % grâce aux instances réservées Amazon EC2, ou en exécutant vos clusters sur une capacité de calcul AWS inutilisée et en économisant jusqu'à 90 % avec EC2 Spot.
Commencez à utiliser Apache Spark sur AWS en créant un compte dès aujourd'hui.