Hadoop et son écosystème - v2
-
Upload
khanh-maudoux -
Category
Software
-
view
74 -
download
0
Transcript of Hadoop et son écosystème - v2
Hadoop et son écosystème
par KhanhTuong MAUDOUX
@jetoile
128/02/2017
Hadoop et son écosystème
Qui je suis…
• Khanh Tuong Maudoux
• Développeur Java, JavaEE, BigData indépendant
• blog : blog.jetoile.fr
• @jetoile
228/02/2017
Hadoop et son écosystème
28/02/2017 3
Hadoop et son écosystème
Au programme…
• Hadoop : qu’est ce que c’est? – MapReduce
– HDFS
– Yarn
• Ecosystème– Data Integration
– Batch Processing
– Analytic SQL
– Streaming Processing
– Machine Learning
– Search Engine
– Autre
428/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…
528/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…
• BigData => V4
– Volume
– Vélocité
– Variété
– Véracité
• BigData
=> Hadoop?
28/02/2017 6
Ne parlera pas des API de programmations
comme Cascalog/Hive/Pig/Java/…
Hadoop et son écosystème
Qu’est ce que c’est…
28/02/2017 7
HDP 2.5
Hadoop et son écosystème
Qu’est ce que c’est…
MapReduce
828/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…MapReduce
928/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…MapReduce
10
• Et… Shuffle
28/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…MapReduce
11
• Et… Shuffle
28/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…
HDFS
1228/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…HDFS
13
• Hadoop Distributed FileSystem
• FileSystem
– Les données sont écrites dans des blocs gérés par le
FileSystem
• HDFS
– Les données sont écrites dans des blocs gérés par le HDFS
=> Un fichier dans HDFS est constitué de blocs
28/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…HDFS
14
• Permet :
– La réplication (les blocs sont répliqués) et donc la
résilience
– La scalabilité (les blocs ne sont pas tous sur la même
machine)
– …
28/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…HDFS - Architecture
15
• NameNode et DataNode
28/02/2017
NameNode Namespace
Metadata
Block Map
Journaling
Disk
DataNode
Storage
Disk
DataNode
Storage
Disk
Storage
Disk
Bloc report
Contient la localisation réelle
des données (bloc/datanode)
DataNode
Hadoop et son écosystème
Qu’est ce que c’est…HDFS - Lecture
1628/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…HDFS - Ecriture
1728/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…
YARN
1828/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…YARN
19
• Avant :
– JobTracker
– TaskTracker
28/02/2017
Hadoop et son écosystème
Qu’est ce que c’est…YARN
20
• Yet Another Resource Negociator
• Composé de :
– ResourceManager
– NodeManager
– ApplicationMaster
28/02/2017
Hadoop et son écosystème
Ecosystème
2128/02/2017
BatchProcessing
AnalyticSQL
SearchEngine
MachineLearning
StreamProcessing
Workload Management (Yarn)
Storage for any type of dataUnified, Elastic, Resilient, Secure
Data Integration
Filesystem (HDFS)
Hadoop et son écosystème
Ecosystème
Data Integration
2228/02/2017
BatchProcessing
AnalyticSQL
SearchEngine
MachineLearning
StreamProcessing
Workload Management (Yarn)
Storage for any type of dataUnified, Elastic, Resilient, Secure
Data Integration
Filesystem (HDFS)
Hadoop et son écosystème
EcosystèmeData Integration
23
• Sqoop
• Flume
• Logstash/Beats
• Kafka (messaging)
• Autres…
28/02/2017
Hadoop et son écosystème
EcosystèmeData Integration - Sqoop
24
• Outils permettant de transférer des données en
masse entre Hadoop et un entrepôt de données
structuré tel qu’une base de données
28/02/2017
Hadoop et son écosystème
EcosystèmeData Integration - Flume
25
• Flume est un service distribué, fiable et hautement disponible servant à la collecte, la l’agrégation et le déplacement d’une grosse quantité de données de logs
• Composé de
– Source
– Sink
– Channel
28/02/2017
Hadoop et son écosystème
EcosystèmeData Integration - Logstash
2628/02/2017
• Logstash est un simple agent orienté message qu’il
est possible de configurer pour combiner différentes
fonctions
• Composé de
– Input
– Filter
– Output
Hadoop et son écosystème
EcosystèmeData Integration - Kafka
27
• Système orienté message de type publish/subscribeimplémenté comme système de traces transactionnel distribué, adapté pour la consommation de messages en-ligne et hors ligne
• Service de commit de traces distribué, partitionné et répliqué
• Les producteurs publient des messages dans des topics, les consommateurs s'abonnent à ces sujets et consomment les messages
28/02/2017
Hadoop et son écosystème
EcosystèmeData Integration - Autres
28
• Driver (java, …)
• WebHDFS
• Gateway NFS
• NiFi
• …
28/02/2017
Hadoop et son écosystème
Ecosystème
Batch Processing
2928/02/2017
BatchProcessing
AnalyticSQL
SearchEngine
MachineLearning
StreamProcessing
Workload Management (Yarn)
Storage for any type of dataUnified, Elastic, Resilient, Secure
Data Integration
Filesystem (HDFS)
Hadoop et son écosystème
EcosystèmeBatch Processing
30
• MapReduce
• Hive
• Pig
• Cascading
• Spark
28/02/2017
Hadoop et son écosystème
EcosystèmeBatch Processing - MapReduce
31
• Framework MapReduce ;)
28/02/2017
public class WordCount {
public static class TokenizerMapper
extends Mapper<Object, Text, Text, IntWritable>{
private final static IntWritable one = new IntWritable(1);
private Text word = new Text();
public void map(Object key, Text value, Context context
) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while (itr.hasMoreTokens()) {
word.set(itr.nextToken());
context.write(word, one);
}
}
}
public static class IntSumReducer
extends Reducer<Text,IntWritable,Text,IntWritable> {
private IntWritable result = new IntWritable();
public void reduce(Text key, Iterable<IntWritable> values,
Context context
) throws IOException, InterruptedException {
int sum = 0;
for (IntWritable val : values) {
sum += val.get();
}
result.set(sum);
context.write(key, result);
}
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(TokenizerMapper.class);
job.setCombinerClass(IntSumReducer.class);
job.setReducerClass(IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
FileInputFormat.addInputPath(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
System.exit(job.waitForCompletion(true) ? 0 : 1);
}
}
Hadoop et son écosystème
EcosystèmeBatch Processing - Hive
32
• Permet l’exécution de requêtes SQL sur un cluster
Hadoop en vue d’analyser et d’agréger les données.
• Langage de visualisation uniquement
• Offre les connecteurs ODBC/JDBC
28/02/2017
CREATE EXTERNAL TABLE IF NOT EXISTS test(id INT, value STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ';'
STORED AS TEXTFILE
LOCATION 'hdfs://localhost:20112/test/hive/‘;
SELECT * FROM test;
Hadoop et son écosystème
EcosystèmeBatch Processing - Pig
33
• Permet le requêtage des données Hadoop à partir
d’un langage de script
• Basé sur un langage de haut niveau permettant de
créer des programmes de type MapReduce
28/02/2017
a = LOAD 'nyse_stocks' using
org.apache.hcatalog.pig.HCatLoader();
b = filter a by stock_symbol == 'IBM';
dump b;
Hadoop et son écosystème
EcosystèmeBatch Processing - Cascading
34
• API de traitement de données et planificateur de
requête pour la définition, le partage et le traitement
de données
28/02/2017
Fields token = new Fields( "token" );
Fields text = new Fields( "text" );
RegexSplitGenerator splitter = new RegexSplitGenerator( token, "[ \\[\\]\\(\\),.]" );
Pipe docPipe = new Each( "token", text, splitter, Fields.RESULTS );
Pipe wcPipe = new Pipe( "wc", docPipe );
wcPipe = new GroupBy( wcPipe, token );
wcPipe = new Every( wcPipe, Fields.ALL, new Count(), Fields.ALL );
FlowDef flowDef = FlowDef.flowDef().setName( "wc" )
.addSource( docPipe, docTap )
.addTailSink( wcPipe, wcTap );
Flow wcFlow = flowConnector.connect( flowDef );
wcFlow.writeDOT( "dot/wc.dot" );
wcFlow.complete();
Hadoop et son écosystème
EcosystèmeBatch Processing - Spark
35
– Moteur d’analyse multifonction adapté au traitement
rapide de gros volumes de données
– Concurrent de MapReduce
– Basé sur les RDD (Resilient Distributed DataSet)
– Peut également utiliser SparkSQL/DataSet
– Peut s’appuyer sur YARN
28/02/2017
Hadoop et son écosystème
Ecosystème
Analytic SQL
3628/02/2017
BatchProcessing
AnalyticSQL
SearchEngine
MachineLearning
StreamProcessing
Workload Management (Yarn)
Storage for any type of dataUnified, Elastic, Resilient, Secure
Data Integration
Filesystem (HDFS)
Hadoop et son écosystème
EcosystèmeAnalytic SQL
37
• Drill
• Impala
• Spark SQL
• Autres…
28/02/2017
Hadoop et son écosystème
EcosystèmeAnalytic SQL - Drill
38
• Système distribué permettant d’effectuer des requêtes sur de larges données permettant l’analyse interactive des données en SQL
• Permet de requêter des sources de données hétérogènes : – MongoDB
– JSON
– HDFS
– Hive
– Classpath
– HBase
• Offre le connecteur ODBC
28/02/2017
Hadoop et son écosystème
EcosystèmeAnalytic SQL - Impala
39
• Système distribué permettant d’effectuer des requêtes sur
de larges données permettant l’analyse interactive des
données en SQL
• Permet de requêter des sources de données hétérogènes :
– HDFS
– HBase
• Compatible avec Hive
28/02/2017
Hadoop et son écosystème
EcosystèmeAnalytic SQL – Spark SQL
40
• Module de Spark offrant une API de plus haut niveau
avec une syntaxe SQL
• Equivalent à Hive mais s’exécutant sur Spark
• Offre le connecteur JDBC
28/02/2017
Hadoop et son écosystème
EcosystèmeAnalytic SQL – Autres
41
• Hawq
• Presto
• Hive LLAP
• …
28/02/2017
Hadoop et son écosystème
Ecosystème
Stream Processing
4228/02/2017
BatchProcessing
AnalyticSQL
SearchEngine
MachineLearning
StreamProcessing
Workload Management (Yarn)
Storage for any type of dataUnified, Elastic, Resilient, Secure
Data Integration
Filesystem (HDFS)
Hadoop et son écosystème
EcosystèmeStream Processing
43
• Storm
• Spark Streaming
• Spring Cloud DataFlow
• Samza
• Autres…
28/02/2017
Hadoop et son écosystème
EcosystèmeStream Processing - Storm
44
• Système de calcul distribué temps réel
• S’appuie sur les notions de :
• Nimbus Node (~JobTracker)
• Zookeeper
• Supervisor Node (~NodeManager)
• Notions de Spouts/Bolts
• Peut s’appuyer sur YARN
28/02/2017
Hadoop et son écosystème
EcosystèmeStream Processing – Spark Streaming
45
• Module de Spark permettant de traiter des flux de
données qui arrivent en continu, et donc de traiter
ces données au fur et à mesure de leur arrivée
• Fonctionnement sur le principe de microbatch
28/02/2017
Hadoop et son écosystème
EcosystèmeStream Processing – Spring Cloud DataFlow
46
• Anciennement Spring XD
• Basé sur Spring Integration, Spring Batch et SpringData
• Offre un DSL qui permet de construire une route qui est exécuté par des job managé par Spring Batch en exploitant le provisionning par YARN / MESOS / Local
28/02/2017
Hadoop et son écosystème
EcosystèmeStream Processing – Samza
4728/02/2017
• Framework permettant de traiter de manière
distribué des flux
• Utilise Kafka, YARN
• Offre la possibilité de faire du windowing
Hadoop et son écosystème
EcosystèmeStream Processing – Autres
4828/02/2017
• Flink
• NiFi
• Kafka Stream
• Apex
• Heron
• …
Hadoop et son écosystème
Ecosystème
Machine Learning
4928/02/2017
BatchProcessing
AnalyticSQL
SearchEngine
MachineLearning
StreamProcessing
Workload Management (Yarn)
Storage for any type of dataUnified, Elastic, Resilient, Secure
Data Integration
Filesystem (HDFS)
Hadoop et son écosystème
EcosystèmeMachine Learning
50
• Mahout
• Spark ML
28/02/2017
Hadoop et son écosystème
EcosystèmeMachine Learning - Mahout
51
• Vise à créer des implémentations d’algorithmes
d’apprentissage automatiques et de dataminings.
• Même si les principaux algorithmes d’apprentissage
se basent sur MapReduce, il n’y a pas d’obligation à
utiliser Hadoop
28/02/2017
Hadoop et son écosystème
EcosystèmeMachine Learning – Spark ML
52
• Librairie Spark de machine learning fournissant les
algorithmes de classique (classification, regression,
clustering, collaborative filtering, dimensionality
reduction, …)
28/02/2017
Hadoop et son écosystème
Ecosystème
Machine Learning
5328/02/2017
BatchProcessing
AnalyticSQL
SearchEngine
MachineLearning
StreamProcessing
Workload Management (Yarn)
Storage for any type of dataUnified, Elastic, Resilient, Secure
Data Integration
Filesystem (HDFS)
Hadoop et son écosystème
EcosystèmeSearch Engine
54
• SolR
• Elastic
28/02/2017
Hadoop et son écosystème
EcosystèmeSearch Engine – SolR
5528/02/2017
• SolR offre une indexation distribué, répliqué basé sur
Apache Lucene
• Permet la recherche full text, le highlighting, le
facetting, la recherche géospatiale
• Permet l’indexation de documents riches
Hadoop et son écosystème
EcosystèmeSearch Engine – Elastic
5628/02/2017
• Elastic offre une indexation distribué, répliqué basé
sur Apache Lucene
• Permet la recherche full text, le highlighting, le
facetting, la recherche géospatiale
• Permet l’indexation de documents riches
Hadoop et son écosystème
Ecosystème
Autre
5728/02/2017
Hadoop et son écosystème
EcosystèmeAutre
58
• HBase
• Phoenix
• Cassandra
• Neo4J / MongoDB / …
• Kudu
• Confluent.io
• Oozie
• Zookeeper
• Tez
• Mesos
• MaprFS / MaprDB / MaprStream
• Beam
• Ambari / Knox / Ranger
28/02/2017
Hadoop et son écosystème
EcosystèmeAutre - HBase
59
• Système de gestion de base de données non-
relationnelles distribué de type orientée colonnes
• Basés sur une architecture maitre/esclave (HBase
Master et Region Server)
28/02/2017
Hadoop et son écosystème
EcosystèmeAutre - Phoenix
6028/02/2017
• Permet de requêter HBase via une interface SQL en
offrant un driver jdbc.
• Phoenix accepte une requête SQL et la traduit en
une série de scan Hbase. Il orchestre ensuite son
exécution pour produire un résultat au format
ResultSet JDBC.
• Les métadonnées de la table sont stockées et
versionnées dans une table HBase.
Hadoop et son écosystème
EcosystèmeAutre - Cassandra
6128/02/2017
• Système de gestion de base de données non-
relationnelles distribué de type orientée colonnes
• Conçu pour être hautement disponible, scalable
linéairement, et sans Single Point Of Failure
Hadoop et son écosystème
EcosystèmeAutre – Neo4J / MongoDB / …
6228/02/2017
• Neo4j
– NoSQL orienté graphe
• MongoDB
– NoSQL orienté document
• CouchBase
– NoSQL orienté clé/valeur / document
• Redis / Voldemort
– NoSQL orienté clé/valeur
Hadoop et son écosystème
EcosystèmeAutre - Kudu
6328/02/2017
• Système de gestion de base de données non-
relationnelles distribué de type orientée colonnes
• Conçu pour offrir de bonnes performances aussi
bien pour les scanne que pour les accès aléatoire
• Se positionne entre HDFS et HBase
Hadoop et son écosystème
EcosystèmeAutre – Confluent.io
6428/02/2017
• Intégration de :
– Kafka
– Avro
– SchemaRegistry
– Gateway Rest pour lire/écrire dans Kafka
Hadoop et son écosystème
EcosystèmeAutre - Oozie
65
• Solution de workflow (au sens ordonnanceur d’exploitation) utilisée pour gérer et coordonner les tâches de traitement de données à destination de Hadoop.
• Integré avec l’écosystème Hadoop :
– MapReduce (Java et Streaming)
– Pig
– Hive
– Sqoop
– Autres (Java ou scripts de type Shell)
28/02/2017
Hadoop et son écosystème
EcosystèmeAutre - Zookeeper
66
• Service de coordination des services (et en
l’occurrence des services d’un cluster Hadoop)
• Fournit aux composants Hadoop les fonctionnalités
de distribution
• Indispensable à :
– HBase
– Storm
– Kafka
28/02/2017
Hadoop et son écosystème
EcosystèmeAutre - Tez
67
• Remplace MapReduce en utilisant YARN afin de
fournir des requêtes dites “temps réel”
• Utilisable par (work in progress) :
– Hive
– Pig
– Cascading
28/02/2017
Hadoop et son écosystème
EcosystèmeAutre - Mesos
6828/02/2017
• Alternative à YARN
• Cluster Manager permettant d’abstraire le CPU, la
mémoire, le stockage ainsi que les resources de
calcul
Hadoop et son écosystème
EcosystèmeAutre – MaprFS / MaprDB / MaprStream
6928/02/2017
• MapR propose MapR-FS en alternative à HDFS
• MapR propose MapR-DB en alternative à HBase
• MapR propose MapR-Stream en alternative à Kafka
• Offre les mêmes API (HDFS/HBase/Kafka)
Hadoop et son écosystème
EcosystèmeAutre – Beam
70
• API de Google DataFlow permettant de s’exécuter
sur différent moteur d’exécution :
– DataFlow
– Spark
– Flink
– Apex
– …
28/02/2017
Hadoop et son écosystème
EcosystèmeAutre – Ambari / Knox / Ranger
71
• Ambari
– Destiné à la supervision et à l’administration de clusters Hadoop
– Gestion de configuration permettant de déployer des services d’Hadoop ou de son écosystème sur des clusters de machines
• Knox
– Gateway HTTP
• Ranger
– Gestion de la sécurité
28/02/2017
Hadoop et son écosystème
Le mot de la fin… (?)
7228/02/2017
Hadoop et son écosystème
Questions ?
7328/02/2017
Hadoop et son écosystème
Merci !
7428/02/2017