Mr DIATTARA Ibrahima Cloud Avancé Chapitre4: Architecture Spark Sommaire Intr
Mr DIATTARA Ibrahima Cloud Avancé Chapitre4: Architecture Spark Sommaire Introduction Historique Objectif( Mapreduce Hadoop vs Spark) Fonctionnalités Déploiement Architecture Manipulation data Introduction Spark est un Framework pour les calculs distribués (répartis ou partagés), on repartie le traitement sur plusieurs microprocesseur de différentes machines Spark est en développé en scala Historique En 2009,Spark fut conçu par Zaharia lors de son doctorat au sein de l'université de Californie et en 2013, transmis à la fondation Apache. En 2014, Spark a gagné le Daytona GraySort dont l'objectif était de trier 100 To de données le plus rapidement possible. Ce record était préalablement détenu par Hadoop. Pour ce faire, Spark a utilisé 206 machines obtenant un temps d'exécution final de 23 minutes alors que Hadoop avait utilisé 2100 machines pour un temps d'exécution final de 72 minutes. La puissance de Spark fut démontrée en étant 3 fois plus rapide et en utilisant approximativement 10 fois moins de machines. Objectifs Spark a été créer pour améliorer MapReduce qui est un sous projet de Hadoop Mapreduce: les données sont écrites sur le disque après chaque opérations Spark exécute la totalité des opérations en mémoire RAM . Il ne s'appuie sur des disques seulement lorsque sa mémoire n'est plus suffisante. De ce fait, là où MapReduce travaille par étape, Spark travaille sur la totalité des données en même temps. Spark est capable de travailler avec une partie des données en mémoire et une autre sur disque Spark vs Mapreduce Hadoop • Sous Hadoop MapReduce, les données sont lues et écrites (sur disque) à chaque fois entre deux opérations • Ces lectures et écritures dans HDFS successives rallongent significativement les temps de latence Spark vs hadoop • Avec Spark, le « stockage » en mémoire effectué entre plusieurs opérations est beaucoup plus rapide. • Un autre point qui donne à Spark des performances supérieures à celle de MapReduce : les évaluations paresseuses (“lazy evaluation”) • Dans le cas où le cluster ne possède pas de mémoire suffisante, les données sont écrites/lues sur disque de la même façon que Hadoop MapReduce. Fonctionnalités & API Le Framework Spark possède plusieurs fonctionnalités. • Le Spark Core: c’est le système central de Spark. C’est une brique dédiée au traitement distribué des données (comme Hadoop MapReduce). • Les modules avancés: Ils sont développés au-dessus de Spark Core et permettent de faire des traitements complexes (Streaming, machine learning, SQL…) Action vs transformation Lazy Evaluation : L'évaluation paresseuse est une stratégie d'évaluation qui maintient l'évaluation d'une expression jusqu'à ce que sa valeur soit nécessaire. Cela évite l'évaluation répétée ce qui permet une optimisation des étapes du traitement. Les transformations : Ce sont des fonctions qui retournent une nouvelle SD(structure de données) . Rien n’est évalué lorsque l’on fait appel à une fonction de transformation, cette fonction prend juste une nouvelle et retourne un nouveau SD. Les fonctions de transformation sont par exemple : map, filter, flatMap, groupByKey, reduceByKey, aggregateByKey, Exp: df.filter(_.age > 21), Nous avons deux type de transformation Narrow opération qui nécessitent un shuffle après un stage et Wide operation qui n’ ont pas besoin Les actions : les actions évaluent et retournent une nouvelle valeur. Au moment où une fonction d’action est appelée sur une SD, toutes les requêtes de traitement des données sont calculées et le résultat est retourné. Les actions sont par exemple : reduce, collect, count, first, take, countByKey et foreach Nous avons d'autre operation comme cache, persite, …...... Les types de donnés RDD (Resilient Distributed Dataset) -depuis la version 1.0. Un RDD est une collection distribuée immutable de données calculée à partir d'une source et conservée en mémoire vive (tant que la capacité le permet). Les données sont organisées en objets par ligne . DataFrames - Spark introduit des DataFrames dans la version 1.3 Un DataFrame est une collection distribuée immutable de données. Contrairement à un RDD, les données sont organisées en colonnes nommées, comme une table dans une base de données relationnelle. DataSet - Spark a introduit le jeu de données dans 1.6. DataSet =Dataframe+RDD Discretized Stream (DStream): est une séquence continue de RDD (du même type) , une fonction qui est utilisée pour générer un RDD après chaque intervalle de temps Light Architecture Spark L’architecture Spark est assez analogue à l’architecture master/slave développée dans Hadoop MapReduce v1. • Sous Spark, un programme exécuté est appelé une application Spark. • L’architecture Spark est formé par 4 entités distinctes: – Le Driver. – Le master / cluster manager. – Les slaves / Workers. – Les exécuteurs Spark Driver Spark driver est une JVM à laquelle on a alloué des ressources (cpu, mémoire, cœurs etc…) Le Driver n'exécute pas de calculs (filtrer, mapper, reduce, etc.) Lorsque vous appelez collect () sur un RDD ou un ensemble de données, toutes les données sont envoyées au Driver Le driver est la machine qui exécute le code main(), il répartie les taches aux exécuteurs Le driver est la JVM qui possède l’ objet appelé le SparkContext Spark application (souvent appelée Driver Program or Application Master) est composé de SparkContext et d'un User Program Spark context : C’est une instance de l’application Spark ou une connexion Spark Master • Le Spark master, aussi appelé le cluster manager est chargé de négocier l’allocation de ressources nécessaires aux JVMs. • Il se charge également de trouver de l’espace et des ressources pour faire tourner les workers et les exécuteurs. C est lui qui instancier les Workers Architecture de Spark : Worker • Les Workers sont des JVMs auxquelles on a alloué des ressources (CPU, mémoire, cœurs etc…). • Plus précisément, ce sont des conteneurs Spark dans lesquels vivent les exécuteurs. Sur un clusters Hadoop, les workers sont généralement présents dans les datanodes. Architecture Exécuteur • Les exécuteurs sont des agents situés dans les Workers et qui exécutent des « tasks» • Les exécuteurs sont dit multi-cœurs ou multithreads Full Architecture Quand le code est exécuté, les transformations de RDD sont traduites en DAG RDD (plan logique) et soumises à DAGScheduler qui génère un plan d'exécution physique (DAG de Stage) à partir de notre plan logique et le soumet au TaskScheduler qui est responsable de l'envoi des tâches aux exécuteurs, de réessayer en cas d'échec Les tâches sont exécutées sur les WokersNode , leurs résultats sont retournés au Driver qui fera l’agrégation Full Archi SchedulerBackend : interface(fonctionnalités) backend pour connecter Spark avec (Mesos, YARN) BlockManager : fournit des interfaces(fonctionnalités) pour placer et récupérer des blocs en local et à distance (mémoire, disque) Lorsque vous lancez un traitement sur le framework Spark, vous passez par le Driver qui est en quelque sorte le master, lui-même communique avec le cluster manager, ce dernier gère les ressources des workers (les workers exécutent le traitement à proprement parler). Stage, tache & partition Job Spark : Une application Spark est constituée d’un ensemble de jobs Spark. Chaque job Spark correspond à une “opération” réalisée (un filtrage …) , un Job est un semble de stage , il est déclenché par une action Un stage est l’ensemble des taches d’une opération réalisé sur un RDD , une wide transfomration => un nouveau stage Une tâche est une opération (.map ou .filter) appliquée sur une partitionn d’ un RDD , chaque tache traite un partition Un job Spark est lui-même la somme d’un ensemble de tâches. Lorsque toutes les tâches d’un job sont accomplies, le job est alors accompli (Atomicité) What happens during stage ? Le plan physique qui a été généré par le DAGScheduler se compose de stage L'évaluation d'une stage nécessite l'évaluation de toutes les partitions du RDD dans cette stage. On a une tâche pour chacune des partitions et le nombre de tâches d'une stage est égal au nombre de partitions. Chaque Stage doit fournir des données aux stage suivantes par un ShuffleMapStage(Nawrow ou wide) La dernière stage qui produit le résultat est appelée ResultStage, que se produit que lorsque une action est appliqués Lineage Lorsqu'un nœud tombe en panne ou que le processus de l'exécuteur sur un nœud se bloque, Spark replanifie automatiquement la tâche bloquée sur un autre nœud qui récupère l'état intermédiaire du nœud descendant à l'aide d’une lineage Narrow & Wide Operations Des opération comme map, union, filter .. Sont des narrow opération , il n est pas nécessaire de de faire une redistribution de données après une stage Si on a un narrow dépendance et que la partition enfant ne dépend que d'une seule ParentPartition , les données d’un même ParentPartition peuvent être stocker/traiter sur 1a même machine. Aucun Shuffle de données n'est nécessaire. Narrow transformation Each input partition will contribute to only one out partition Wide tansformation: input partion contributing to many output partitions wide Des opération comme joing groupByKey, distinct, sont des Wide opérations nécessite la distribution des données entre les nodes Evidement ses uploads/Industriel/chapitre4-archi-spark-4.pdf
Documents similaires










-
49
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Jui 09, 2022
- Catégorie Industry / Industr...
- Langue French
- Taille du fichier 1.2427MB