retrouvez notre techday sur Hadoop & le Big Data.
La Technologie Hadoop au coeur des
projets "Big Data".
Pour en savoir plus sur notre projet Square Predict:
http://www.square-solutions.com/accueil/square-predict-big-data-assurance/
Big Data : Quoi de neuf ?
Facabook
warehouses
180 petabytes
of data a year.
Twitter
manages
1.2 million
deliveries
per second
Nouveaux Métiers
“Data Scientist”
Nouveaux
enjeux
économiques
Nouvelles
technologies
Big Data : Quoi de neuf ?
“Big Data is data that exceeds the processing capacity of coventionnal database
systems. The data is too big, move too fast, or doesn’t fit the strictures of your
database architectures. To gain value from this data, you must choose an
alternative way to process it.”
Edd Dumbill, O’Reilly
Hadoop : Définition
“Hadoop est le framework le plus utilisé actuellement pour
manipuler et faire du Big Data.
Apache Hadoop est un framework qui va permettre le
traitement de données massives sur un cluster allant
d’une à plusieurs centaines de machines.
C’est un projet open source (Apache v2 licence).”
Hadoop : Historique
Création de Nutch
par Doug Cutting
et Mike Cafarella
Google publie
GFS
& Map Reduce
Doug Cutting
ajoute DFS &
Map Reduce à
Nutch
Yahoo
embauche
Cutting &
adopte Hadoop
Hadoop est elu
Top Project
Apache
Facebook sort
Hive le support
du SQL pour
Hadoop
Cloudera
embauche
Cutting
Hadoop : HDFS
“HDFS (Hadoop Distributed File System) est un système de fichiers Java
utilisé pour stocker des données structurées ou non sur un ensemble de
serveurs distribués.”
● Node (Master/slave) : Dans une architecture Hadoop,
chaque membre pouvant traiter des données est
appelé Node (Noeud).
● Un seul d’entre eux peut être Master même s’il peut
changer au cours de la vie du cluster, il s’agit du
NameNode. Il est responsable de la localisation des
données dans le cluster.
● Les autres nœuds, stockant les données, sont des
slaves appelés DataNode.
● Le NameNode est donc un Single Point Of Failure
(SPOF) dans un cluster Hadoop. (Hadoop 2.0,
introduit un failover automatisé).
Hadoop : HDFS
● BlockSize : Taille unitaire de stockage
(généralement 64 Mo ou 128 Mo).
C’est à dire qu’un fichier de 1 Go
(et une taille de block de 128 Mo) sera divisé
en 8 blocks.
● Réplication Factor : C’est le nombre de
copies d’une donnée devant être
réparties sur les différents noeuds du
cluster. (souvent 3, c’est à dire une primaire
et deux secondaires)
● Processus de lecture HDFS :
○ Interrogation du NameNode pour
localiser les adresses des Nodes
hébergeant les blocs sous-
jacents les plus proches.
● Processus d’écriture
● Écriture sur le DataNode.
● DataNode communique ses blocs
au NamenNde. Replication..
● Write-once.
● Alternatives :
○ Hbase : Base NoSql insipirée de Google BigTable. Utilisée
conjointement au système de fichiers HDFS, il facilite la distribution
des données sur plusieurs Noeuds. On compare souvent Hbase =>
HDFS à ce que représente Json => XML.
○ MapR : Propose une atlernative à HDFS sans SPOF. C’est un fork
de Hbase en mode propriétaire.
○ Cassandra : Initiée par Facebook qui l’abandonne au profit de
Hbase, c’est une base NoSql qui optimise les opérations en écriture.
Comme Hbase, elle ne remplace pas HDFS mais offre un moyen
supplémentaire de l’exploiter.
○ Cloud : Les offres cloud peuvent être une alternative Amazon S3,
Hadoop : HDFS
Hadoop : Map Reduce.
“A l’origine crée par Google pour son outil de recherche web.
C’est un framework qui permet le décomposition d’une requête importante en
un ensemble de requêtes plus petites qui produiront chacune un sous
ensemble du résultat final : c’est la fonction Map. L’ensemble des résultats est
traité (agrégation, filtre) : c’est la fonction Reduce.”
La première phase
(Map) est une
étape d’ingestion et
de transformation
des données sous
la forme de paires
clé/valeur.
Regroupement et tri
par clé et chaque
groupe est transmis
à une fonction
Reduce.
(Reduce) est une
étape de fusion des
enregistrements
par clé pour former
le résultat final.
Hadoop : Map Reduce.
1. savoir être et
2. savoir faire
3. sans faire savoir
1 - Configuration du job (définie par l’utilisateur)
2 - Découpage du jeu de données et distribution sur le cluster (géré par Hadoop)
3 - Démarrage de chaque tâche Map avec son propre jeu de données issu du découpage (géré par Hadoop)
4 - Exécution en parallèle de chaque fonction Map (implémentée par l’utilisateur)
5 - Les sorties des fonctions Map sont triées par clé pour former de nouvelles unités de données (gérées par Hadoop)
6 - Démarrage des tâches Reduce avec son propre jeu de données issu du tri (géré par Hadoop)
7 - Exécution en parallèle de chaque fonction Reduce (implémentée par l’utilisateur)
8 - Assemblage du résultat des opérations Reduce et Stockage (gérés par Hadoop)
Hadoop : Map Reduce.
● JobTracker :
○ Coordonne les Job Ma Reduce
sur le cluster, distribue les tâches
d’exécution (Map ou Reduce) au
TaskTracker.
○ Cohabite avec le NameNode. une
instance par cluster.
● TaskExecutor :
○ Exécute les tâches d'exécution
(Map ou Reduce)
○ Notification JobTracker (failover,
erreur…)
○ Cohabite avec un DataNode.
Autant d’instances que de
nœuds esclaves.
La communication entre les nœuds (NameNode/DataNode,
JobTracker/TaskTracker) s’effectue par RPC.
Hadoop : Map Reduce.
public class WordCountReducer extends MapReduceBase implements
Reducer {
public void reduce(Text key, Iterator values,
OutputCollector output, Reporter reporter )
throwsIOException {
int nbOcc = 0;
while (values.hasNext ()) {
nbOcc += values.next ().get();
}
output.collect (key, new IntWritable (nbOcc));}}
class WordCountMapper extends MapReduceBase implementsMapper{
private final static IntWritable mDefOcc = newIntWritable (1);
private Text mWord = new Text();
public void map(LongWritable key, Text value, OutputCollector
output, Reporter reporter ) throwsIOException {
String lLine = value.toString ();
StringTokenizer lIt = new StringTokenizer(lLine);
while (lIt.hasMoreTokens()) {
mWord.set(lIt.nextToken());
output.collect(mWord, mDefOcc);}}}
public class WordCount {
public static void main(String[] args) throws Exception {
JobConf conf = new JobConf (WordCount. class);
conf.setJobName ("Compteur de mots" );
conf.setMapperClass (WordCountMapper. class);
onf.setReducerClass (WordCountReducer. class);
conf.setInputFormat (TextInputFormat. class);
conf.setOutputFormat (TextOutputFormat. class);
FileInputFormat.setInputPaths (conf, newPath(args[0]));
FileOutputFormat.setOutputPath (conf, newPath(args[1]));
JobClient.runJob (conf);
}
Hadoop : YARN
YARN (Yet-Another-Resource-Negotiator) est aussi appelé MapReduce 2.0.
Ce n’est pas une refonte mais une évolution du framework MapReduce.
● YARN répond aux problématiques suivantes du Map Reduce :
○ Problème de limite de “Scalability” notamment par une meilleure
séparation de la gestion de l’état du cluster et des ressources.
■ ~ 4000 Noeuds, 40 000 Tâches concourantes.
○ Problème d’allocation des ressources.
○ Un support et un protocole clairs pour faciliter le développement
de frameworks transversaux.
Valeurs codées en dûr.Des tâches Map sont en attentes alors que des slots
de tâche reduce sont libres.
Hadoop : YARN
JT NN
TE DN TE DN TE DN
Cluster Apache Hadoop Classique
ResourceManager
AplicationMaster AM AM
TE DN TE DN TE DN
Le Job Tracker a trop de responsabilités.
● Gérer les ressources du cluster.
● Gérer tous les jobs
○ Allouer les tâches et les ordonnancer.
○ Monitorer l'exécution des tâches.
○ Gérer le fail-over.
○ ………..;
ResourceManager et Application Master.
● ResourceManager remplace le JobTracker
et ne gère que les ressources du Cluster.
● Une entité Application Master est allouée
par Application pour gérer les tâches.
● Application Master est déployée sur les
noeuds esclaves.
Re-penser l’architecture du Job Tracker.
● Séparer la gestion des ressources du cluster
de la coordination des jobs.
● Utiliser les noeuds esclaves pour
gérer les jobs.
ResourceManager
AplicationMaster AM AM
NodeManager DN NM DN NM DN
Cluster Apache Hadoop 2.0
Node Manager.
● Permet d’exécuter plus de tâches qui ont du sens
pour l’Application Master, pas seulement du Map et
du Reduce.
● La taille des ressources est variable (RAM, CPU,
network….). Plus de valeurs codées en dur qui
nécessitent une redémarrage.
~ 10K Noeuds par cluster.
~ 100 K Tâches concourantes
Hadoop : YARN
Hadoop : YARN
Hadoop se transforme en OS de la donnée !
● Client et cluster peuvent utiliser des versions différentes.
● Des protocoles de communication standardisés et documentés.
● Évolution du framework progressive avec rétro-compatibilité sans destruction des
services.
Hadoop : HBase
Architecture HBase
Représentation des données Hbase
- Hbase est :
● Insipirée par Google Big Table.
● Distribuée et orientée Colonne.
● Multidimensionnelle.
● Hautement disponible.
● Haute performance.
● Système de stockage.
● Souvent utilisée avec HDFS.
- Pourquoi HBase + HDFS ?
● Une représentation orientée
colonne du HDFS.
● Partitionnement et tri automatique
+Rapide +GroupBy +OrderBy
● Ajout/Suppression à chaud des
Noeuds.
● Accès Read/Write des données
aléatoires, dialogues directs avec les
noeuds esclaves.
Hadoop : Hive
● C’est quoi Hive ?
○ Initié par Facebook.
■ Rentabiliser les ingénieurs SQL.
■ Démocratiser Map/Reduce.
○ Infrastructure pour entrepôt de données “Data WareHouse”
● Comment ça marche ?
○ Hive a pour fondation Hadoop.
○ Hive structure les données tables, colonnes, lignes.
○ Hive stocke les données dans HDFS.
○ Hive compile les requêtes SQL en Job Map/Reduce.
○ Hive propose un langage de requête SQL HIVEQL DDL et DML.
Hadoop : Hive
Chargement données depuis HDFS
Création de tables.
Sélection et insertion de résultats.
Hadoop : Autres composants
Flume
Solution de collecte et d’agrégation
de log native avec HDFS.
Knox
Gestion de la sécurité et
authentification.
WebHDFS
Servie REST pour HDFS.
Mahout
DataMining.
Besoin temps réels “Streaming”
Drill, Tez, Spark, Sorm…..
Et la gestion des transactions ????
Déjà dans toutes les têtes surtout celle de Doug
Cutting (le père d’Hadoop) !!
Hadoop : Les Distributions
Pourquoi des distributions ?
● Pour regrouper de façon homogène les différentes
extensions.
● Pour faciliter l’installation, la diffusion, le support.
● Pour permettre d’incuber des “Business Model” pour
les éditeurs qui contribuent largement à Hadoop.
● 3 acteurs majeurs dans l'écosystème :
○ Horton Works
○ Cloudera
○ MapR
Hadoop : Les Distributions
● 2011 Yahoo.
● Composants Open Source.
● 1:1 avec Hadoop.
● Projets reversés à Hadoop :
○ YARN
○ HCatalog
○ Ambari
Hadoop : Les Distributions
● Commercial et Open Source.
● Hadoop + Composants Maison.
● Composants propriétaires :
○ Impala (requêtes temps réel)
○ Cloudera Manager (gestion du cluster,
déploiement..)● Projets reversés à Hadoop :
○ Hadoop Common (Utilitaires)
○ Hue (SDK IHM)
○ Whirr (SAAS Hadoop)
Hadoop : Les Distributions
● 2009, Commercial et Open Source
● Refonte du coeur de la plateforme (MapR
FS et MapR MapReduce)
● Optimisé pour Hbase.
● Projets reversés à Hadoop :
○ Hbase, Pig, Hive, Mahout
○ Sqoop, Flume.
● Composants propriétaires :
○ Cascading (Usine de dev Java)
○ Vaidya (Perf, Benchmark)
○ Drill (Requêtes temps réel)
Hadoop : Les Distributions
Comment choisir une solution Hadoop ?
● Modèle économique (Open Source, Commercial..).
● Les composants.
● Maturité de la solution, le support, la documentation, le
retour d'expériences.
● Le rapport avec Hadoop, la rapidité des évolutions.
● Partenariats (hébergeurs…), compatibilité avec les
produits satellites.
Hadoop : Qu’est que Spark ?
“Apache Spark is a powerful open source processing engine for Hadoop data
built around speed, ease of use, and sophisticated analytics. It was
originally developed in 2009 in UC Berkeley’s AMPLab, and open sourced in
2010.”
● Ce n’est pas une version modifiée de Hadoop.
● C’est un moteur Map-Reduce plus évolué, plus rapide.
○ Utilisation de la mémoire pour optimiser les traitements.
○ Des API’S pour faciliter et optimiser les étapes d’analyses.
○ Permettre le traitement temps réel des données.
● Compatible avec le système de Stockage de Hadoop (HDFS, Hive,
SequenceFiles…)
Hadoop : Spark, plus rapide
Lent, provoqué par les IO, Sérialision, Réplication
Utilisation d’une mémoire partagée RDD’s 100x plus
rapide, 10x moins d’itérations.
RDD’s (Resilient Distributed DataSet)
- Une collection d’objets distribués, mise
en cache en mémoire au travers du
cluster.
- Une API’ pour manipuler ces objets
“Operators”
- Système de fail over automatique.
Logistic regression in Hadoop and Spark
Hadoop : Spark, facile à utiliser.
● Une liste d’Operators pour faciliter la manipulation des données au
travers des RDD’S.
Map, filter, groupBy, sort, join, leftOuterJoin, ritghtOuterJoin, reduce, count, reduceByKey,
groupByKey, first, union, cross, sample, cogroup, take, partionBy, pipe, save…..
● Compatible avec les langages de programmation fonctionnel Scala,
Python...
Hadoop : Spark, un Framework
analytique.
Shark : Moteur de requête SQL,
basé sur le coeur de Spark (in
memory), il permet d'exécuter des
requêtes hive sans modification
100x plus rapidement.
MLLib : Library d’algorithmes d’
analyses de données (data mining),
scalable et optimisé (limite des
interactions, RDD’s), Kmeans, ALS,
L2-> L1...
Calling MLlib in Scala
Spark Streaming : A opposer aux
traitements “batch”, mise à jour d’un
état dynamiquement, piloté par des
évènements sur les données “event
processing”. (Filtre de Spam,
analyse de click, reporting temps
réel…)
Counting tweets on a sliding window
Hadoop et le "Big Data"
Square Predict, Cas d’utilisation.
Hadoop : Cas d’utilisation
Square Predict
“Le projet Square Predict , valoriser et monétiser l'énorme
quantité de données à disposition des assureurs”
“L’objectif de Square Predict est de générer des
prédictions utiles au business des assureurs par l’analyse
de leur données fusionnées avec l’Open Data.”
Le projet Square Predict est un projet Open Source de 2,76
M€ sur 3 ans (de 09/2013 à 09/2016).
Hadoop : Cas d’utilisation
Square Predict
“Estimation en temps réel de l’impact (étendue + sévérité)
des dégâts causés par un évènement climatique de grande
ampleur”
“Identification des facteurs expliquant la hausse de la
sinistralité incendie/dégâts des eaux par zones
géographiques”
“Identification des facteurs expliquant la hausse de la
sinistralité automobiles ”
Hadoop : De vrais projets.
● EDF : Nouveau compteur électrique “Linky”
● Joint-venture (Telefonica, T-Mobile, Orange et Vodafone) :
“Le projet Webe, Traiter en temps réel les données générées par des dizaines de millions d'abonnés. A la clé,
l'idée est de permettre aux annonceurs de proposer des services contextualisés et personnalisés, mais aussi des
promotions et offres sur-mesure géolocalisées en fonction de zones prédéfinies “
● Ericsson : le Big Data au service de l'IP TV
“Personnaliser programmes et publicités en fonction de la météo, Nous corrélons les données des usages IP TV
avec des informations météorologiques mais aussi sociales : vacances scolaires, évènements politiques ou sportifs,
campagnes publicitaires…”
● TapValue : Le retargeting multicanal
“Retargeting publicitaire multicanal et géolocalisé”, L'application présentée par cette start-up française,
baptisée Profilematch, permet de traquer le comportement de l'utilisateur quel que soit le terminal qu'il utilise :
PC, tablette, smartphone... Et lui proposer un contenu personnalisé adapté à chaque écran, en fonction de ses
interactions avec la marque.”
Trophées de l'innovation
Big Data 2014