Big Data Lotfi NAJDI Année Universitaire 2022 / 2023 Finance et Ingénierie Déci
Big Data Lotfi NAJDI Année Universitaire 2022 / 2023 Finance et Ingénierie Décisionnelle ENSA Agadir Spark Hadoop MapReduce • les ensembles de données sont lus à partir du disque • Après chaque opération map ou reduce, le résultat est écrit à nouveau sur disque. • L'écriture sur disque fournit la tolérance aux pannes, par contre les I/O sur disque sont couteux (latence importante ) • Difficile à composer et à imbriquer de multiples opérations Pourquoi Spark ? • Hadoop MapReduce a permis de simplifier considérablement l'analyse des données sur les gros clusters • Spark représente une alternative à Hadoop MapReduce pour le calcul distribué qui vise à résoudre les problèmes relatifs à la performance. • les exigences ne cessent de croître: • Analyses et algorithmes avancés (à passages multiples ) comme le cas du machine learning et du traitement des graphes • Support des requêtes ad-hoc interactives • le traitement de flux de données en quasi temps réel (stream processing) Spark Spark is a fast, in-memory data processing engine suitable for use in a wide range of circumstances. Apache Spark is a unified analytics engine for large-scale data processing. Apache Spark Spark Spark écrit les données en RAM et non pas sur disque Apache Spark exécute les applications de manière très rapide en mémoire (par rapport à Hadoop) . Réduction du nombre de cycles de lecture/écriture sur le disque et stockage des données intermédiaires en mémoire (amélioration de la latence et du taux de transfert ) Apache Spark Spark? • Spark SQL : Requêtes sur les données structurées relationnelles • Spark Streaming : le traitement de flux de données en quasi temps réel à l’aide des micro-batches. • MLib pour le Machine Learning. • GraphX pour représenter sous la forme de graphes des données reliées comme les connexions des utilisateurs de réseaux sociaux. Apache Spark Cluster Spark Spark 3.0.2 Documentation (apache.org) Cluster Spark • Driver program: Le processus qui exécute la méthode main (le point de départ du programme). • Spark Driver permet de créer un object SparkContext. • La création du SparkContext constitue la première étape à faire car elle permet à une application Spark d'établir une connexion avec l'environnement d’exécution de Spark et d’accéder au cluster Spark (ressources de traitement) à l'aide du cluster manager. • SparkContext représente le noyau d'une application Spark. • SparkContext agit en tant que maître de l'application Spark. • SparkConf permet de spécifier les paramètres de configuration avant la création du SparkContext (master URL , application name ..etc) Cluster Spark • A l'aide du cluster manager, une application Spark est lancée sur un ensemble de machines. • Spark peut fonctionner en se connectant à des cluster managers de types différents : • Standalone Cluster Manager (cluster managers autonome intégré par défaut dans Spark). • Autres cluster managers comme Hadoop Yarn, Apache Mesos, etc. Cluster Spark • Une application Spark est une combinaison de Driver et de ses propres executors. • Worker node: Tout nœud qui peut exécuter du code d'application dans le cluster • Executor: Processus lancé ,pour une application sur un worker node, qui exécute des tâches et conserve des données en mémoire ou sur disque pendant leur exécution. Chaque application dispose de ses propres exécuteurs. • Task : Une unité de travail qui sera attribuée à un seul Executor. • Job : Un calcul parallèle composé de plusieurs tâches qui sont lancées en réponse à une action Spark (par exemple, save, collect). Cluster Spark Spark applications run as independent sets of processes on a cluster, coordinated by the SparkContext object in your main program (called the driver program). Specifically, to run on a cluster, the SparkContext can connect to several types of cluster managers (either Spark’s own standalone cluster manager, Mesos or YARN), which allocate resources across applications. Once connected, Spark acquires executors on nodes in the cluster, which are processes that run computations and store data for your application. Next, it sends your application code to the executors. Finally, SparkContext sends tasks to the executors to run. Spark 3.0.2 Documentation (apache.org) Application Spark L’ Application (programme ) accède à Spark à travers l’objet appelé SparkContext qui représente connexion à un cluster. • Un programme Spark est constitué d’ une séquence d'opérations invoquées à travers un SparkContext. • Ces opérations manipulent un type spécial de structure de données, appelé Resilient Distributed Dataset (RDD). RDD Les objets de données sont stockés dans ce que l'on appelle des ensembles de données distribués résilients (RDD : resilient distributed datasets) répartis sur le cluster de données permettant la récupération complète de données. Wikipédia • RDD est la structure de données de base de Apache Spark • Un RDD est une collection de données calculée à partir d'une source et conservée en mémoire vive. • La manipulation des RDDs permet de mettre en œuvre des tâches de bas niveau. En pratique nous allons utiliser d’autres API permettant une abstraction de plus haut niveau comme la DataFrame API. • Sont dits Résilient car les RDD sont immuables (immutable ) c.-à-d. ne peuvent pas être modifiés • Les RDD sont tolérants aux pannes. Création des RDDs • Parallélisation d'une collection existante dans le driver program (liste par exemple) • Chargement à partir d'un ensemble de données dans un système de stockage externe : HDFS, Hive , txt ..etc. • SparkContext offre de nombreuses fonctions permettant de charger des données provenant de sources externes RDD • Spark divise chaque RDD en plusieurs partitions. • Les partitions sont distribuées sur les nœuds du cluster. • Spark parallélise les opérations invoquées sur chaque RDD. • Un programme Spark est une séquence d'opérations parallèles invoquées sur les RDD. Manipulation des RDD Spark propose deux types d'opérations distinctes : • Les transformations sont des opérations qui reçoivent un ou plusieurs RDD et en renvoient un nouveau RDD. • Les actions sont des opérations qui renvoient un résultat final au driver ou bien enregistrent le résultat dans un système de stockage. Transformations Narrow Transformation: chaque partition d'entrée contribuera à une seule partition de sortie. (map ,flatMap,filter, sample) What are Transformations? - Databricks Transformations les partitions d'entrée contribuent à de nombreuses partitions de sortie.(sortByKey , reduceByKey, groupByKey ,join..etc) What are Transformations? - Databricks Actions Les actions sont des opérations qui renvoient un résultat final au driver ou bien enregistrent le résultat dans un système de stockage. • collect • take • reduce • forEach • count • save Actions • Les actions sont des instructions qui sont traitées par Spark au moment de leur exécution. • Elles consistent à exécuter toutes les transformations précédentes afin d'obtenir le résultat souhaité. • Une action consiste à exécuter une ou plusieurs tâches par les workers de manière parallèle, dans la mesure du possible. Lazy evaluation Spark utilise l’évaluation paresseuse (lazy evaluation) afin d’évaluer les transformations • Les transformations ne sont pas immédiatement exécutées lors de leurs invocations. • Les transformations ne sont exécutées que lorsque Spark reçoit une action. Lazy evaluation permet de réduire le nombre de passages nécessaires pour charger et transformer les données et de produire un plan d’exécution physique efficace. Spark: DataFrame • Dans Spark, un DataFrame est une collection de données distribuée organisée en colonnes nominatives. • Conçu pour faciliter le traitement de grands ensembles de données • DataFrame permet aux développeurs de structurer une collection de données distribuées, permettant une abstraction de plus haut niveau ; • Semblable à une table dans une base de données relationnelle ou bien à un data frame en R/Python, mais avec de plus riches optimisations Spark: DataFrame • Les RDD constituent le modèle de données de base le plus utilisé par Spark • API de bas niveau (low-level) qui propose deux types de méthodes : les transformations et les actions. • Sans schéma (schema-less) , c-à-d aucun schéma, lors du traitement ou de l'accès aux attributs des données par nom ou par colonne. • En plus de l'API RDD, Spark offre une interface pour travailler sur des données structurées comme les tables des bases de données relationnelles : DataFrame Transformations et Actions pour DataFrame Transformations : • select() • filter() orderBy(), sort() • distinct(), dropDuplicates() • join () • groupBy () Actions • Count() • show() • collect() • take() • write RDD vs DataFrame • RDD : • Low level abstraction • Transformation et des actions de bas niveau et un contrôle sur votre ensemble de données (unstructured data) • Absence d’exigence de schéma et format en colonne, lors du traitement ou de l'accès aux attributs des données. • Dataframe • High-level abstractions • Traitement exigeant des expressions de haut niveau (filtres, agrégation, requêtes SQL..etc) • Avantages en termes d'optimisation et de performance pour les données structurées et semi-structurées. RDD Dataframe Dataframe Apache Spark • Apache Spark est un moteur de traitement des données à grande échelle : • Le calcul distribué (cluster computing) • Interface SQL • Machine Learning • Permet de surmonter de nombreuses limitations de Hadoop • Spark offre un écosystème très riche de services permettant de travailler sur les Big data grâce uploads/Litterature/ spark.pdf
Documents similaires
-
19
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 26, 2022
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 1.2967MB