Spark fait partie de la nouvelle génération de frameworks de manipulation de données basés sur Hadoop. L’outil utilise agressivement la mémoire pour offrir des temps de traitement jusqu’à 100 fois plus rapides qu'Hadoop. Dans cette session, nous découvrirons les principes de traitement de données (notamment MapReduce) et les options mises à disposition pour monter un cluster (Zookeper, Mesos…). Nous ferons un point sur les différents modules proposés par le framework, et notamment sur Spark Streaming pour le traitement de données en flux continu.
Présentation jouée chez Ippon le 11 décembre 2014.
3. Histoire
2009 : AMPLab de l'Université de Berkeley
Juin 2013 : "Top-level project" de la fondation
Apache
Mai 2014 : version 1.0.0
Actuellement : version 1.1.0
3 / 37
4. Usecases
Analyse de logs
Traitement de fichiers texte
Analytics
Recherche distribuée (Google, avant)
Détection de fraude
Recommendation (articles, produits...)
4 / 37
7. Plusrapidequ'Hadoop
Spark officially sets a new record in large-scale
sorting (5 novembre 2014)
Tri de 100 To de données
Hadoop MR : 72 minutes avec 2100 noeuds
(50400 cores)
Spark : 23 minutes avec 206 noeuds (6592
cores)
7 / 37
13. Transformations
Manipule un RDD, retourne un autre RDD
Lazy !
Exemples :
map() : une valeur → une valeur
mapToPair() : une valeur → un tuple
filter() : filtre les valeurs/tuples
groupByKey() : regroupe la valeurs par clés
reduceByKey() : aggrège les valeurs par clés
join(), cogroup()... : jointure entre deux RDD
13 / 37
14. Actionsfinales
Ne retournent pas un RDD
Exemples :
count() : compte les valeurs/tuples
saveAsHadoopFile() : sauve les résultats au
format Hadoop
foreach() : exécute une fonction sur chaque
valeur/tuple
collect() : récupère les valeurs dans une liste
(List< T >)
14 / 37
16. Word count
Découpage des fichiers par fragments de 128
Mo (framework)
Découpage des fragments par lignes
(framework)
Découpage des lignes en mots (map)
Comptage des mots (reduce)
Sur chaque noeud
Puis sur un noeud pour le résultat final
16 / 37
35. Démo deSpark Streaming
Consommation de Tweets #Android
Twitter4J
Détection de la langue du Tweet
Language Detection
Indexation dans ElasticSearch
Analyse dans Kibana 4
35 / 37