Apache Spark est un moteur d'analyse unifié conçu pour le traitement des données à grande échelle avec des modules intégrés pour SQL, le traitement par flux, le machine learning et le traitement graphique. Spark peut être exécuté sur Apache Hadoop, Apache Mesos et Kubernetes, de façon indépendante ou dans le cloud. Par ailleurs, il peut s'appliquer à des sources de données diverses.
Quand utiliser Apache Spark et quand utiliser Apache Hadoop ? Les deux figurent parmi les systèmes distribués les plus importants du marché à l'heure actuelle. Il s'agit de projets Apache de niveau supérieur similaires qui sont souvent utilisés ensemble. Hadoop est principalement utilisé pour les opérations gourmandes en disque dur avec le paradigme MapReduce. Spark est une architecture de traitement en mémoire plus flexible et généralement plus coûteuse. Il est important de bien comprendre les caractéristiques de chacun de ces systèmes pour savoir lequel mettre en œuvre et quand.
Découvrez comment utiliser Dataproc pour exécuter des clusters Apache Spark sur Google Cloud de manière plus simple, plus économique et intégrée.
L'écosystème Spark inclut cinq composants clés :
1. Spark Core est un moteur de traitement de données distribué à usage général, sur lequel sont installées des bibliothèques pour SQL, le traitement par flux, le machine learning et le calcul graphique, qui peuvent toutes être utilisées ensemble dans une application. Spark Core constitue la base d'un projet entier et fournit les fonctionnalités d'E/S de base, de coordination de tâches distribuées et de planification.
2. Spark SQL est le module Spark conçu pour les données structurées. Il offre un moyen uniforme d'accéder à des sources de données très diverses. Il vous permet d'interroger des données structurées dans des programmes Spark à l'aide de SQL ou d'une API DataFrame familière. Spark SQL est compatible avec la syntaxe HiveQL et permet d'accéder à des entrepôts Apache Hive existants. Un mode serveur fournit une connectivité standard à travers Java Database Connectivity (JDBC) ou Open Database Connectivity (ODBC).
3. Spark Streaming permet de créer facilement des solutions de traitement par flux tolérantes aux pannes et évolutives. Il intègre l'API avec langage intégré Spark au traitement par flux, ce qui vous permet d'écrire des tâches de traitement par flux de la même façon que des tâches par lot. Spark Streaming est compatible avec Java, Scala et Python, et inclut une sémantique prête à l'emploi de type "exactement une fois" et avec état.
4. MLlib est la bibliothèque de machine learning (ML) évolutive de Spark, avec des outils qui facilitent le ML et permettent de l'adapter. MLlib contient de nombreux algorithmes de machine learning courants, par exemple de classification, de régression, de recommandation et de clustering. Elle contient également un workflow et des utilitaires de transformation de caractéristiques, de création de pipelines de ML, d'évaluation de modèles, d'algèbre linéaire distribué et de statistiques, entre autres.
5. GraphX est l'API Spark pour les graphes et le calcul parallèle de graphes. Flexible et compatible aussi bien avec les graphes que les collections, elle unifie l'ETL (extraction, transformation et chargement), l'analyse exploratoire et le calcul graphique itératif dans un même système. En plus de fournir une API hautement flexible, GraphX inclut toute une variété d'algorithmes de graphe et offre des performances comparables à celles des systèmes graphiques les plus rapides, sans renoncer à la flexibilité, la tolérance aux pannes et la simplicité d'utilisation de Spark.
Rapidité
Vous pouvez exécuter des charges de travail 100 fois plus rapidement qu'avec Hadoop MapReduce. Spark offre de hautes performances aussi bien avec les données par lot qu'avec les flux de données, grâce à un planificateur de graphes orientés acycliques de pointe, un optimiseur de requêtes et un moteur d'exécution physique.
Simplicité d'utilisation
Spark offre plus de 80 opérateurs de haut niveau qui facilitent la création d'applications parallèles. Vous pouvez l'utiliser de manière interactive avec des interfaces système Scala, Python, R et SQL pour écrire rapidement des applications.
Portée générale
Spark fournit une pile de bibliothèques, telles que SQL et DataFrames, MLlib pour le machine learning, GraphX et Spark Streaming. Vous pouvez facilement les combiner dans une même application.
Innovation du framework Open Source
Spark s'appuie sur des communautés mondiales qui unissent leurs forces pour introduire de nouveaux concepts et fonctionnalités plus rapidement et plus efficacement que les équipes internes qui travaillent sur des solutions propriétaires. Le pouvoir de collaboration d'une communauté Open Source permet non seulement de générer plus d'idées, mais également d'accélérer le développement et de résoudre plus rapidement les éventuels problèmes, ce qui se traduit par un temps de production plus court.
Apache Spark est un moteur de calcul en clusters rapide et à usage général qui peut être déployé dans un cluster Hadoop ou en mode autonome. Spark permet aux programmeurs d'écrire rapidement des applications dans Java, Scala, Python, R et SQL, ce qui en fait une solution accessible aux développeurs, aux data scientists et aux experts commerciaux avec des connaissances en statistiques. Spark SQL permet aux utilisateurs de se connecter à une source de données quelconque et de la présenter sous forme de tables destinées aux clients SQL. Les algorithmes de machine learning interactif peuvent en outre être facilement mis en œuvre dans Spark.
Avec un moteur uniquement SQL tel que Apache Impala, Apache Hive ou Apache Drill, les utilisateurs ne peuvent utiliser que le langage SQL ou des langages de type SQL pour interroger des données stockées dans plusieurs bases de données. Cela signifie que les frameworks sont plus petits qu'avec Spark.
De nombreuses entreprises utilisent Spark pour simplifier la tâche complexe (et gourmande en ressources de calcul) de traitement et d'analyse d'importants volumes de données structurées et non structurées, en temps réel ou archivées. Spark permet également aux utilisateurs d'intégrer facilement des fonctionnalités complexes pertinentes, telles que le machine learning ou les algorithmes de graphe.
Ingénieurs de données
Les ingénieurs de données utilisent Spark pour coder et créer des tâches de traitement, avec la possibilité de programmer dans un jeu de langue étendu.
Data scientists
Les data scientists peuvent optimiser leur expérience d'analyse et de ML en utilisant Spark avec des GPU. La capacité à traiter plus rapidement d'importants volumes de données avec un langage familier peut permettre d'accélérer l'innovation.
Profitez de 300 $ de crédits gratuits et de plus de 20 produits Always Free pour commencer à créer des applications sur Google Cloud.