Spark - Ataww/SDTD-Mazerunner Wiki

Spark

Présentation générale

Spark est un framework open-source qui permet de traiter de larges volumes de données. C'est un framework qui est utilisé pour de grosse volumétries de données (supérieur en taille à 1 To de données). Pour des faibles volumétries de données, il existe différents outils plus simple et plus léger à mettre en place.

Usages

Spark permet de répondre à différents cas d'utilisations :

Aspect fondamental

Spark tourne au sein d'un cluster :

Resilient Distributed Dataset

Les RDD sont au centre du framework Spark. Ils peuvent être vue comme des collections oû l'on y stocke des données. Ils possédent plusieurs propriétés :

Performances

Pour montrer son efficacité au niveau du traitement des données, il est intéressant de savoir que Spark à battu le record de temps minimal précedemment détenu par Hadoop sur un tri distribué. Or, comme spécifié avant, les données sont en mémoire, ce qui permet aux traitements d'être réalisés jusqu'à 100 fois plus vite qu'avec Hadoop.

Trie de 100 TB de données de maniéres distribué :

Utilisation dans le cadre du projet

Infrastructure mise en place

Haute disponibilité

Pour permettre à notre cluster Spark d'être résilient, on va s'appuyer sur l'outil Zookeeper. Il va nous permettre d'élire un leader entre les deux Masters Spark. Ainsi, dans le cas où un leader meurt, Zookeeper se chargera de basculer sur le second Master Spark (en synchronisant le second Master selon l'état du premier). Cette opération de basculement entre les deux Masters peut prendre 1 à 2 minutes (le temps de détecter que le Master Spark est down et de mettre à jour l'état du second). Au niveau des workers, Spark gère lui-même l'aspect résilience de son cluster. Car comme cité plus haut, si un worker tombe, l'opération qui était en cours d'exécution dessus sera relancé sur un nouveau worker par l'intermédiaire du Master Spark.