SlideShare una empresa de Scribd logo
1 de 37
Descargar para leer sin conexión
Alexis Seigneurin
@aseigneurin @ippontech
1 / 37
Spark
Traitement large volumes de données
Traitement distribué (commodity hardware)
Ecrit en Scala, binding Java
2 / 37
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
Usecases
Analyse de logs
Traitement de fichiers texte
Analytics
Recherche distribuée (Google, avant)
Détection de fraude
Recommendation (articles, produits...)
4 / 37
ProximitéavecHadoop
Mêmes use cases
Même modèle de
développement : MapReduce
Intégration dans l'écosystème
5 / 37
Plussimplequ'Hadoop
API plus simple à prendre en main
Modèle MapReduce "relâché"
Spark Shell : traitement interactif
6 / 37
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
EcosystèmeSpark
Spark
Spark Shell
Spark Streaming
Spark SQL
MLlib
GraphX
8 / 37
Intégration
Yarn, Zookeeper, Mesos
HDFS
Cassandra
Elasticsearch
MongoDB
9 / 37
Fonctionnement deSpark
10 / 37
RDD
Resilient Distributed Dataset
Abstraction, collection traitée en parallèle
Tolérant à la panne
Manipulation de tuples :
Clé - Valeur
Tuples indépendants les uns des autres
11 / 37
Sources:
Fichier sur HDFS
Fichier local
Collection en mémoire
S3
Base NoSQL
...
Ou une implémentation custom de InputFormat
12 / 37
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
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
Exemple
15 / 37
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
Shakespeare, Hamlet, acteIII, scène1
17 / 37
Spark - Exemple
sc.textFile("some/text/files/*")
.flatMap(line->Arrays.asList(line.split("W")))
.mapToPair(word->newTuple2<String,Integer>(word,1))
.reduceByKey((x,y)->x+y)
.collect();
18 / 37
Démo
Spark Shell
19 / 37
Démo deSpark Shell
$spark-shell
>varlines=sc.textFile(".../data/arbresalignementparis2010.csv")
>lines.count()
>vartrees=lines.filter(s=>!s.startsWith("geom"))
>vartreesSplit=trees.map(line=>line.split(";"))
>varheights=treesSplit.map(fields=>fields(3).toFloat)
>heights=heights.filter(h=>h>0)
>heights.sum()/heights.count()
20 / 37
Spark en Cluster
21 / 37
Topologie
Un master / des workers
(+ un master en standby)
Communication bidirectionnelle
On soumet une application
22 / 37
Spark en Cluster
Plusieurs options
YARN
Mesos
Standalone
Workers démarrés individuellement
Workers démarrés par le master
23 / 37
Stockage& traitements
MapReduce
Spark (API)
Traitement parallèle
Tolérant à la panne
Stockage
HDFS, base NoSQL...
Stockage distribué
Tolérant à la panne
24 / 37
Colocation données& traitement
Traiter la donnée là où elle se trouve
Eviter les network I/Os
25 / 37
Colocation données& traitement
26 / 37
Démo
Spark en Cluster
27 / 37
Démo
$$SPARK_HOME/sbin/start-master.sh
$$SPARK_HOME/bin/spark-class
org.apache.spark.deploy.worker.Worker
spark://MBP-de-Alexis:7077
--cores2--memory2G
$mvncleanpackage
$$SPARK_HOME/bin/spark-submit
--masterspark://MBP-de-Alexis:7077
--classcom.seigneurin.spark.WikipediaMapReduceByKey
--deploy-modecluster
target/pres-spark-0.0.1-SNAPSHOT.jar
28 / 37
Spark Streaming
29 / 37
Micro-batches
Découpe un flux continu en batches
API identique
≠ Apache Storm
30 / 37
DStream
Discretized Streams
Séquence de RDDs
Initialisé avec une Duration
31 / 37
Window operations
Fenêtre glissante
Réutilise des données d'autres fenêtres
Initialisé avec window length et slide interval
32 / 37
Sources
Socket
Kafka
Flume
HDFS
MQ (ZeroMQ...)
Twitter
...
Ou une implémentation custom de Receiver
33 / 37
Démo
Spark Streaming
34 / 37
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
Démo
Lancer ElasticSearch
$curl-XDELETElocalhost:9200
$curl-XPUTlocalhost:9200/spark/_mapping/tweets'{
"tweets":{
"properties":{
"user":{"type":"string","index":"not_analyzed"},
"text":{"type":"string"},
"createdAt":{"type":"date","format":"date_time"},
"language":{"type":"string","index":"not_analyzed"}
}
}
}'
Lancer Kibana
http://localhost:5601
Lancer le traitement
36 / 37
@aseigneurin - @ippontech
aseigneurin.github.io - blog.ippon.fr
37 / 37

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

introduction à MongoDB
introduction à MongoDBintroduction à MongoDB
introduction à MongoDB
 
Chapitre 2 hadoop
Chapitre 2 hadoopChapitre 2 hadoop
Chapitre 2 hadoop
 
Cours Big Data Chap4 - Spark
Cours Big Data Chap4 - SparkCours Big Data Chap4 - Spark
Cours Big Data Chap4 - Spark
 
Mongo DB
Mongo DBMongo DB
Mongo DB
 
BigData_TP5 : Neo4J
BigData_TP5 : Neo4JBigData_TP5 : Neo4J
BigData_TP5 : Neo4J
 
BigData_Chp4: NOSQL
BigData_Chp4: NOSQLBigData_Chp4: NOSQL
BigData_Chp4: NOSQL
 
Hive ppt (1)
Hive ppt (1)Hive ppt (1)
Hive ppt (1)
 
Apache Spark with Scala
Apache Spark with ScalaApache Spark with Scala
Apache Spark with Scala
 
spark_intro_1208
spark_intro_1208spark_intro_1208
spark_intro_1208
 
Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture Thinking Big - Big data: principes et architecture
Thinking Big - Big data: principes et architecture
 
Cours Big Data Chap2
Cours Big Data Chap2Cours Big Data Chap2
Cours Big Data Chap2
 
BigData_TP4 : Cassandra
BigData_TP4 : CassandraBigData_TP4 : Cassandra
BigData_TP4 : Cassandra
 
Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)Spark (v1.3) - Présentation (Français)
Spark (v1.3) - Présentation (Français)
 
BigData_Chp5: Putting it all together
BigData_Chp5: Putting it all togetherBigData_Chp5: Putting it all together
BigData_Chp5: Putting it all together
 
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
Cours HBase et Base de Données Orientées Colonnes (HBase, Column Oriented Dat...
 
Cours data warehouse
Cours data warehouseCours data warehouse
Cours data warehouse
 
BigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans HadoopBigData_TP2: Design Patterns dans Hadoop
BigData_TP2: Design Patterns dans Hadoop
 
Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
 
Technologies pour le Big Data
Technologies pour le Big DataTechnologies pour le Big Data
Technologies pour le Big Data
 
Les BD NoSQL
Les BD NoSQLLes BD NoSQL
Les BD NoSQL
 

Similar a Spark, ou comment traiter des données à la vitesse de l'éclair

Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Olivier Mallassi
 
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdfCHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
YounesOuladSayad1
 

Similar a Spark, ou comment traiter des données à la vitesse de l'éclair (20)

Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015Spark - Ippevent 19-02-2015
Spark - Ippevent 19-02-2015
 
Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)Spark - Alexis Seigneurin (Français)
Spark - Alexis Seigneurin (Français)
 
Spark RDD : Transformations & Actions
Spark RDD : Transformations & ActionsSpark RDD : Transformations & Actions
Spark RDD : Transformations & Actions
 
Hadoop Introduction in Paris
Hadoop Introduction in ParisHadoop Introduction in Paris
Hadoop Introduction in Paris
 
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -introNosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
Nosql, hadoop, map reduce, hbase, sqoop, voldemort, cassandra -intro
 
Tech day hadoop, Spark
Tech day hadoop, SparkTech day hadoop, Spark
Tech day hadoop, Spark
 
Techday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big DataTechday Arrow Group: Hadoop & le Big Data
Techday Arrow Group: Hadoop & le Big Data
 
Spark
SparkSpark
Spark
 
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows AzureBig Data: Hadoop Map / Reduce sur Windows et Windows Azure
Big Data: Hadoop Map / Reduce sur Windows et Windows Azure
 
10 big data hadoop
10 big data hadoop10 big data hadoop
10 big data hadoop
 
10 big data hadoop
10 big data hadoop10 big data hadoop
10 big data hadoop
 
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdfCHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
CHAPITRE3_Fondements_Big_Data_MR_YARN - converted (1).pdf
 
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à HadoopCasablanca Hadoop & Big Data Meetup - Introduction à Hadoop
Casablanca Hadoop & Big Data Meetup - Introduction à Hadoop
 
Introduction spark
Introduction sparkIntroduction spark
Introduction spark
 
Hadoop et son écosystème - v2
Hadoop et son écosystème - v2Hadoop et son écosystème - v2
Hadoop et son écosystème - v2
 
code4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABEScode4lib 2011 : choses vues et entendues par l'ABES
code4lib 2011 : choses vues et entendues par l'ABES
 
Introduction Apche Spark
Introduction Apche SparkIntroduction Apche Spark
Introduction Apche Spark
 
L'avenir de LAMP
L'avenir de LAMPL'avenir de LAMP
L'avenir de LAMP
 
Affichage d'un document Office sous Android
Affichage d'un document Office sous AndroidAffichage d'un document Office sous Android
Affichage d'un document Office sous Android
 
Presentation des outils traitements distribues
Presentation des outils traitements distribuesPresentation des outils traitements distribues
Presentation des outils traitements distribues
 

Spark, ou comment traiter des données à la vitesse de l'éclair