SlideShare une entreprise Scribd logo
1  sur  201
Module : Ecosystème de la Science des Données
Professeur : Idriss CHANA
Email : idrisschana@gmail.com
A.U : 2018 et 2019
Contenu du cours
I) introduction au Big Data
II) stckage de big data : Les bases de données NoSQL
- Différente catégories : clé-valeur , Document, colonne, , graphe
- TP:
- Mongodb,
- Redis,
- Cassandra
III) hadoop map reduce
- architecture hadoop, principe MAP REDUCE.
- TP
- Configuration hadoop sous ubuntu
- Manipulation map reduce cas d’utilisation
IV) Écosystème de Hadoop : big, hive et hbase
- Fonctionnement
- TPs (big, hive et hbase )
V) Machine learning
I) Introduction au Big Data
AVANT DE DÉMARRER
Production des données (1/2)
• Tout métier/organisation fournit des services
et/ou vend des produits
• Le dérivé de tout métier/organisation est une
donné
• Plusieurs machines et périphériques
produisent un volume important de données
• Logs de serveurs
• Données de capteurs; e.g.:
– Capteurs de voitures
– Les tags RFID
Introduction au Big Data
Production des données (2/2)
• Les individus produisent des données avec un
taux croissant
– E-mail, SMS, social media, appels téléphoniques,
Internet, images et videos
• Presque tout ce qu’on fait laisse une trace numérique!
• Dispositifs de plus en plus connectés à Internet
et générant des données
– Créer l'Internet of things (IoT)
• Résultat: un grand volume de données
– Si elles sont utilisées correctement, elles peuvent
être très utiles et bénéfique pour tout le monde
Introduction au Big Data
Questions ?
Définition de Big Data
Exercises : C’est quoi Big Data?
• Séparez-vous en groupes
• La tâche de chaque groupe est de
– Donner une définition du Big Data
– Citer trois intérêts du Big Data
– Citer trois inconvéniants/faiblesses du Big Data
Introduction au Big Data
Exercises : c’est quoi Big Data?
Avantages Inconvénients/Faiblesses
Introduction to Big Data
Définition du Big Data
• Stockage et analyse des jeux de données
larges et/ou complexes
– Les données dépassent la capacité de traitement
des systèmes de bases de données traditionnels
• Trop larges
• Se déplacent rapidement
• Ne suivent pas la structure des bases de données
relationnelles
Introduction au Big Data
Définition du Big Data
• Le Big Data s’étend sur trois dimensions
– Volume
• La Croissance continue de tout type données
– Vélocité
• La vitesse avec laquelle les données sont produises
– Variété
• Tout type de données―structurées et non structurées
– Texte, vidéo, audio, fichiers log, etc.
Introduction au Big Data
Questions ?
Architecture du Big Data
Pourquoi le Big Data est important
• Big Data peut jouer un rôle économique et
environemental significatif
• Tout le monde peut en bénéficier
– Organisations gouvernementales
– Economies nationales
– Entreprises multinationales
– Entreprises privées
– Petites et moyennes entreprises
– Individus
Introduction au Big Data
Pourquoi le Big Data est important
• Plusieurs organisations écartent plus de 80%
des données générées
– baser la décisions sur des bases de données
relationnelles
• Représente souvent moins de 20% des données métier
– Dans quelle mesure ces métiers de décisions sont-
ils bien informés?
Introduction au Big Data
Exemple Big Data : Revendeur en-ligne
• La vente par internet diffère de la vente en magasin pour plusieurs
raisons
– Comment savez-vous ce que les gens veulent acheter en-ligne?
– Quel est le critère de décision chez les clients en-ligne?
• Internet offre la possibilité de collecter de l’information sur les
clients
– Recquièrt la collecte des données sur toute action prise par le client
par rapport à l’organisation
• Site web, apps mobile, téléphone, social media, revues de
produits, donné de fabrication, traffic Internet
Introduction au Big Data
Exemple Big Data : Revendeur en-ligne
• Permet de comparer des clients similaires et de
prévoir les modèles d’achat
– L’interaction avec les site web est essentielle
• D’où viennent-ils?
• Quelles pages ont-ils vues?
• Quels termes ont-ils tapés?
• Lisent-ils des informations de livraison?
• Ont-ils déjà écrits des commentaires?
• Des sources de données différentes peuvent être
intégrées.
– Aide à former une image cohérente de l'entreprise et
de ses clients
Introduction au Big Data
Pourqoui maintenant ? (1/2)
• Travailler avec Big Data nécessite
effectivement la capacité d'effectuer quatre
tâches.
1. Rassembler efficacement les données.
2. Stocker les données efficacement et de manière
rentable.
3. Traiter les données en temps opportun.
4. Analyser les résultats.
Introduction au Big Data
Pourquoi maintenant? (1/2)
• Le développement technologique a déjà rendu
le Big Data accessible à tous:
– Des formes alternatives de stockage économique et évolutif
– Traitement à la demande , puissant et à faible cout
– De meilleurs outils et algorithmes pour le traitement et
l'analyse des données
Introduction au Big Data
Architecture du Big Data
• La stratégie réussie de Big Data exige:
– Concevoir une solution correcte.
– Construire une infrastructure correcte.
– Utilisation de l’infrastructure pour convertir :
• Donnée en Information en Valeur
Introduction au Big Data
Architecture Big Data
• L’architecture définit la structure de la solution Big
Data
– Connue sous le nom de Enterprise Data Hub
• On parle aussi de rassemblement de données « Data Lake”
• Grande réserve des données de l’entreprise
– Générées en interne et en externe
– Fournit des outils pour obtenir la Valeur à partir des
données
Introduction au Big Data
Architecture de base
• Introduction au Big Data
Exigences d’une Architecture Big Data ( ½)
• Stockage des données
– Stocke une variété de données d’une manière
rentable
• Traitement des données
– Satisfaire les exigences de traitement
• Batch
• Requêtes Ad hoc
• Traitement de flux en temps réel
• Recherche
• Machine learning, découverte
Introduction au Big Data
Big Data Architecture Requirements ( 2/2)
• Intégration
– Intégrer rapidement des données provenant de
sources différentes
• Sécurité
– Authentification, autorisation, comptabilité,
protection des données
• Opérations
– Provisionner, gérer, superviser, et planifier les
ressources
Introduction to Big Data
Questions ?
II) Stockage de données massive
&
Le rôle de NoSQL
Objectives de ce chapitre
– Introduire les different types de base de données
stockant les données massive ( Big Data Stores)
• Key–value
• Document
• Column family
• Graph
– Se familiariser avec quelque base de données
NoSQL notament:
• Redis
• MongoDB
• Cassandra
• Neo4j
Stockage Big Data
Le rôle de NoSQL
Le dilemme de stockage(1/2)
• Le stockage à faible donne capacité aux
organisations de stocker plus de données que
jamais.
• Ils ont également l’accès à tous de types de
données
– Structuré
– Non structuré
Stockage Big Data
Le dilemme de stockage(2/2)
• Relever les défis de Big Data est un défi
techniquement complexe vu:
- Volume
- Variety
- Velocity
- Veracity : Est-ce que les données qui sont stockées, et
extrait sont significatif pour le problème analysé
• La solution de stockage doit répondre à un
certain nombre d’exigences
Stockage Big Data
Les exigences de stockage de données
• La Capacité
– Être en mesure de croître rapidement ( mise en
échelle)
• La sécurité
– Beaucoup de données portent des normes de
sécurité
- Finance, médical
– L'intégration pour l'analyse augmente le défi de la
sécurité
Stockage Big Data
Les exigences de stockage de
données(1/4)
• La Latence
– De nombreuses solutions :
• Ont un composant temps réel
• Ont besoin de croitre et de fournir encore une faible latence
• L’ Accès
– Puisque l'utilisation de outils d'analyse augmente, les données sont
accessibles à un public de plus en plus large
• La flexibilité
– La conception doit permettre aux infrastructures de stockage de croître
– Intégrer les possibilités de migration des données
– Interfaçage facile avec d’autre application et d’autre plateforme
Stockage Big Data
Les exigences de stockage de
données(2/4)
• Persistance
– Durée souvent requise pour l'analyse temporelle
– La conformité réglementaire exige souvent que les données soient
sauvegardées pendant de nombreuses années
– Les périphériques de stockage peuvent nécessiter des fonctionnalités de
fiabilité à long terme intégrées
• Coût
– Principalement construit autour du matériel de base à faible coût
– Les coûts peuvent encore être importants lorsque le volume augmente
Stockage Big Data
Les exigences de stockage de données
(3/4)
• Les bases de données relationnelles sont au cœur du stockage des
données applicatives depuis de nombreuses années
– Et continuera à l'être
• Les données stockées dans une base de données relationnelle ont
généralement ces qualités et caractéristiques:
– Structure bien définie avec des schémas de table fixe
– Les relations entre les données sont clairement définies
– Les index peuvent être définis pour exploiter les requêtes rapides
Stockage Big Data
Les exigences de stockage de
données(4/4)
• Les bases de données Relationnelles offrent
également de nombreux avantages
– Intégration simple des applications
– L'intégrité des données
• Atomicité, Cohérence, Isolation, Durabilité (ACID)
– Outils de reporting
– Mode standard d'accès aux données avec SQL
Stockage Big Data
Extensibilité des bases de données relationnelles
• Les bases de données relationnelles sont
conçues pour fonctionner sur des machines
individuelles
• L’ extension (scaling): signifie fonctionner sur
une machine plus grande
– D'autres approches Alternative ont été
développées:
• Les bases de données prenant en charge les clusters,
comme Oracle Real Application Clusters (RAC)
• Éclatement (Sharding ) des ensembles de données sur
différentes machines
Stockage Big Data
Extensibilité des bases de données relationnelles
• L'incompatibilité entre les bases de données
relationnelles et les clusters à pousser certains
acteurs à proposer d’autre solution alternatives:
– Google
– Amazone
• Ces deux organisations disposent de données à
une échelle supérieure à la plupart des
organisations
– Big Data!
Stockage Big Data
Émergence de bases de données alternatives
• Un nouveau jeu de base de données a émergé au cours des
dernières années
– La principale motivation était de supporter les grands ensembles de
données
• Les caractéristiques communes de ces bases de données :
– Mis en Échelle pour les grands ensembles de données
– N'ont pas de modèle relationnel
– Aucun schéma fixe permettant de stocker des données
– Grandes exigences de stockage de données
– Exécuter sur des plusieurs machines à bas prix (clusters)
Stockage Big Data
NoSQL
• Ces nouveaux base de données sont des bases de
données NoSQL
– Le terme a été utilisé pour la première fois en 1998 pour
une base de données relationnelle open source *
– Est devenu « terme populaire » en 2009
• Johan Oskarsson a organisé un événement pour
discuter des bases de données distribuées et a utilisé le
terme NoSQL
• Il n'existe pas de définition officielle de NoSQL
– Utilisé comme terme générique pour les base de données
non structurées
Stockage Big Data
*www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/noSQL
Persistence Polyglotte
• Les base de données NoSQL ne remplacent pas les
bases de données SQL
– Complémentarité
• Il existe maintenant un choix de technologies de
stockage de données multiples disponibles
– Doit être choisi en fonction de la façon dont les données
sont utilisées
– Mène à ce qu'on appelle la persistance polyglotte
Stockage Big Data
Persistence Polyglotte
• Définition:
"Utilisation de plusieurs technologies de stockage de données,
choisies en fonction de la façon dont les données sont utilisées par
des applications individuelles"
Source: Sadalage, Pramod, and Martin Fowler. NoSQL Distilled. Addison-Wesley, 2012.
Stockage Big Data
Persistence Polyglotte
• Les bases de données SQL présentent de nombreux
avantages
– Le modèle de données basé sur des schémas est encore
très pertinent pour de nombreuses applications
– Il existe un grand nombre d'outils pour travailler avec des
bases de données SQL
– Prise en charge des transactions ACID
– Grande base de connaissances
Stockage Big Data
Persistence Polyglotte : Exemple
• Soit une application Web en ligne et ses
exigences de stockage
– Catalogue de produits
• Beaucoup de lectures, écritures peu fréquents
– Données financières
• Exigences de transaction
• Rapports sur commandes, performances, etc…
Stockage Big Data
Persistence Polyglotte : Exemple
– Session utilisateur
• Accès rapide pour lecture et écriture - pas de durabilité
• Journal des activités utilisateur
• Des volumes élevés d'écritures
– Recommandations de produits
• Liens entre produits, personnes
– Analyse
• Examiner les comportements et les modèles des clients
Stockage Big Data
Persistence Polyglotte : Exemple
• Un tel exemple présente de nombreuses
exigences de stockage
– Certains sont applicables aux bases de données
relationnelles
– D'autres sont mieux adaptés aux base de données
NoSQL
• Une solution élégante permettrait d'utiliser au
mieux différents types de données
– Une solution Polyglotte Persistance
Stockage Big Data
Bases de données NoSQL
• Il existe de nombreux bases de données qui
peuvent être considérés comme NoSQL
• On peut les catégoriser comme suit
– Key–value ( Orienté Clé –valeur)
– Document ( Orienté Document)
– Column family ( Orienté Colone)
– Graph data ( Orienté Graphe)
Stockage Big Data
Questions ?
Base de données clé-valeur
(Key–value )
Base de Données NoSQL : Clé –valeur
• Considérés comme les plus simples des bases de données NoSQL
• Certains sont persistants, d'autres sont en mémoire seulement
• Offrent trois opérations principales
– Insérer une valeur pour une clé
– Obtenir une valeur associée à une clé
– Supprimer une valeur
• Les bases de données n'ont aucune connaissance de ce qui est
stocké dans les valeurs
– C’est à l'application de savoir le contenu et le type de ces valeurs
Stockage Big Data
Base de Données NoSQL : Clé –valeur
• Il existe un certain nombre de bases de
données orienté clé-valeur
– Redis
– Riak
– Amazon S3 and DynamoDB
– Memcached
– Infinispan
• Nous utiliserons Redis dans nos exemples et au
TP
Stockage Big Data
Clé –valeur : Redis
• Base de données de type clé-valeur Open-
source disponible sur www.redis.io
• Les Valuers stockées pruvent être :
– Strings
– Lists
– Hashes
– Sets (including sorted sets)
Stockage Big Data
Travailler avec Redis
Stockage Big Data
set author ‘’nic’’
set id 24
Rpush page:View:XTZ-123 nic
Rpush page:View:XTZ-123 tom
sadd Speaker:Nosql ‘’ alexis«
sadd Speaker:Nosql ‘’ pierre"
Zadd Votes:Proposal:XYZ-123 5 chris
Zadd Votes:Proposal:XYZ-123 3 bob
Zadd Votes:Proposal:XYZ-123 10 antonio
hset Speaker:Nicola firstname nicola
hset Speaker:Nicola lastname martignol
hset Speaker:Nicola Twiter @nmartignol
Clé –valeur : Redis
• Prend en charge de nombreux langages de
programmation
– Java
– C/C++
– JavaScript
– C#
– Node.js
– PHP
– Python
– Ruby
Stockage Big Data
Travailler avec Redis
• Fournit une interface de ligne de commande pour un travail
interactif
• À titre d'exemple, nous travaillons avec les données des
enregistrement de musique ( gestions d’une base de données
musicale)
– Nous ajoutons des enregistrements à un ensemble Redis
• Les ensembles (set) sont identifiés par un nom unique
– Dans notre exemple, notre ensemble (set) s’appelle
recordings
Stockage Big Data
Travailler avec Redis
• Chaque enregistrement dans l'ensemble aura un
identifiant unique
– Habituellement, un nombre
– Assure que chaque enregistrement musical est dans
l'ensemble une seule fois ( UNIQUE)
• Les données de chaque enregistrement dans
l'ensemble sont constituées de paires nom-
valeur (clé-valeur)
Stockage Big Data
recordings:1:artist "Rolling Stones"
recordings:1:title "Beggars Banquet" Value
Set name
Set entry id Name
Travailler avec Redis
• Pour créer une nouvelle entrée dans l'ensemble, les étapes
suivantes sont requises:
– Choisir un nom pour l'ensemble
– Générer un nouvel identifiant pour l'objet à ajouter à l'ensemble
– Ajoutez les propriétés individuelles à l'objet dans l'ensemble
- Ce sont des paires nom-valeur
• Il n'existe aucune commande ‘commit ‘ explicite requise
– Les données sont automatiquement conservées
Stockage Big Data
Travailler avec Redis
• L'exemple suivant ajoute un enregistrement
musical à l’ ensemble Redis : recordings
Stockage Big Data
Demonstration
Cas d‘utilisation de Clé-valeur
• Stockage des informations de sessions d’une
application Web
– Les sessions Web ont un identifiant unique
– Si une session doit être stockée, alors une
mémoire de type clé-valeur est la plus appropriée
• Fournit des performances plus rapides qu'une base de
données relationnelle
– Par exemple, l'historique de navigation d'un
utilisateur
Stockage Big Data
Cas d‘utilisation de Clé-valeur
• Profils et préférences utilisateur
– Les utilisateurs disposent d'identifiants uniques
– Leurs données sont mises dans un objet puis stockées
par id comme clé
• Données de la carte d’achat
– Pour qu’elles soient disponibles sur les sessions,
machines, navigateurs
– Mettre les données de la carte dans un enregistrement
clé-valeur identifié par un user Id
• Géo-localisation
• Et autres …
Stockage Big Data
Questions ?
Base de données Orienté Document
Base de données Orienté Document
• Permet le stockage des informations semi-structurées
• Les documents contiennent des données codées
• Données textuelles: XML , JSON, BSON
• Données binaires: PDF, MS Word, etc.
• Les documents dans la base de données ont une clé unique
• Peuvent également être récupéré en fonction de leur
contenu
• Par exemple, les informations sur une chanson en
passant par son titre
Stockage Big Data
Base de données Orienté Document
• Considérons les deux documents suivants:
– Ils n ont aucun schéma ni structure prédéfinie
Stockage Big Data
Base de données Orienté Document
• De nombreux base de données orienté
documents sont disponibles:
– MongoDB
– CouchDB
– Terrastore
– OrientDB
– RavenDB
– Jackrabbit
• Nous utiliserons MongoDB dans nos exemples et au niveau du TP
Stockage Big Data
MongoDB
• Base de de données de documents open
source: www.mongodb.org
• Principales caractéristiques:
– Modèle de données riche non limité par les
contraintes du schéma
– Réplication et haute disponibilité
– Riches en terme de Requêtes
– Agrégation flexible et traitement des données-
Hadoop
- Map-Reduce
Stockage Big Data
MongoDB
• Prise en charge de nombreux langages de
programmation
– Java
– C/C++
– JavaScript
– .NET
– Node.js
– PHP
– Python
– Ruby
Stockage Big Data
Travailler avec MongoDB
• Les documents sont stockés dans une base de données MongoDB
– Une base de données contient une ou plusieurs
collections
» Chaque collection peut contenir plusieurs documents
• Les bases sont identifiés par leur nom
– Sélectionnez une base de données: use <data-store-
name>
» Par exemple, use rainforest
» La base est Créé s'il n'existe pas
– Une fois la base de données est sélectionnée, elle est référencée en
utilisant le mot db
Stockage Big Data
Travailler avec MongoDB
• MongoDB est livré avec une interface de ligne
de commande pour
– Fournir des commandes d’ insertion, de mise à
jour, de suppression et pour interroger les
données
– C’est un shell en JavaScript
• Les documents sont ajoutés aux collections
des bases de données
Stockage Big Data
Travailler avec MongoDB : Exemple
• Exemple ajouter un document d'enregistrement musical à la base de
données: Ajouté à la collection recordings
• Création: : db.createCollection(name, options)
Stockage Big Data
Les requettes MongoDB
• find() Permet de rechercher des
documents
- Par exemple, pour trouver tous les
enregistrements dont l'artiste est le Rolling
Stones
Stockage Big Data
db.recordings.find({artist : "Rolling Stones"})
Suppression
-une collection : db.collection.drop()
-Base de données : use nom_base puis db.dropDatabase()
Les requettes MongoDB
• Les requêtes peuvent également spécifier des
critères tels que des plages et des
combinaisons logiques
– Par exemple, pour chercher tout les
enregistrement ayant le prix entre $5.00 et $7.00
Stockage Big Data
db.recordings.find({price: {"$gte":5.00, "$lte": 7.00}})
plage spécifiée
Les requettes MongoDB
• L'opérateur non égal permet de faire
correspondre des clé non égales à la valeur
spécifiée
Stockage Big Data
db.recordings.find({artist: {"$ne":"Rolling Stones"}})
Tout les artists à
l’exception de Rolling
Stones
Demonstration
• Stockage Big Data
mongod.exe --dbpath D:data
Orienté Document: Cas d’utilisation
• Les applications qui stockent des données dans des fichiers plats
– Les base de données orientées documents fournissent
une fonctionnalité de recherche structurée
• Les données sont complexes à modéliser dans une base de données
relationnelle
• L'application a un volume élevé de "correspondance" des
enregistrements
– Détection de fraude
Stockage Big Data
Questions ?
Base de données orienté Colonne
(Column Family)
Base de données orienté Colonne
• Stocker les données sous forme de tables mais
sans schéma formel
– L'unité de stockage principale est un espace de clé
keyspace
– Chaque ligne possède une clé unique
• Chaque ligne peut contenir plusieurs colonnes
– Connue sous le nom famille colonnes( column family )
• Paires clé-valeur liées sont stockées dans une seule ligne
dans la famille de colonnes
Stockage Big Data
Base de données orienté Colonne
Stockage Big Data
Base de données orienté Colonne
• Stockage Big Data
• Utilisation principale: pour des ensembles de données très
volumineux
– Les lignes peuvent contenir des millions de colonnes
– Variable / flexible quant aux données à stocker
• Plusieur base de données orienté colonnes sont disponibles
– Cassandra
– HBase
– Hypertable
– Amazon SimpleDB
• Nous utiliserons Cassandra dans nos exemples
Storing Big Data
Base de données orienté Colonne
Cassandra
• Support plusieurs langage de programmation
– Java
– Python
– PHP
– Perl
– C#
Storing Big Data
Working With Cassandra
• Cassandra dispose de trois niveaux d'adressage
– Keyspace qui contient des familles de colonnes
– Familles de colonnes qui contiennent des colonnes
– Colonnes contenant des valeurs
• Travailler avec Cassandra nécessite
– La création d'un espace de clé (Keyspace)
– La création d'une famille de colonnes
– L’ajout de données à une famille de colonnes
Storing Big Data
Working With Cassandra Example
• L'exemple ci-dessous montre la création d'un
keyspace:
• Création column family = définition d’un
schéma pour une DB
– Le schéma de Column family peut changer
dynamiquement
Storing Big Data
CREATE KEYSPACE rainforest;
CREATE COLUMN FAMILY recordings
WITH comparator = UTF8Type
AND key_validation_class = UTF8Type
AND column_metadata = [
{column_name: Artist, validation_class: UTF8Type}
{column_name: Price, validation_class: DoubleType}
];
Key will be
string
For searching
Data type of column
Reading and Writing Data
• Les commandes de base GET, SET, et DEL
peuvent être executées en ligne de
commandes
Storing Big Data
SET recordings['Beggars Banquet']['Price'] = '9.55';
SET recordings['Beggars Banquet']['Artist'] = 'Rolling Stones';
Column family Row key Column
GET recordings['Beggars Banquet'];
Get column data for
Beggars Banquet
Reading and Writing Data
• Tous les enregistrement peuvent etre lister par
la commande LIST
• Les Keyspaces et les column families peucnet
etre supprimer par la commande DROP
Storing Big Data
LIST recordings;
DROP columnfamily recordings; Remove column family
recordings
Cassandra Query Language (CQL)
• Similaire au SQL pour créer une column
families
• Pour créer un keyspace, on utilise
• Pour utiliser un keyspace on utilise la
commande USE
Storing Big Data
CREATE KEYSPACE rainforest
WITH replication={'class':'SimpleStrategy',
'replication_factor':'1'};
Only replicate
to one other
node
Data is in one
data center only
USE rainforest;
Reading and Writing Data With CQL
• On peut créer une column family par la
commande : CREATE COLUMNFAMILY
• Pour inserer les données : INSERT
Storing Big Data
CREATE COLUMNFAMILY recordings(
Title varchar PRIMARY KEY,
Artist varchar,
Price double);
Will be title of recording
INSERT INTO recordings(Title, Artist, Price) values
('Beggars Banquet', 'Rolling Stones', 9.99);
Reading and Writing Data With CQL
• Extration des données par le CQL par la
commande SELECT
• Keyspaces et les column families peuvent etre
supprimés par la commande DROP
Storing Big Data
SELECT * FROM recordings;
Retrieve all data from
recordings column family
DROP COLUMNFAMILY recordings;
Demo
• Your instructor will now demonstrate working
with a Cassandra data store
Storing Big Data
Column Family Use Cases
• Event logging
– Application errors can be stored in Cassandra
• Column family stores
– Application name
– Event/Error
– Timestamp
– Enables data to be processed for analysis using
Hadoop
• Blogging/user-generated content
– Enables fast searching on tags
Storing Big Data
Questions ?
Exercise 2.3
• Storing Big Data
Refer to Labs :
• Exercise 2.3: Working With Cassandra
Graph Data Stores
Graph Data Stores
• Graph databases can be queried in many
different ways
– For example, get all nodes of people who live in
New York and who like The Killers
– Known as traversing the graph
• Provide great flexibility in traversing the graph
– Also very high performance
Storing Big Data
Graph Data Stores
• Adding new relationships to a graph data store is
easy
– Relational database requires schema changes and data
movement
• There are a number of graph data stores available
– FlockDB
– InfiniteGraph
– Neo4j
– OrientDB
• We will use Neo4j in our examples
Storing Big Data
Neo4j
• An open-source graph database:
www.neo4j.org
• Key features include:
– Durable
– Reliable―support for ACID transactions
– Massively scalable
– Highly available
– Fast―high-speed graph queries
– Simple to use
Storing Big Data
Neo4j
• Support for many programming languages
– Java
– Python
– JRuby
– Scala
– Clojure
Storing Big Data
Working With Neo4j
• The following code example creates two nodes
– Adds a relationship between them
Storing Big Data
Node rollingStones = graphDb.createNode();
rollingStones.setProperty("Artist", "Rolling Stones");
Node beggarsBanquet = graphDb.createNode();
beggarsBanquet.setProperty("Title", "Beggars Banquet");
rollingStones.createRelationship(beggarsBanquet, ARTIST);
ARTIST
The Rolling
Stones
Beggars
Banquet
Accesses music recording
database
Relationship name
Transactions
• Neo4j is ACID compliant
– All changes must be undertaken within a
transaction
• Otherwise, an error will occur
– Reading can be performed without a transaction
Storing Big Data
Transaction transaction = graphDb.beginTx();
try{
Node rollingStones = graphDb.createNode();
rollingStones.setProperty(“Artist”, “Rolling Stones”);
transaction.success();
} finally{
transaction.finish();
}
Initiate
transaction
Mark work
completed
successfully
Complete
transaction
Neo4j Query Features
• Provides Cypher query language to query the
graph
• General structure of Cypher is
Storing Big Data
START beginningNode = (beginning node specification)
MATCH (relationship, pattern matches)
WHERE (filtering condition: on data in nodes and relationships)
RETURN (what to return: nodes, relationships, properties)
ORDER BY (properties to order by)
SKIP (nodes to skip from top)
LIMIT (limit results)
Neo4j Query Features
• Find all the titles of recordings whose artist is
Rolling Stones
Storing Big Data
START rolling_stones = node(nodeId)
MATCH (rolling_stones)-[:ARTIST]-(recordings)
RETURN recordings.Title;
Properties to
select from
friends
ARTIST
The Rolling
Stones
Beggars
Banquet
Running Queries From Java
• Use ExecutionEngine to run Cypher
queries
Storing Big Data
String query = "START rolling_stones = node(rollingStones.getId())" +
"MATCH (rolling_stones)-[:ARTIST]-(recordings)" +
"RETURN recordings.Title";
ExecutionEngine engine = new ExecutionEngine(graphDb);
ExcutionResult result = engine.execute(query);
// Process results here
Execute query
from Java code
Identify node by id
Demo
• Your instructor will now demonstrate querying
a Neo4j data store using Cypher
Storing Big Data
Graph Use Cases
• Connected data
– Represent employees and their skills
– Projects worked on
• Dispatch services for retail delivery
– Each delivery person and delivery is a node
– Relationships can have distance property
Storing Big Data
Graph Use Cases
• Recommendation engines
– Any information application with users can make
use of this
• “Customer” nodes link to “hotels booked” nodes
• Recommend similar hotels to customers based on
previous purchase history
• Can you add any more to the list above?
Storing Big Data
Questions ?
Exercise 2.4
• Storing Big Data
Refer to Labs :
• Exercise 2.4: Working With Neo4j
The End
That’s all folks!
Storing Big Data
Hadoop : HDFS,
MapReduce ,YARN
110
111
Hadoop : HDFS
Préfixes multiplicatifs
Signe préfixe facteur exemple représentatif
K Kilo 103
M Mega 106
G Giga 109 DVD, clé USB
T Téra 1012 disque dur
P Péta 1015
E Exa 1018 FaceBook, Amazon,Google
Z Zetta 1021 internet tout entier depuis 2010
112
Mégadonnées (Rappel)
• Les mégadonnées ou Big Data sont des collections d’informations
qui auraient été considérées comme gigantesques, impossible à
stocker et à traiter, il y a une dizaine d’années.
• Internet :
– Google en 2015 : 10 Eo (10 milliards de Go)
– Facebook en 2014 : 300 Po de données (300 millions de Go), 4 Po de
nouvelles données par jour
– Amazon : 1 Eo.
• BigScience : télescopes (1 Po/jour), CERN (500 To/jour, 140 Po de
stockage), génome, environnement. . .
• Les informations sont très difficiles à trouver.
• La raison est que tout est enregistré sans discernement, dans l’idée
que ça pourra être exploité. Certains prêchent pour que les
données collectées soient pertinentes (smart data) plutôt que
volumineuses
113
Mégadonnées (Exploitation)
• Le traitement d’aussi grandes quantités de données impose des méthodes particulières.
• Un SGBD classique, même haut de gamme, est dans l’incapacité de traiter autant
d’informations.
• Répartir les données sur plusieurs machines (jusqu’à plusieurs millions d’ordinateurs)
• système de fichiers spécial permettant de ne voir qu’un seul espace pouvant contenir des
fichiers gigantesques et/ou très nombreux (HDFS)
• Système de gestion de données distrubués
– Hadoop , Spark
• bases de données spécifiques (Hbase, cassandra ….)
• Traitements du type « map-reduce » :
– algorithmes faciles à écrire,
– exécutions faciles à paralléliser.
114
Hadoop
• Hadoop est un système de gestion de données et de traitements distribués
• Le projet Hadoop consiste en deux grandes parties:
– Stockage des données : HDFS (Hadoop Distributed File System)
– Traitement des données : MapReduce / Yarn
• HDFS un système de fichier qui répartit les données sur de nombreuses machines,
• YARN un mécanisme d’ordonnancement de programmes de type MapReduce.
• Principe :
– Diviser les données
– Les sauvegarder sur une collection de machines, appelées cluster
– Traiter les données directement là où elles sont stockées, plutôt que de les copier à
partir d’un serveur distribué
• Il est possible d’ajouter des machines à votre cluster, au fur et à mesure que les
données augmentent
115
Map Reduce
116
Ecosystème de Hadoop
• En plus des briques de base Yarn Map Reduce/HDFS, plusieurs outils existent pour:
– L’extraction et le stockage des données de/sur HDFS
– La simplification des opérations de traitement sur ces données
– La gestion et coordination de la plateforme
– Le monitoring du cluster
117
Ecosystème de Hadoop
• Parmi ces outils, certains se trouvent au dessus de la couche Yarn/MR, tel que:
– Pig: Langage de script
– Hive: Langage proche de SQL (Hive QL)
– R Connectors: permet l’accès à HDFS et l’exécution de requêtes Map/Reduce à
partir du langage R
– Mahout: bibliothèque de machine learning et mathématiques
– Oozie: permet d’ordonnancer les jobs Map Reduce, en définissant des
workflows
118
Ecosystème de Hadoop
• D’autres outils sont directement au dessus de HDFS, tel que :
– Hbase : Base de données NoSQL orientée colonnes
– Impala (pas représenté dans la figure): Permet le requêtage de données
directement à partir de HDFS (ou de Hbase) en utilisant des requêtes Hive SQL
119
Ecosystème de Hadoop
• Certains outils permettent de connecter HDFS aux sources externes, tel que:
– Sqoop: Lecture et écriture des données à partir de bases de données externes
– Flume: Collecte de logs et stockage dans HDFS
• Enfin, d’autres outils permettent la gestion et administration de Hadoop, tel que:
– Ambari: outil pour le provisionnement, gestion et monitoring des clusters
– Zookeeper: fournit un service centralisé pour maintenir les information de
configuration, de nommage et de synchronisation distribuée
120
Hadoop Distributed File System
• HDFS est un système de fichiers distribué. C’est à dire : un dispositif de stockage et
d’accès à des fichiers
• ces fichiers sont stockés sur un grand nombre de machines de manière à rendre
invisible la position exacte d’un fichier. L’accès est transparent, quelle que soient
les machines qui contiennent les fichiers.
• HDFS permet de voir tous les dossiers et fichiers de ces milliers de machines
comme un seul arbre, contenant des Po de données, comme s’ils étaient sur le
disque dur local.
121
Hadoop Distributed File System
• Les caractéristiques de HDFS:
– Il est distribué: les données sont réparties sur tout le cluster de machines.
– Il est répliqué: si une des machines du cluster tombe en panne, aucune
donnée n'est perdue.
122
Hadoop Distributed File System
Commande hdfs dfs
• La commande hdfs dfs et ses options permet de gérer les fichiers et dossiers :
hdfs dfs –help
hdfs dfs -ls [noms...] (pas d’option -l)
hdfs dfs -cat nom
hdfs dfs -mv ancien nouveau
hdfs dfs -cp ancien nouveau
hdfs dfs -mkdir dossier
hdfs dfs -rm -f -r dossier (pas -fr)
123
Hadoop Distributed File System
Commande hdfs dfs
Échanges entre HDFS et le monde
• Pour placer un fichier dans HDFS, deux commandes équivalentes :
hdfs dfs -copyFromLocal fichiersrc fichierdst
hdfs dfs -put fichiersrc [fichierdst]
• Pour extraire un fichier de HDFS, deux commandes possibles :
hdfs dfs -copyToLocal fichiersrc dst
hdfs dfs -get fichiersrc [fichierdst]
• Exemple :
hdfs dfs -mkdir -p livres
wget http://www.textfiles.com/etext/FICTION/dracula
hdfs dfs -put dracula livres
hdfs dfs -ls livres
hdfs dfs -get livres/center_earth
124
Architecture HDFS
• HDFS repose sur deux serveurs (des daemons):
– Le NameNode, qui stocke les informations relatives aux noms de fichiers. C'est ce
serveur qui, par exemple, va savoir que le fichier « toto.txt » dans le répertoire «
data_input » comporte 58 blocs de données, et qui sait où ils se trouvent. Il y a un
seul NameNode dans tout le cluster Hadoop.
– Le DataNode, qui stocke les blocs de données eux-mêmes. Il y a un DataNode pour
chaque machine au sein du cluster, et ils sont en communication constante avec le
NameNode pour recevoir de nouveaux blocs, indiquer quels blocs sont contenus sur
le DataNode, signaler des erreurs, etc... Par défaut, les données sont divisées en
blocs de 64KB (configurable).
• Hadoop est inspiré de GFS, un système de fichier distribué conçu par Google.
• L'implémentation de HDFS a son origine dans un whitepaper issu du département de
recherche de Google (« The Google File System », 2003)
125
Hadoop Distributed File System
Hadoop Distributed File System
• Chaque bloc est enregistré dans un noeud différent du cluster
– DataNode : démon sur chaque noeud du cluster
– NameNode : Démon s’exécutant sur une machine séparée
• Contient des méta-données
• Permet de retrouver les noeuds qui exécutent les blocs d’un fichier
126
File
Block 3
Block 2
Block 1
DataNode 1
Block 1
Block 2
DataNode 2
Block 1
DataNode 3
Block 2
Block 3
Block 3
Hadoop Distributed File System
• Les datanodes contiennent des blocs (notés A,B,C. . . ). Les mêmes blocs sont dupliqués
(replication) sur différents datanodes, en général 3 fois. Cela assure :
– fiabilité des données en cas de panne d’un datanode,
– accès parallèle par différents processus aux mêmes données.
• Le namenode sait à la fois :
– sur quels blocs sont contenus les fichiers,
– sur quels datanodes se trouvent les blocs voulus.
– On appelle cela les metadata.
127
Hadoop Distributed File System
128
Hadoop Distributed File System
129
Hadoop Distributed File System
• Si le NameNode a un problème :
– Pas de problème?
– Données perdues à jamais ?
– Données inaccessibles?
130
Si c’est un problème d’accès (réseau), les données sont temporairement inaccessibles
Si le disque du NN est défaillant, les données seront perdues à jamais
Hadoop Distributed File System
131
Mode high availability
Pour éviter cela, le NameNode sera dupliqué, non seulement sur son propre disque,
mais également quelque part sur le système de fichiers du réseau
le secondary namenode ((standby namenode)) archive les metadata, par exemple
toutes les heures. pour reprendre le travail si le NameNode actif est défaillant
Hadoop Distributed File System
API Java pour HDFS
• Hadoop propose une API complète pour accéder aux fichiers de HDFS. Elle repose
sur deux classes
• principales :
– FileSystem représente l’arbre des fichiers (file system). Cette classe permet de
copier des fichiers locaux vers HDFS (et inversement), renommer, créer et
supprimer des fichiers et des dossiers
– FileStatus gère les informations d’un fichier ou dossier
• taille avec getLen()
• nature avec isDirectory() et isFile()
132
Hadoop : MapReduce ,YARN
133
● Pour exécuter un problème large de manière distribué, il faut:
- Le découper en plusieurs problèmes de taille réduite à exécuter sur chaque machine
(diviser pour régner).
● De multiples approches existent et ont existé pour cette division d'un problème en
plusieurs « sous-tâches ».
● MapReduce est un paradigme (un modèle) visant à généraliser les approches existantes pour
produire une approche unique applicable à tous les problèmes.
● MapReduce existait déjà depuis longtemps,
- Dans les langages fonctionnels (Lisp, Scheme),
- En 2004 Google publié un whitepaper (« MapReduce: Simplified Data Processing
on Large Clusters »). Où il a presenté le MapReduce généralisable à tous les problèmes et
orientée calcul distribué est Large Clusters »).
Présentation 1/4
134
MapReduce
MapReduce définit deux opérations distinctes à effectuer sur les données d'entrée:
● MAP: va transformer les données d'entrée en une série de couples clef/valeur. Elle va
regrouper les données en les associant à des clefs, choisies de telle sorte que les couples
clef/valeur aient un sens par rapport au problème à résoudre.
● REDUCE, va appliquer un traitement à toutes les valeurs de chacune des clefs distinctes
produite par l'opération MAP. Au terme de l'opération REDUCE, on aura un résultat pour
chacune des clefs distinctes.
135
Présentation 2/4
MapReduce
On distingue donc 4 étapes distinctes dans un traitement MapReduce:
● Decouper (split) les données d'entrée en plusieurs fragments.
● Mapper chacun de ces fragments pour obtenir des couples (clef ; valeur).
● Grouper (shuffle) ces couples (clef ; valeur) par clef.
● Réduire (reduce) les groupes indexés par clef en une forme finale, avec une valeur pour
chacune des clefs distinctes.
En modélisant le problème à résoudre de la sorte, on le rend parallélisable – chacune de
ces tâches à l'exception de la première seront effectuées de manière distribuée.
136
Présentation 3/4
MapReduce
Pour résoudre un problème via la méthodologie MapReduce avec Hadoop, on devra
donc:
● Choisir une manière de découper les données d'entrée de telle sorte que l'opération
MAP soit parallélisable.
● Définir quelle CLEF utiliser pour notre problème.
● Écrire le programme pour l'opération MAP.
● Écrire le programme pour l'opération REDUCE.
… et Hadoop se chargera du reste (problématiques calcul distribué, groupement par
clef distincte entre MAP et REDUCE, etc.).
137
Présentation 4/4
MapReduce
Imaginons que vous ayez plusieurs magasins que vous gérez à
travers le monde
• Un très grand livre de comptes contenant TOUTES
les ventes
• Supposons que les lignes du livres ont
la forme : Jour ; Ville ; produit; Prix
• Objectif :
Calculer le total des ventes par magasin pour l’année 2016
Jour Ville produit Prix
2016--‐01--‐01 London Clothes 25.99
2016--‐01--‐01 Miami Music 12.15
2016--‐01--‐02 Casa Toys 3.10
2016--‐01--‐02 Miami Clothes 50.00
138
MapReduce
Exemple concret
Possibilité :
o Pour chaque entrée, saisir la ville et le prix de vente
o Si on trouve une entrée avec une ville déjà saisie,
on les regroupe en faisant la somme des ventes
Dans un environnement de calcul traditionnel,
on utilise généralement des Hashtables, sous forme de:
o Clef Valeur
Dans notre cas, la clef serait l’adresse du magasin,
et la valeur le total des ventes.
2016--‐01--‐01 London Clothes 25.99
2016--‐01--‐01 Miami Music 12.15
2016--‐01--‐02 Casa Toys 3.10
2016--‐01--‐02 Miami Clothes 50.00
London 25.99
Miami 12.15
Casa 3.10
London 25.99
Miami 62.15
Casa 3.10
139
Exemple concret
MapReduce
Si on utilise les hashtables sur 1To,
Problèmes ?
 Ça ne marchera pas ?
 Problème de mémoire ?
 Temps de traitement long ?
 Réponses erronées ?
2016--‐01--‐01 London Clothes 25.99
2016--‐01--‐01 Miami Music 12.15
2016--‐01--‐02 Casa Toys 3.10
2016--‐01--‐02 Miami Clothes 50.00
London 25.99
Miami 12.15
Casa 3.10
London 25.99
Miami 62.15
Casa 3.10
140
Exemple concret
MapReduce
Le traitement séquentiel de toutes les données peut s’avérer très long
 Plus on a de magasins, plus l’ajout des valeurs à la table est long
 Il est possible de tomber à court de mémoire pour enregistrer cette table
 Mais cela peut marcher, et le résultat sera correct
Map-Reduce : Moyen plus efficace et rapide de traiter
ces données
Au lieu d’avoir une seule personne qui
parcourt le livre, si on en recrutait plusieurs?
Appeler un premier groupe les Mappers et un autre
les Reducers
Diviser le livre en plusieurs parties, et en donner une
à chaque Mapper
Les Mappers peuvent travailler en même
temps, chacun sur une partie des données
Mappers
Reducers
141
Exemple concret
MapReduce
Miami L. A. N.Y.C
N.Y.C. N.Y.C. Miami
L. A.
Miami
Miami
L. A.
L. A.
N.Y.C
N.Y.C
N.Y.C
$300,578 $603.768
$432.900
Mappers
Pour chaque entrée, saisir la ville, et le total
des ventes et les enregistrer dans une fiche
 Rassembler les fiches du même magasin
dans une même pile
Reducers
 Chaque Reducer sera responsable d’un ensemble
de magasins
 Ils collectent les fiches qui leur sont associées
des différents Mappers
 Ils regroupent les petites piles d’une même ville en une seule
 Ils parcourent ensuite chaque pile par ordre alphabétique des
villes (L.A avant Miami), et font la somme de l’ensemble
desenregistrements
Reducers
Mappers
142
Exemple concret
MapReduce
Mappers
Le code de notre opération MAP sera donc (ici en pseudo code):
POUR CHAQUE LIGNE, FAIRE:
GENERER COUPLE (VILLE ; PRIX )
(London ; 25.99)
(Miami; 12.15)
(Casa ; 3.10)
(Miami ;50.00)
(London ; 33.60)
(Paris ;40.80)
(NY ; 16.20)
(Casa; 15.10)
….
(Paris ;10.0)
Pour chacun de nos fragments, les couples (clef; valeur) générés seront donc:
143
Exemple concret
MapReduce
Une fois notre opération MAP effectuée (de manière distribuée), Hadoop groupera
(shuffle) tous les couples par clef commune.
Cette opération est effectuée automatiquement par Hadoop. Elle est, là aussi,
effectuée de manière distribuée en utilisant un algorithme de tri distribué, de manière
récursive. Après son exécution, on obtiendra les groupes de couple suivants:
(Casa ; 3.10 ) (Casa; 15.10)
(London ; 25.99) (London ; 33.60)
(Miami; 12.15) (Miami ;50.00)
(NY ; 16.20) (NY ; 6.0)
(Paris ;40.80) (Paris ;10.0)
….
144
Exemple concret
MapReduce
Il nous reste à créer notre opération REDUCE, qui sera appelée pour
chacun des groupes/clef distincte.
Dans notre cas, elle va simplement consister à additionner toutes les
valeurs liées à la clef spécifiée:
TOTAL=0
POUR COUPLE dans GROUPE, FAIRE:
TOTAL=TOTAL+ COUPLE [2]
RENVOYER TOTAL
145
Exemple concret
MapReduce
Une fois l'opération REDUCE effectuée, on obtiendra donc une valeur
unique pour chaque clef distincte. En l’occurrence, notre résultat sera:
(Casa ; 18.20 )
(London ; 59.59)
(Miami; 62.15)
(NY ; 22.20)
(Paris ;50.80)
….
L’intérêt du modèle MapReduce :
-Il suffit de développer les deux opérations du traitement: MAP et REDUCE,
- Et de bénéficier automatiquement de la possibilité d'effectuer le traitement sur un
nombre variable de machines de manière distribuée.
146
Exemple concret
MapReduce
Données d’entrée
2016--‐01--‐01 London Clothes 25.99
2016--‐01--‐01 Miami Music 12.15
2016--‐01--‐02 Casa Toys 3.10
2016--‐01--‐04 Casa Music 15.10
….
….
2016--‐01--‐31 Paris Clothes 10.0
2016--‐01--‐02 Miami Clothes 50.00
2016--‐01--‐03 Paris Toys 40.80
2016--‐01--‐03 NY Music 16.20
….
(Paris ;10.0)
(Miami ;50.00)
(Paris ;40.80)
(NY ; 16.20)
(London ; 25.99)
(Miami; 12.15)
(Casa ; 3.10)
(Casa; 15.10)
…
2016--‐01--‐01 London Clothes 25.99
2016--‐01--‐01 Miami Music 12.15
2016--‐01--‐02 Casa Toys 3.10
2016--‐01--‐02 Miami Clothes 50.00
2016--‐01--‐03 Paris Toys 40.80
2016--‐01--‐03 NY Music 16.20
2016--‐01--‐04 Casa Music 15.10
….
2016--‐01--‐31 Paris Clothes 10.0
Spliting (fragmentation)
MAP
Paris ;40.80)
(Paris ;10.0)
(London ; 25.99)
(London ; 33.60)
(Casa ; 3.10)
(Casa; 15.10)
(Miami; 12.15)
(Miami ;50.00)
Shuflling
Méllange/trie
(Paris ;50.80)
(London ; 59.59)
(Casa ; 18.20)
(Miami ;62.15)
REDUCE
(NY ; 16.20)
(NY ; 6.0) (NY ; 22.20)
Casa ; 18.20
London ; 59.59)
Miami; 62.15)
NY ; 22.20)
Paris ;50.80)
147
Un autre exemple: on souhaite compter le nombre de visiteurs sur chacune des pages
d'un site Internet. On dispose des fichiers de logs sous la forme suivante:
Ici, notre clef sera par exemple l'URL d’accès à la page, et nos opérations MAP et REDUCE
seront exactement les mêmes que celles qui viennent d'être présentées: on obtiendra ainsi
le nombre de vue pour chaque page distincte du site.
/index.html [19/Oct/2015:18:45:03]
/news.php?id=18 [20/Oct/2016:15:00:34]
/contact.html [19/Oct/2016:18:46:15]
/news.php?id=5 [24/Oct/2016:18:13:02]
/news.php?id=4 [24/Oct/2016:18:13:12]
/news.php?id=18 [24/Oct/2016:18:14:31]
/index.html [19/Oct/2016:23:45:03]
/contact.html [23/Oct/2016:10:06:33]
...etc...
148
Autres Exemples
MapReduce
Exercice 1 : Écrire le pseudo code des deux fonctions MAP et REDUCE pour
calculer le nombre d’occurrences des mots dans un livre (texte)
procéder par ligne
Exercice 2 : Dans un réseau social, On souhaite afficher quand un utilisateur va sur la
page d'un autre utilisateur une indication « Vous avez N amis en commun ». On va
donc développer des programmes MAP et REDUCE pour cette opération.
Les données d’entrer se présentent sous la formes suivante:
A est amis de B,C, D . B est amis de A, C, D et E et ainsi de suite
A => B, C, D
B => A, C, D, E
C => A, B, D, E
D => A, B, C, E
E => B, C, D
149
Exercices
MapReduce
150
MapReduce v1 intègre trois composants
• API
 Pour permettre au programmeur
l’écriture d’applications MapReduce
• Framework
 Services permettant l’exécution des Jobs
MapReduce, le Shuffle/Sort…
• Resource Management
 Infrastructure pour gérer les noeuds du cluster,
allouer des ressources et ordonnancer les jobs
MapReduce 1
API
Framework
Resource
Management
Composants
MapReduce V1 (MRv1)
151
• JobTracker
 Divise le travail sur les Mappers et
Reducers, s’exécutant sur les différents
nœuds
• TaskTracker
 S’exécute sur chacun des nœuds pour
exécuter les vraies tâches de Map-
Reduce
 Choisit en général de traiter (Map ou
Reduce) un bloc sur la même machine
que lui
 S’il est déjà occupé, la tâche revient
à un autre tracker, qui utilisera le
réseau (rare)
Démons
MapReduce V1 (MRv1)
152
• Un job Map-Reduce (ou une Application Map-Reduce) est divisé sur plusieurs
tâches appelées mappers et reducers
• Chaque tâche est exécutée sur un nœud du cluster
• Chaque nœud a un certain nombre de slots prédéfinis:
 Map Slots
 Reduce Slots
• Un slot est une unité d’exécution qui représente la capacité du task tracker à exécuter
une tâche (map ou reduce) individuellement, à un moment donné
• Le Job Tracker se charge à la fois:
 D’allouer les ressources (mémoire, CPU…) aux différentes tâches
 De coordonner l’exécution des jobs Map-Reduce
 De réserver et ordonnancer les slots, et de gérer les fautes en réallouant les
slots au besoin
Fonctionnement
MapReduce V1 (MRv1)
• Le Job Tracker s’exécute sur une seule machine, et fait plusieurs tâches (gestion de
ressources, ordonnancement et monitoring des tâches…)
 Problème de scalabilité: les nombreux datanodes existants ne sont pas exploités,
et le nombre de noeuds par cluster limité à 4000
• Si le Job Tracker tombe en panne, tous les jobs doivent redémarrer
 Problème de disponibilité:
• Le nombre de map slots et de reduce slots est prédéfini
 Problème d’exploitation: si on a plusieurs map jobs à exécuter, et que les map slots
sont pleins, les reduce slots ne peuvent pas être utilisés, et vice- versa
• Le Job Tracker est fortement intégré à Map Reduce
 Problème d’interoperabilité: impossible d’exécuter des applications non-
MapReduce sur HDFS 153
Problémes
MapReduce V1 (MRv1)
MapReduce V2 (MRv2)
Composants
• MapReduce v2 sépare la gestion des ressources
de celle des tâches MR
• Pas de notion de slots:
 les nœuds ont des ressources (CPU, mémoire..)
allouées aux applications à la demande
• Définition de nouveaux démons
 La plupart des fonctionnalités du Job
Tracker sont déplacées vers l'Application
Master
 Un cluster peut avoir plusieurs
Application Masters
• Support les applications MR et non-MR
MapReduce 2
MR API
Framework
YARN
Resource
Management
YARN API
154
YARN (Yet Another Resource Negociator) est un mécanisme permettant de gérer des travaux
(jobs) sur un cluster de machines.
YARN permet aux utilisateurs de lancer des jobs Map-Reduce sur des données présentes
dans HDFS, et de suivre (monitor) leur avancement, récupérer les messages (logs) affichés
par les programmes.
Éventuellement YARN peut déplacer un processus d’une machine à l’autre en cas de
défaillance ou d’avancement jugé trop lent.
YARN est transparent pour l’utilisateur. On lance l’exécution d’un programme
MapReduce et YARN fait en sorte qu’il soit exécuté le plus rapidement possible
MapReduce V2 (MRv2)
YARN
Démons
• Resource Manager (RM)
 Tourne sur le nœud master
 Ordonnanceur de ressources global
 Permet l’arbitrage des ressources entre plusieurs
applications
• Node Manager (NM)
 S’exécute sur les nœuds esclaves
 Communique avec RM
• Containers
 Créés par RM à la demande
 Se voit allouer des ressources sur le nœud esclave
• Application Master (AM)
 Un seul par application
 S’exécute sur un container
 Demande plusieurs containers pour exécuter les tâches de
l’application
Resource
Manager
Node
Manager
Application
Master
1 GB
1 core
3 GB
1 core
MapReduce V2 (MRv2)
Lancement d’une Application dans un Cluster YARN
Resource
Manager
Node Manager
1 Lance application
MyApp
Node Manager
Node Manager
Client
Déclenche
2
Application
Master
157
Node Manager
MapReduce V2 (MRv2)
Lancement d’une Application dans un Cluster YARN
Resource
Manager
Node Manager
Node Manager
Node Manager
Node Manager
Clie
nt
Demande Ressources
3
Allocation
4
Allocation
4
5 IDs
Containers
158
Application
Master
MapReduce V2 (MRv2)
Lancement d’une Application dans un Cluster YARN
Resource
Manager
Node Manager
Node Manager
MyApp
Node Manager
Node Manager
Clie
nt
Application
Master
6
MyApp
Déclenche
6
Déclenche
6
15
MapReduce V2 (MRv2)
Lancement d’une Application dans un Cluster YARN
Resource
Manager
Node Manager
YourApp
Node Manager
Node Manager
MyApp
Clie
nt
Application
Master
MyApp
Clie
nt
Application
Master
160
Node Manager
MapReduce V2 (MRv2)
Lancement d’une Application dans un Cluster YARN
Resource
Manager
Node Manager
YourApp
Node Manager
Node Manager
Node Manager
MyApp
Client
Application
Master
MyApp
Client
Application
Master
YourApp
161
MapReduce V2 (MRv2)
162
Exécution d’un Job Map-Reduce
Resource
Manager
Node Manager
Node Manager
Node Manager
Node Manager
Clie
nt
myData
Block1
DataNode
Block2
DataNode
DataNode
DataNode
WordCount
Déclenche Application
Master
MapReduce V2 (MRv2)
163
Exécution d’un Job Map-Reduce
Resource
Manager
Node Manager
Node Manager
Node Manager
Node Manager
Clie
nt
myData
Block1
Block2
DataNode
DataNode
DataNode
DataNode
Demande Ressources
(Mappers) Application
Master
Allocation
MapReduce V2 (MRv2)
Exécution d’un Job Map-Reduce
Resource
Manager
Node Manager
WordCount
Map Task
Node Manager
WordCount
Map Task
Node
Manager
Node
Manager
Client
myData
Block1
DataNode
Block2
DataNode
DataNode
DataNode
Application
Master
32
MapReduce V2 (MRv2)
165
Exécution d’un Job Map-Reduce
Resource
Manager
Node Manager
Node Manager
WordCount
Map Task
Node Manager
Node Manager
Client
myData
Block1
DataNode
Block2
DataNode
DataNode
DataNode
Application
Master
WordCount
Map Task
Demande Ressources
(Reducers)
Allocation
MapReduce V2 (MRv2)
166
Exécution d’un Job Map-Reduce
Resource
Manager
Node Manager
Node Manager
Node Manager
Node Manager
Client
myData
Block1
Block2
DataNode
DataNode
DataNode
DataNode
Application
Master
WordCount
ReduceTask
WordCount
ReduceTask
MapReduce V2 (MRv2)
Le modèle Map/Reduce
167
● Pour exécuter un problème large de manière distribué, il faut:
- Le découper en plusieurs problèmes de taille réduite à exécuter sur chaque
machine (diviser pour régner).
● De multiples approches existent et ont existé pour cette division d'un problème en
plusieurs « sous-tâches ».
● MapReduce est un paradigme (un modèle) visant à généraliser les approches
existantes pour produire une approche unique applicable à tous les problèmes.
● MapReduce existait déjà depuis longtemps,
- dans les langages fonctionnels (Lisp, Scheme), mais la présentation du
paradigme sous une forme
- Google en 2004 a Google publié en 2004 whitepaper (« MapReduce:
Simplified Data Processing on Large Clusters »). Où il la presenter le MapReduce
généralisable à tous les problèmes et orientée calcul distribué est
Large Clusters »).
Présentation
168
MapReduce définit deux opérations distinctes à effectuer sur les
données d'entrée:
● MAP: va transformer les données d'entrée en une série de couples
clef/valeur. Elle va regrouper les données en les associant à des clefs, choisies de
telle sorte que les couples clef/valeur aient un sens par rapport au problème à
résoudre.
● La seconde, REDUCE, va appliquer un traitement à toutes les valeurs de chacune
des clefs distinctes produite par l'opération MAP. Au terme de l'opération REDUCE,
on aura un résultat pour chacune des clefs distinctes.
Présentation
169
On distingue donc 4 étapes distinctes dans un traitement MapReduce:
● Découper (split) les données d'entrée en plusieurs fragments.
● Mapper chacun de ces fragments pour obtenir des couples (clef ; valeur).
● Grouper (shuffle) ces couples (clef ; valeur) par clef.
● Réduire (reduce) les groupes indexés par clef en une forme finale, avec une
valeur pour chacune des clefs distinctes.
En modélisant le problème à résoudre de la sorte, on le rend
parallélisable – chacune de ces tâches à l'exception de la première
seront effectuées de manière distribuée.
Présentation
170
Pour résoudre un problème via la méthodologie MapReduce avec
Hadoop, on devra donc:
● Choisir une manière de découper les données d'entrée de telle sorte que
l'opération MAP soit parallélisable.
● Définir quelle CLEF utiliser pour notre problème.
● Écrire le programme pour l'opération MAP.
● Ecrire le programme pour l'opération REDUCE.
… et Hadoop se chargera du reste (problématiques calcul distribué,
groupement par clef distincte entre MAP et REDUCE, etc.).
Présentation
171
Exemple concret
Imaginons que vous ayez plusieurs magasins que vous gérez à
travers le monde
• Un très grand livre de comptes contenant TOUTES
les ventes
• Supposons que les lignes du livres ont
la forme : Jour ; Ville ; produit; Prix
• Objectif :
Calculer le total des ventes par magasin pour l’année 2016
Jour Ville produit Prix
2016--‐01--‐01 London Clothes 25.99
2016--‐01--‐01 Miami Music 12.15
2016--‐01--‐02 Casa Toys 3.10
2016--‐01--‐02 Miami Clothes 50.00
172
Possibilité :
o Pour chaque entrée, saisir la ville et le prix de vente
o Si on trouve une entrée avec une ville déjà saisie,
on les regroupe en faisant la somme des ventes
Dans un environnement de calcul traditionnel,
on utilise généralement des Hashtables, sous forme de:
o Clef Valeur
Dans notre cas, la clef serait l’adresse du magasin,
et la valeur le total des ventes.
2016--‐01--‐01 London Clothes 25.99
2016--‐01--‐01 Miami Music 12.15
2016--‐01--‐02 Casa Toys 3.10
2016--‐01--‐02 Miami Clothes 50.00
London 25.99
Miami 12.15
Casa 3.10
London 25.99
Miami 62.15
Casa 3.10
173
Si on utilise les hashtables sur 1To,
Problèmes ?
 Ça ne marchera pas ?
 Problème de mémoire ?
 Temps de traitement long ?
 Réponses erronées ?
Le traitement séquentiel de toutes les données peut s’avérer très long
 Plus on a de magasins, plus l’ajout des valeurs à la table est long
 Il est possible de tomber à court de mémoire pour enregistrer cette table
 Mais cela peut marcher, et le résultat sera correct
2016--‐01--‐01 London Clothes 25.99
2016--‐01--‐01 Miami Music 12.15
2016--‐01--‐02 Casa Toys 3.10
2016--‐01--‐02 Miami Clothes 50.00
London 25.99
Miami 12.15
Casa 3.10
London 25.99
Miami 62.15
Casa 3.10
174
Map-Reduce :
Moyen plus efficace et rapide de traiter ces données
 Au lieu d’avoir une seule personne qui
parcourt le livre, si on en recrutait plusieurs?
Appeler un premier groupe les Mappers et un autre
les Reducers
Diviser le livre en plusieurs parties, et en donner une à
chaque Mapper
Les Mappers peuvent travailler en même
temps, chacun sur une partie des données
Mappers
Reducers
175
Map-R
educe
Miami L. A. N.Y.C
N.Y.C. N.Y.C. Miami
L. A.
Miami
Miami
L. A.
L. A.
N.Y.C
N.Y.C
N.Y.C
$300,578 $603.768
$432.900
Mappers
Pour chaque entrée, saisir la ville, et le total
des ventes et les enregistrer dans une fiche
 Rassembler les fiches du même magasin
dans une même pile
Reducers
 Chaque Reducer sera responsable d’un ensemble
de magasins
 Ils collectent les fiches qui leur sont associées
des différents Mappers
 Ils regroupent les petites piles d’une même ville en une seule
 Ils parcourent ensuite chaque pile par ordre alphabétique des
villes (L.A avant Miami), et font la somme de l’ensemble
desenregistrements
Reducers
Mappers
176
Mappers
Le code de notre opération MAP sera donc (ici en pseudo code):
POUR CHAQUE LIGNE, FAIRE:
GENERER COUPLE (VILLE ; PRIX )
(London ; 25.99)
(Miami; 12.15)
(Casa ; 3.10)
(Miami ;50.00)
(London ; 33.60)
(Paris ;40.80)
(NY ; 16.20)
(Casa; 15.10)
….
(Paris ;10.0)
Pour chacun de nos fragments, les couples (clef; valeur) générés seront donc:
177
Une fois notre opération MAP effectuée (de manière distribuée), Hadoop
groupera (shuffle) tous les couples par clef commune.
Cette opération est effectuée automatiquement par Hadoop. Elle est, là aussi,
effectuée de manière distribuée en utilisant un algorithme de tri distribué, de
manière récursive. Après son exécution, on obtiendra les groupes de couple suivants:
(Casa ; 3.10 ) (Casa; 15.10)
(London ; 25.99) (London ; 33.60)
(Miami; 12.15) (Miami ;50.00)
(NY ; 16.20) (NY ; 6.0)
(Paris ;40.80) (Paris ;10.0)
….
178
Il nous reste à créer notre opération REDUCE, qui sera appelée pour
chacun des groupes/clef distincte.
Dans notre cas, elle va simplement consister à additionner toutes les
valeurs liées à la clef spécifiée:
TOTAL=0
POUR COUPLE dans GROUPE, FAIRE:
TOTAL=TOTAL+ COUPLE [2]
RENVOYER TOTAL
179
Une fois l'opération REDUCE effectuée, on obtiendra donc une valeur
unique pour chaque clef distincte. En l’occurrence, notre résultat sera:
(Casa ; 18.20 )
(London ; 59.59)
(Miami; 62.15)
(NY ; 22.20)
(Paris ;50.80)
….
L’intérêt du modèle MapReduce :
-Il suffit de développer les deux opérations du traitement: MAP et REDUCE,
- Et de bénéficier automatiquement de la possibilité d'effectuer le traitement sur un
nombre variable de machines de manière distribuée.
180
Données d’entrée
2016--‐01--‐01 London Clothes 25.99
2016--‐01--‐01 Miami Music 12.15
2016--‐01--‐02 Casa Toys 3.10
2016--‐01--‐04 Casa Music 15.10
….
….
2016--‐01--‐31 Paris Clothes 10.0
2016--‐01--‐02 Miami Clothes 50.00
2016--‐01--‐03 Paris Toys 40.80
2016--‐01--‐03 NY Music 16.20
….
(Paris ;10.0)
(Miami ;50.00)
(Paris ;40.80)
(NY ; 16.20)
(London ; 25.99)
(Miami; 12.15)
(Casa ; 3.10)
(Casa; 15.10)
…
2016--‐01--‐01 London Clothes 25.99
2016--‐01--‐01 Miami Music 12.15
2016--‐01--‐02 Casa Toys 3.10
2016--‐01--‐02 Miami Clothes 50.00
2016--‐01--‐03 Paris Toys 40.80
2016--‐01--‐03 NY Music 16.20
2016--‐01--‐04 Casa Music 15.10
….
2016--‐01--‐31 Paris Clothes 10.0
Spliting (fragmentation)
MAP
Paris ;40.80)
(Paris ;10.0)
(London ; 25.99)
(London ; 33.60)
(Casa ; 3.10)
(Casa; 15.10)
(Miami; 12.15)
(Miami ;50.00)
Shuflling
Méllange/trie
(Paris ;50.80)
(London ; 59.59)
(Casa ; 18.20)
(Miami ;62.15)
REDUCE
(NY ; 16.20)
(NY ; 6.0) (NY ; 22.20)
Casa ; 18.20
London ; 59.59)
Miami; 62.15)
NY ; 22.20)
Paris ;50.80)
181
Un autre exemple: on souhaite compter le nombre de visiteurs sur
chacune des pages d'un site Internet.
On dispose des fichiers de logs sous la forme suivante:
Ici, notre clef sera par exemple l'URL d’accès à la page, et nos opérations MAP et REDUCE
seront exactement les mêmes que celles qui viennent d'être présentées: on obtiendra ainsi
le nombre de vue pour chaque page distincte du site.
/index.html [19/Oct/2015:18:45:03]
/news.php?id=18 [20/Oct/2016:15:00:34]
/contact.html [19/Oct/2016:18:46:15]
/news.php?id=5 [24/Oct/2016:18:13:02]
/news.php?id=4 [24/Oct/2016:18:13:12]
/news.php?id=18 [24/Oct/2016:18:14:31]
/index.html [19/Oct/2016:23:45:03]
/contact.html [23/Oct/2016:10:06:33]
...etc...
182
Exercice 1 : Écrire le pseudo code des deux fonctions MAP et REDUCE pour
calculer le nombre d’occurrences des mots dans un livre (texte)
procéder par ligne
Exercice 2 : Dans un réseau social, On souhaite afficher quand un utilisateur va sur la
page d'un autre utilisateur une indication « Vous avez N amis en commun ». On va
donc développer des programmes MAP et REDUCE pour cette opération.
Les données d’entrer se présentent sous la formes suivante:
A est amis de B,C, D . B est amis de A, C, D et E et ainsi de suite
A => B, C, D
B => A, C, D, E
C => A, B, D, E
D => A, B, C, E
E => B, C, D
183
MapReduce v1 intègre trois composants
• API
Pour permettre au programmeur
l’écriture d’applications MapReduce
• Framework
Services permettant l’exécution des
Jobs MapReduce, le Shuffle/Sort…
• Resource Management
Infrastructure pour gérer les noeuds
du cluster, allouer des ressources et
ordonnancer les jobs
Composants
MapReduce V1 (MRv1)
API
Framework
Resource
Management
MapReduce V1
184
185
MapReduce V1 (MRv1)
Composants
MapReduce v1 intègre trois composants
• API
 Pour permettre au programmeur
l’écriture d’applications MapReduce
• Framework
 Services permettant l’exécution des
Jobs MapReduce, le Shuffle/Sort…
• Resource Management
 Infrastructure pour gérer les noeuds
du cluster, allouer des ressources et
ordonnancer les jobs
MapReduce 1
API
Framework
Resource
Management
MapReduce V1 (MRv1)
Démons
186
• JobTracker
 Divise le travail sur les Mappers et Reducers, s’exécutant sur les
différents nœuds
• TaskTracker
 S’exécute sur chacun des nœuds pour exécuter les vraies tâches de
Map- Reduce
 Choisit en général de traiter (Map ou Reduce) un bloc sur la même
machine que lui
 S’il est déjà occupé, la tâche revient à un autre tracker, qui
utilisera le réseau (rare)
MapReduce V1 (MRv1)
187
Fonctionnement
• Un job Map-Reduce (ou une Application Map-Reduce) est
divisé sur plusieurs tâches appelées mappers et reducers
• Chaque tâche est exécutée sur un nœud du cluster
• Chaque nœud a un certain nombre de slots prédéfinis:
 Map Slots
 Reduce Slots
• Un slot est une unité d’exécution qui représente la capacité
du task tracker à exécuter une tâche (map ou reduce)
individuellement, à un moment donné
• Le Job Tracker se charge à la fois:
 D’allouer les ressources (mémoire, CPU…) aux différentes tâches
 De coordonner l’exécution des jobs Map-Reduce
 De réserver et ordonnancer les slots, et de gérer les fautes en
réallouant les slots au besoin
MapReduce V1 (MRv1)
Problèmes
• Le Job Tracker s’exécute sur une seule machine, et fait plusieurs tâches (gestion
de ressources, ordonnancement et monitoring des tâches…)
 Problème de scalabilité: les nombreux datanodes existants ne sont pas
exploités, et le nombre de noeuds par cluster limité à 4000
• Si le Job Tracker tombe en panne, tous les jobs doivent redémarrer
 Problème de disponibilité: SPoF
• Le nombre de map slots et de reduce slots est prédéfini
 Problème d’exploitation: si on a plusieurs map jobs à exécuter, et que les map
slots sont pleins, les reduce slots ne peuvent pas être utilisés, et vice- versa
• Le Job Tracker est fortement intégré à Map Reduce
 Problème d’interoperabilité: impossible d’exécuter des applications non-
MapReduce sur HDFS
188
MapReduce V2 (MRv2)
Composants
• MapReduce v2 sépare la gestion des
ressources de celle des tâches MR
• Pas de notion de slots:
 les nœuds ont des ressources (CPU,
mémoire..) allouées aux applications à la
demande
• Définition de nouveaux démons
 La plupart des fonctionnalités du Job
Tracker sont déplacées vers le
Application Master
 Un cluster peut avoir plusieurs
Application Masters
• Support les applications MR et non-MR
MapReduce 2
MRAPI
Framework
YARN
Resource
Management
YARNAPI
189
1.4.1. Qu’est-ce que YARN ?
YARN (Yet Another Resource Negociator) est un mécanisme permettant de gérer des travaux
(jobs)
sur un cluster de machines.
YARN permet aux utilisateurs de lancer des jobs Map-Reduce sur des données présentes dans
HDFS, et de suivre (monitor) leur avancement, récupérer les messages (logs) affichés par les
programmes.
Éventuellement YARN peut déplacer un processus d’une machine à l’autre en cas de
défaillance ou d’avancement jugé trop lent.
En fait, YARN est transparent pour l’utilisateur. On lance l’exécution d’un programme
MapReduce et YARN fait en sorte qu’il soit exécuté le plus rapidement possible
MapReduce V2 (MRv2)
Démons
• Resource Manager (RM)
 Tourne sur le nœud master
 Ordonnanceur de ressources global
 Permet l’arbitrage des ressources entre plusieurs
applications
• Node Manager (NM)
 S’exécute sur les nœuds esclaves
 Communique avec RM
• Containers
 Créés par RM à la demande
 Se voit allouer des ressources sur le nœud
esclave
• Application Master (AM)
 Un seul par application
 S’exécute sur un container
 Demande plusieurs containers pour exécuter les tâches de
l’application
Resource
Manager
Node
Manager
Application
Master
1 GB
1 core
3 GB
1 core
191
MapReduce V2 (MRv2)
Lancement d’une Application dans un Cluster YARN
Resource
Manager
Node Manager
1 Lance application
MyApp
Node Manager
Node Manager
Client
Déclenche
2
Application
Master
192
Node Manager
MapReduce V2 (MRv2)
Lancement d’une Application dans un Cluster YARN
Resource
Manager
Node Manager
Node Manager
Node Manager
Node Manager
Clie
nt
Demande Ressources
3
Allocation
4
Allocation
4
5 IDs
Containers
193
Application
Master
MapReduce V2 (MRv2)
Lancement d’une Application dans un Cluster YARN
Resource
Manager
Node Manager
Node Manager
MyApp
Node Manager
Node Manager
Clie
nt
Application
Master
6
MyApp
Déclenche
6
Déclenche
6
19
MapReduce V2 (MRv2)
Lancement d’une Application dans un Cluster YARN
Resource
Manager
Node Manager
YourApp
Node Manager
Node Manager
MyApp
Clie
nt
Application
Master
MyApp
Clie
nt
Application
Master
195
Node Manager
MapReduce V2 (MRv2)
Lancement d’une Application dans un Cluster YARN
Resource
Manager
Node Manager
YourApp
Node Manager
Node Manager
Node Manager
MyApp
Client
Application
Master
MyApp
Client
Application
Master
YourApp
196
197
MapReduce V2 (MRv2)
Exécution d’un Job Map-Reduce
Resource
Manager
Node Manager
Node Manager
Node Manager
Node Manager
Clie
nt
myData
Block1
DataNode
Block2
DataNode
DataNode
DataNode
WordCount
Déclenche Application
Master
198
MapReduce V2 (MRv2)
Exécution d’un Job Map-Reduce
Resource
Manager
Node Manager
Node Manager
Node Manager
Node Manager
Clie
nt
myData
Block1
Block2
DataNode
DataNode
DataNode
DataNode
Demande Ressources
(Mappers) Application
Master
Allocation
MapReduce V2 (MRv2)
Exécution d’un Job Map-Reduce
Resource
Manager
Node Manager
WordCount
Map Task
Node Manager
WordCount
Map Task
Node
Manager
Node
Manager
Client
myData
Block1
DataNode
Block2
DataNode
DataNode
DataNode
Application
Master
32
200
MapReduce V2 (MRv2)
Exécution d’un Job Map-Reduce
Resource
Manager
Node Manager
Node Manager
WordCount
Map Task
Node Manager
Node Manager
Client
myData
Block1
DataNode
Block2
DataNode
DataNode
DataNode
Application
Master
WordCount
Map Task
Demande Ressources
(Reducers)
Allocation
201
MapReduce V2 (MRv2)
Exécution d’un Job Map-Reduce
Resource
Manager
Node Manager
Node Manager
Node Manager
Node Manager
Client
myData
Block1
Block2
DataNode
DataNode
DataNode
DataNode
Application
Master
WordCount
ReduceTask
WordCount
ReduceTask

Contenu connexe

Similaire à Ecosystème Big Data

Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1Amal Abid
 
BD_Decisionnel_fin-2020tjtgenieindustriel.ppt
BD_Decisionnel_fin-2020tjtgenieindustriel.pptBD_Decisionnel_fin-2020tjtgenieindustriel.ppt
BD_Decisionnel_fin-2020tjtgenieindustriel.pptmarocdakhla135
 
Webinar Denodo & CRIP : Souveraineté, information sensible et data gouvernanc...
Webinar Denodo & CRIP : Souveraineté, information sensible et data gouvernanc...Webinar Denodo & CRIP : Souveraineté, information sensible et data gouvernanc...
Webinar Denodo & CRIP : Souveraineté, information sensible et data gouvernanc...Denodo
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataLudovic Piot
 
Dwh udl 2014_2015_v0.22 - student
Dwh udl 2014_2015_v0.22 - studentDwh udl 2014_2015_v0.22 - student
Dwh udl 2014_2015_v0.22 - studentCarlos Sanin
 
Session découverte de la Data Virtualization
Session découverte de la Data VirtualizationSession découverte de la Data Virtualization
Session découverte de la Data VirtualizationDenodo
 
Session découverte de la Data Virtualization
Session découverte de la Data VirtualizationSession découverte de la Data Virtualization
Session découverte de la Data VirtualizationDenodo
 
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationSession en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationDenodo
 
Simplifier la mise en place d'une stratégie Data Mesh avec Denodo
Simplifier la mise en place d'une stratégie Data Mesh avec DenodoSimplifier la mise en place d'une stratégie Data Mesh avec Denodo
Simplifier la mise en place d'une stratégie Data Mesh avec DenodoDenodo
 
Réussissez vos projets d’analytique self-service avec une couche de services ...
Réussissez vos projets d’analytique self-service avec une couche de services ...Réussissez vos projets d’analytique self-service avec une couche de services ...
Réussissez vos projets d’analytique self-service avec une couche de services ...Denodo
 
Big Data, Charles Huot, Aproged,février 2013
Big Data, Charles Huot, Aproged,février 2013Big Data, Charles Huot, Aproged,février 2013
Big Data, Charles Huot, Aproged,février 2013ADBS
 
Neo4j - Cas d'usages pour votre métier
Neo4j - Cas d'usages pour votre métierNeo4j - Cas d'usages pour votre métier
Neo4j - Cas d'usages pour votre métierNeo4j
 
Introduction à la big data v3
Introduction à la big data v3 Introduction à la big data v3
Introduction à la big data v3 Mehdi TAZI
 
Livre blanc data-lakes converteo 2018
Livre blanc data-lakes converteo 2018Livre blanc data-lakes converteo 2018
Livre blanc data-lakes converteo 2018Converteo
 
Enterprise Data Hub - La Clé de la Transformation de la Gestion de Données d'...
Enterprise Data Hub - La Clé de la Transformation de la Gestion de Données d'...Enterprise Data Hub - La Clé de la Transformation de la Gestion de Données d'...
Enterprise Data Hub - La Clé de la Transformation de la Gestion de Données d'...Excelerate Systems
 
Point de vue expert: la stratégie “ comptoir des données”
Point de vue expert: la stratégie “ comptoir des données”Point de vue expert: la stratégie “ comptoir des données”
Point de vue expert: la stratégie “ comptoir des données”Denodo
 

Similaire à Ecosystème Big Data (20)

Cours Big Data Chap1
Cours Big Data Chap1Cours Big Data Chap1
Cours Big Data Chap1
 
Big data
Big dataBig data
Big data
 
BD_Decisionnel_fin-2020tjtgenieindustriel.ppt
BD_Decisionnel_fin-2020tjtgenieindustriel.pptBD_Decisionnel_fin-2020tjtgenieindustriel.ppt
BD_Decisionnel_fin-2020tjtgenieindustriel.ppt
 
Webinar Denodo & CRIP : Souveraineté, information sensible et data gouvernanc...
Webinar Denodo & CRIP : Souveraineté, information sensible et data gouvernanc...Webinar Denodo & CRIP : Souveraineté, information sensible et data gouvernanc...
Webinar Denodo & CRIP : Souveraineté, information sensible et data gouvernanc...
 
Big data
Big dataBig data
Big data
 
Oxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigDataOxalide MorningTech #1 - BigData
Oxalide MorningTech #1 - BigData
 
Dwh udl 2014_2015_v0.22 - student
Dwh udl 2014_2015_v0.22 - studentDwh udl 2014_2015_v0.22 - student
Dwh udl 2014_2015_v0.22 - student
 
Introduction au Big data
Introduction au Big data Introduction au Big data
Introduction au Big data
 
Session découverte de la Data Virtualization
Session découverte de la Data VirtualizationSession découverte de la Data Virtualization
Session découverte de la Data Virtualization
 
Session découverte de la Data Virtualization
Session découverte de la Data VirtualizationSession découverte de la Data Virtualization
Session découverte de la Data Virtualization
 
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data VirtualizationSession en ligne: Découverte du Logical Data Fabric & Data Virtualization
Session en ligne: Découverte du Logical Data Fabric & Data Virtualization
 
Simplifier la mise en place d'une stratégie Data Mesh avec Denodo
Simplifier la mise en place d'une stratégie Data Mesh avec DenodoSimplifier la mise en place d'une stratégie Data Mesh avec Denodo
Simplifier la mise en place d'une stratégie Data Mesh avec Denodo
 
Réussissez vos projets d’analytique self-service avec une couche de services ...
Réussissez vos projets d’analytique self-service avec une couche de services ...Réussissez vos projets d’analytique self-service avec une couche de services ...
Réussissez vos projets d’analytique self-service avec une couche de services ...
 
Big Data, Charles Huot, Aproged,février 2013
Big Data, Charles Huot, Aproged,février 2013Big Data, Charles Huot, Aproged,février 2013
Big Data, Charles Huot, Aproged,février 2013
 
Neo4j - Cas d'usages pour votre métier
Neo4j - Cas d'usages pour votre métierNeo4j - Cas d'usages pour votre métier
Neo4j - Cas d'usages pour votre métier
 
Introduction à la big data v3
Introduction à la big data v3 Introduction à la big data v3
Introduction à la big data v3
 
Livre blanc data-lakes converteo 2018
Livre blanc data-lakes converteo 2018Livre blanc data-lakes converteo 2018
Livre blanc data-lakes converteo 2018
 
Enterprise Data Hub - La Clé de la Transformation de la Gestion de Données d'...
Enterprise Data Hub - La Clé de la Transformation de la Gestion de Données d'...Enterprise Data Hub - La Clé de la Transformation de la Gestion de Données d'...
Enterprise Data Hub - La Clé de la Transformation de la Gestion de Données d'...
 
Point de vue expert: la stratégie “ comptoir des données”
Point de vue expert: la stratégie “ comptoir des données”Point de vue expert: la stratégie “ comptoir des données”
Point de vue expert: la stratégie “ comptoir des données”
 
1-Intro to DB.pptx
1-Intro to DB.pptx1-Intro to DB.pptx
1-Intro to DB.pptx
 

Plus de Idriss22

LP_Admin_base_données.ppt
LP_Admin_base_données.pptLP_Admin_base_données.ppt
LP_Admin_base_données.pptIdriss22
 
Base de donnees Avancees et Intro à NoSQL.ppt
Base de donnees Avancees et Intro à  NoSQL.pptBase de donnees Avancees et Intro à  NoSQL.ppt
Base de donnees Avancees et Intro à NoSQL.pptIdriss22
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linuxIdriss22
 
Cours_théorie_de_jeux
Cours_théorie_de_jeuxCours_théorie_de_jeux
Cours_théorie_de_jeuxIdriss22
 
Bases de la Théorie des graphes
Bases de la Théorie des graphes Bases de la Théorie des graphes
Bases de la Théorie des graphes Idriss22
 
Intro_modul_et_SI_chapt0.ppt
Intro_modul_et_SI_chapt0.pptIntro_modul_et_SI_chapt0.ppt
Intro_modul_et_SI_chapt0.pptIdriss22
 

Plus de Idriss22 (6)

LP_Admin_base_données.ppt
LP_Admin_base_données.pptLP_Admin_base_données.ppt
LP_Admin_base_données.ppt
 
Base de donnees Avancees et Intro à NoSQL.ppt
Base de donnees Avancees et Intro à  NoSQL.pptBase de donnees Avancees et Intro à  NoSQL.ppt
Base de donnees Avancees et Intro à NoSQL.ppt
 
Cours SE linux
Cours SE linuxCours SE linux
Cours SE linux
 
Cours_théorie_de_jeux
Cours_théorie_de_jeuxCours_théorie_de_jeux
Cours_théorie_de_jeux
 
Bases de la Théorie des graphes
Bases de la Théorie des graphes Bases de la Théorie des graphes
Bases de la Théorie des graphes
 
Intro_modul_et_SI_chapt0.ppt
Intro_modul_et_SI_chapt0.pptIntro_modul_et_SI_chapt0.ppt
Intro_modul_et_SI_chapt0.ppt
 

Dernier

Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptxTxaruka
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.Franck Apolis
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSKennel
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .Txaruka
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Gilles Le Page
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...Faga1939
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSKennel
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxrababouerdighi
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsRajiAbdelghani
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETMedBechir
 
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEBONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEgharebikram98
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSKennel
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxMartin M Flynn
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSKennel
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Alain Marois
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxAsmaa105193
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSKennel
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertChristianMbip
 

Dernier (20)

Fondation Louis Vuitton. pptx
Fondation      Louis      Vuitton.   pptxFondation      Louis      Vuitton.   pptx
Fondation Louis Vuitton. pptx
 
Pâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie PelletierPâques de Sainte Marie-Euphrasie Pelletier
Pâques de Sainte Marie-Euphrasie Pelletier
 
A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.A3iFormations, organisme de formations certifié qualiopi.
A3iFormations, organisme de formations certifié qualiopi.
 
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_FormationRecherche.pdf
 
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .Annie   Ernaux  Extérieurs. pptx. Exposition basée sur un livre .
Annie Ernaux Extérieurs. pptx. Exposition basée sur un livre .
 
DO PALÁCIO À ASSEMBLEIA .
DO PALÁCIO À ASSEMBLEIA                 .DO PALÁCIO À ASSEMBLEIA                 .
DO PALÁCIO À ASSEMBLEIA .
 
Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024Presentation de la plateforme Moodle - avril 2024
Presentation de la plateforme Moodle - avril 2024
 
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
LA MONTÉE DE L'ÉDUCATION DANS LE MONDE DE LA PRÉHISTOIRE À L'ÈRE CONTEMPORAIN...
 
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_IA.pdf
 
Présentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptxPrésentation_ Didactique 1_SVT (S4) complet.pptx
Présentation_ Didactique 1_SVT (S4) complet.pptx
 
Principe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 tempsPrincipe de fonctionnement d'un moteur 4 temps
Principe de fonctionnement d'un moteur 4 temps
 
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSETCours SE Le système Linux : La ligne de commande bash - IG IPSET
Cours SE Le système Linux : La ligne de commande bash - IG IPSET
 
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIEBONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
BONNES PRATIQUES DE FABRICATION RESUME SIMPLIFIE
 
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdfSciencesPo_Aix_InnovationPédagogique_Bilan.pdf
SciencesPo_Aix_InnovationPédagogique_Bilan.pdf
 
Saint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptxSaint Georges, martyr, et la lègend du dragon.pptx
Saint Georges, martyr, et la lègend du dragon.pptx
 
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdfSciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
SciencesPo_Aix_InnovationPédagogique_Conférence_SK.pdf
 
Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024Zotero avancé - support de formation doctorants SHS 2024
Zotero avancé - support de formation doctorants SHS 2024
 
Evaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. MarocpptxEvaluation du systeme d'Education. Marocpptx
Evaluation du systeme d'Education. Marocpptx
 
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_EtudiantActeur.pdf
 
systeme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expertsysteme expert_systeme expert_systeme expert
systeme expert_systeme expert_systeme expert
 

Ecosystème Big Data

  • 1. Module : Ecosystème de la Science des Données Professeur : Idriss CHANA Email : idrisschana@gmail.com A.U : 2018 et 2019
  • 2. Contenu du cours I) introduction au Big Data II) stckage de big data : Les bases de données NoSQL - Différente catégories : clé-valeur , Document, colonne, , graphe - TP: - Mongodb, - Redis, - Cassandra III) hadoop map reduce - architecture hadoop, principe MAP REDUCE. - TP - Configuration hadoop sous ubuntu - Manipulation map reduce cas d’utilisation IV) Écosystème de Hadoop : big, hive et hbase - Fonctionnement - TPs (big, hive et hbase ) V) Machine learning
  • 3. I) Introduction au Big Data AVANT DE DÉMARRER
  • 4. Production des données (1/2) • Tout métier/organisation fournit des services et/ou vend des produits • Le dérivé de tout métier/organisation est une donné • Plusieurs machines et périphériques produisent un volume important de données • Logs de serveurs • Données de capteurs; e.g.: – Capteurs de voitures – Les tags RFID Introduction au Big Data
  • 5. Production des données (2/2) • Les individus produisent des données avec un taux croissant – E-mail, SMS, social media, appels téléphoniques, Internet, images et videos • Presque tout ce qu’on fait laisse une trace numérique! • Dispositifs de plus en plus connectés à Internet et générant des données – Créer l'Internet of things (IoT) • Résultat: un grand volume de données – Si elles sont utilisées correctement, elles peuvent être très utiles et bénéfique pour tout le monde Introduction au Big Data
  • 8. Exercises : C’est quoi Big Data? • Séparez-vous en groupes • La tâche de chaque groupe est de – Donner une définition du Big Data – Citer trois intérêts du Big Data – Citer trois inconvéniants/faiblesses du Big Data Introduction au Big Data
  • 9. Exercises : c’est quoi Big Data? Avantages Inconvénients/Faiblesses Introduction to Big Data
  • 10. Définition du Big Data • Stockage et analyse des jeux de données larges et/ou complexes – Les données dépassent la capacité de traitement des systèmes de bases de données traditionnels • Trop larges • Se déplacent rapidement • Ne suivent pas la structure des bases de données relationnelles Introduction au Big Data
  • 11. Définition du Big Data • Le Big Data s’étend sur trois dimensions – Volume • La Croissance continue de tout type données – Vélocité • La vitesse avec laquelle les données sont produises – Variété • Tout type de données―structurées et non structurées – Texte, vidéo, audio, fichiers log, etc. Introduction au Big Data
  • 14. Pourquoi le Big Data est important • Big Data peut jouer un rôle économique et environemental significatif • Tout le monde peut en bénéficier – Organisations gouvernementales – Economies nationales – Entreprises multinationales – Entreprises privées – Petites et moyennes entreprises – Individus Introduction au Big Data
  • 15. Pourquoi le Big Data est important • Plusieurs organisations écartent plus de 80% des données générées – baser la décisions sur des bases de données relationnelles • Représente souvent moins de 20% des données métier – Dans quelle mesure ces métiers de décisions sont- ils bien informés? Introduction au Big Data
  • 16. Exemple Big Data : Revendeur en-ligne • La vente par internet diffère de la vente en magasin pour plusieurs raisons – Comment savez-vous ce que les gens veulent acheter en-ligne? – Quel est le critère de décision chez les clients en-ligne? • Internet offre la possibilité de collecter de l’information sur les clients – Recquièrt la collecte des données sur toute action prise par le client par rapport à l’organisation • Site web, apps mobile, téléphone, social media, revues de produits, donné de fabrication, traffic Internet Introduction au Big Data
  • 17. Exemple Big Data : Revendeur en-ligne • Permet de comparer des clients similaires et de prévoir les modèles d’achat – L’interaction avec les site web est essentielle • D’où viennent-ils? • Quelles pages ont-ils vues? • Quels termes ont-ils tapés? • Lisent-ils des informations de livraison? • Ont-ils déjà écrits des commentaires? • Des sources de données différentes peuvent être intégrées. – Aide à former une image cohérente de l'entreprise et de ses clients Introduction au Big Data
  • 18. Pourqoui maintenant ? (1/2) • Travailler avec Big Data nécessite effectivement la capacité d'effectuer quatre tâches. 1. Rassembler efficacement les données. 2. Stocker les données efficacement et de manière rentable. 3. Traiter les données en temps opportun. 4. Analyser les résultats. Introduction au Big Data
  • 19. Pourquoi maintenant? (1/2) • Le développement technologique a déjà rendu le Big Data accessible à tous: – Des formes alternatives de stockage économique et évolutif – Traitement à la demande , puissant et à faible cout – De meilleurs outils et algorithmes pour le traitement et l'analyse des données Introduction au Big Data
  • 20. Architecture du Big Data • La stratégie réussie de Big Data exige: – Concevoir une solution correcte. – Construire une infrastructure correcte. – Utilisation de l’infrastructure pour convertir : • Donnée en Information en Valeur Introduction au Big Data
  • 21. Architecture Big Data • L’architecture définit la structure de la solution Big Data – Connue sous le nom de Enterprise Data Hub • On parle aussi de rassemblement de données « Data Lake” • Grande réserve des données de l’entreprise – Générées en interne et en externe – Fournit des outils pour obtenir la Valeur à partir des données Introduction au Big Data
  • 22. Architecture de base • Introduction au Big Data
  • 23. Exigences d’une Architecture Big Data ( ½) • Stockage des données – Stocke une variété de données d’une manière rentable • Traitement des données – Satisfaire les exigences de traitement • Batch • Requêtes Ad hoc • Traitement de flux en temps réel • Recherche • Machine learning, découverte Introduction au Big Data
  • 24. Big Data Architecture Requirements ( 2/2) • Intégration – Intégrer rapidement des données provenant de sources différentes • Sécurité – Authentification, autorisation, comptabilité, protection des données • Opérations – Provisionner, gérer, superviser, et planifier les ressources Introduction to Big Data
  • 26. II) Stockage de données massive & Le rôle de NoSQL
  • 27. Objectives de ce chapitre – Introduire les different types de base de données stockant les données massive ( Big Data Stores) • Key–value • Document • Column family • Graph – Se familiariser avec quelque base de données NoSQL notament: • Redis • MongoDB • Cassandra • Neo4j Stockage Big Data
  • 28. Le rôle de NoSQL
  • 29. Le dilemme de stockage(1/2) • Le stockage à faible donne capacité aux organisations de stocker plus de données que jamais. • Ils ont également l’accès à tous de types de données – Structuré – Non structuré Stockage Big Data
  • 30. Le dilemme de stockage(2/2) • Relever les défis de Big Data est un défi techniquement complexe vu: - Volume - Variety - Velocity - Veracity : Est-ce que les données qui sont stockées, et extrait sont significatif pour le problème analysé • La solution de stockage doit répondre à un certain nombre d’exigences Stockage Big Data
  • 31. Les exigences de stockage de données • La Capacité – Être en mesure de croître rapidement ( mise en échelle) • La sécurité – Beaucoup de données portent des normes de sécurité - Finance, médical – L'intégration pour l'analyse augmente le défi de la sécurité Stockage Big Data
  • 32. Les exigences de stockage de données(1/4) • La Latence – De nombreuses solutions : • Ont un composant temps réel • Ont besoin de croitre et de fournir encore une faible latence • L’ Accès – Puisque l'utilisation de outils d'analyse augmente, les données sont accessibles à un public de plus en plus large • La flexibilité – La conception doit permettre aux infrastructures de stockage de croître – Intégrer les possibilités de migration des données – Interfaçage facile avec d’autre application et d’autre plateforme Stockage Big Data
  • 33. Les exigences de stockage de données(2/4) • Persistance – Durée souvent requise pour l'analyse temporelle – La conformité réglementaire exige souvent que les données soient sauvegardées pendant de nombreuses années – Les périphériques de stockage peuvent nécessiter des fonctionnalités de fiabilité à long terme intégrées • Coût – Principalement construit autour du matériel de base à faible coût – Les coûts peuvent encore être importants lorsque le volume augmente Stockage Big Data
  • 34. Les exigences de stockage de données (3/4) • Les bases de données relationnelles sont au cœur du stockage des données applicatives depuis de nombreuses années – Et continuera à l'être • Les données stockées dans une base de données relationnelle ont généralement ces qualités et caractéristiques: – Structure bien définie avec des schémas de table fixe – Les relations entre les données sont clairement définies – Les index peuvent être définis pour exploiter les requêtes rapides Stockage Big Data
  • 35. Les exigences de stockage de données(4/4) • Les bases de données Relationnelles offrent également de nombreux avantages – Intégration simple des applications – L'intégrité des données • Atomicité, Cohérence, Isolation, Durabilité (ACID) – Outils de reporting – Mode standard d'accès aux données avec SQL Stockage Big Data
  • 36. Extensibilité des bases de données relationnelles • Les bases de données relationnelles sont conçues pour fonctionner sur des machines individuelles • L’ extension (scaling): signifie fonctionner sur une machine plus grande – D'autres approches Alternative ont été développées: • Les bases de données prenant en charge les clusters, comme Oracle Real Application Clusters (RAC) • Éclatement (Sharding ) des ensembles de données sur différentes machines Stockage Big Data
  • 37. Extensibilité des bases de données relationnelles • L'incompatibilité entre les bases de données relationnelles et les clusters à pousser certains acteurs à proposer d’autre solution alternatives: – Google – Amazone • Ces deux organisations disposent de données à une échelle supérieure à la plupart des organisations – Big Data! Stockage Big Data
  • 38. Émergence de bases de données alternatives • Un nouveau jeu de base de données a émergé au cours des dernières années – La principale motivation était de supporter les grands ensembles de données • Les caractéristiques communes de ces bases de données : – Mis en Échelle pour les grands ensembles de données – N'ont pas de modèle relationnel – Aucun schéma fixe permettant de stocker des données – Grandes exigences de stockage de données – Exécuter sur des plusieurs machines à bas prix (clusters) Stockage Big Data
  • 39. NoSQL • Ces nouveaux base de données sont des bases de données NoSQL – Le terme a été utilisé pour la première fois en 1998 pour une base de données relationnelle open source * – Est devenu « terme populaire » en 2009 • Johan Oskarsson a organisé un événement pour discuter des bases de données distribuées et a utilisé le terme NoSQL • Il n'existe pas de définition officielle de NoSQL – Utilisé comme terme générique pour les base de données non structurées Stockage Big Data *www.strozzi.it/cgi-bin/CSA/tw7/I/en_US/noSQL
  • 40. Persistence Polyglotte • Les base de données NoSQL ne remplacent pas les bases de données SQL – Complémentarité • Il existe maintenant un choix de technologies de stockage de données multiples disponibles – Doit être choisi en fonction de la façon dont les données sont utilisées – Mène à ce qu'on appelle la persistance polyglotte Stockage Big Data
  • 41. Persistence Polyglotte • Définition: "Utilisation de plusieurs technologies de stockage de données, choisies en fonction de la façon dont les données sont utilisées par des applications individuelles" Source: Sadalage, Pramod, and Martin Fowler. NoSQL Distilled. Addison-Wesley, 2012. Stockage Big Data
  • 42. Persistence Polyglotte • Les bases de données SQL présentent de nombreux avantages – Le modèle de données basé sur des schémas est encore très pertinent pour de nombreuses applications – Il existe un grand nombre d'outils pour travailler avec des bases de données SQL – Prise en charge des transactions ACID – Grande base de connaissances Stockage Big Data
  • 43. Persistence Polyglotte : Exemple • Soit une application Web en ligne et ses exigences de stockage – Catalogue de produits • Beaucoup de lectures, écritures peu fréquents – Données financières • Exigences de transaction • Rapports sur commandes, performances, etc… Stockage Big Data
  • 44. Persistence Polyglotte : Exemple – Session utilisateur • Accès rapide pour lecture et écriture - pas de durabilité • Journal des activités utilisateur • Des volumes élevés d'écritures – Recommandations de produits • Liens entre produits, personnes – Analyse • Examiner les comportements et les modèles des clients Stockage Big Data
  • 45. Persistence Polyglotte : Exemple • Un tel exemple présente de nombreuses exigences de stockage – Certains sont applicables aux bases de données relationnelles – D'autres sont mieux adaptés aux base de données NoSQL • Une solution élégante permettrait d'utiliser au mieux différents types de données – Une solution Polyglotte Persistance Stockage Big Data
  • 46. Bases de données NoSQL • Il existe de nombreux bases de données qui peuvent être considérés comme NoSQL • On peut les catégoriser comme suit – Key–value ( Orienté Clé –valeur) – Document ( Orienté Document) – Column family ( Orienté Colone) – Graph data ( Orienté Graphe) Stockage Big Data
  • 48. Base de données clé-valeur (Key–value )
  • 49. Base de Données NoSQL : Clé –valeur • Considérés comme les plus simples des bases de données NoSQL • Certains sont persistants, d'autres sont en mémoire seulement • Offrent trois opérations principales – Insérer une valeur pour une clé – Obtenir une valeur associée à une clé – Supprimer une valeur • Les bases de données n'ont aucune connaissance de ce qui est stocké dans les valeurs – C’est à l'application de savoir le contenu et le type de ces valeurs Stockage Big Data
  • 50. Base de Données NoSQL : Clé –valeur • Il existe un certain nombre de bases de données orienté clé-valeur – Redis – Riak – Amazon S3 and DynamoDB – Memcached – Infinispan • Nous utiliserons Redis dans nos exemples et au TP Stockage Big Data
  • 51. Clé –valeur : Redis • Base de données de type clé-valeur Open- source disponible sur www.redis.io • Les Valuers stockées pruvent être : – Strings – Lists – Hashes – Sets (including sorted sets) Stockage Big Data
  • 52. Travailler avec Redis Stockage Big Data set author ‘’nic’’ set id 24 Rpush page:View:XTZ-123 nic Rpush page:View:XTZ-123 tom sadd Speaker:Nosql ‘’ alexis« sadd Speaker:Nosql ‘’ pierre" Zadd Votes:Proposal:XYZ-123 5 chris Zadd Votes:Proposal:XYZ-123 3 bob Zadd Votes:Proposal:XYZ-123 10 antonio hset Speaker:Nicola firstname nicola hset Speaker:Nicola lastname martignol hset Speaker:Nicola Twiter @nmartignol
  • 53. Clé –valeur : Redis • Prend en charge de nombreux langages de programmation – Java – C/C++ – JavaScript – C# – Node.js – PHP – Python – Ruby Stockage Big Data
  • 54. Travailler avec Redis • Fournit une interface de ligne de commande pour un travail interactif • À titre d'exemple, nous travaillons avec les données des enregistrement de musique ( gestions d’une base de données musicale) – Nous ajoutons des enregistrements à un ensemble Redis • Les ensembles (set) sont identifiés par un nom unique – Dans notre exemple, notre ensemble (set) s’appelle recordings Stockage Big Data
  • 55. Travailler avec Redis • Chaque enregistrement dans l'ensemble aura un identifiant unique – Habituellement, un nombre – Assure que chaque enregistrement musical est dans l'ensemble une seule fois ( UNIQUE) • Les données de chaque enregistrement dans l'ensemble sont constituées de paires nom- valeur (clé-valeur) Stockage Big Data recordings:1:artist "Rolling Stones" recordings:1:title "Beggars Banquet" Value Set name Set entry id Name
  • 56. Travailler avec Redis • Pour créer une nouvelle entrée dans l'ensemble, les étapes suivantes sont requises: – Choisir un nom pour l'ensemble – Générer un nouvel identifiant pour l'objet à ajouter à l'ensemble – Ajoutez les propriétés individuelles à l'objet dans l'ensemble - Ce sont des paires nom-valeur • Il n'existe aucune commande ‘commit ‘ explicite requise – Les données sont automatiquement conservées Stockage Big Data
  • 57. Travailler avec Redis • L'exemple suivant ajoute un enregistrement musical à l’ ensemble Redis : recordings Stockage Big Data
  • 59. Cas d‘utilisation de Clé-valeur • Stockage des informations de sessions d’une application Web – Les sessions Web ont un identifiant unique – Si une session doit être stockée, alors une mémoire de type clé-valeur est la plus appropriée • Fournit des performances plus rapides qu'une base de données relationnelle – Par exemple, l'historique de navigation d'un utilisateur Stockage Big Data
  • 60. Cas d‘utilisation de Clé-valeur • Profils et préférences utilisateur – Les utilisateurs disposent d'identifiants uniques – Leurs données sont mises dans un objet puis stockées par id comme clé • Données de la carte d’achat – Pour qu’elles soient disponibles sur les sessions, machines, navigateurs – Mettre les données de la carte dans un enregistrement clé-valeur identifié par un user Id • Géo-localisation • Et autres … Stockage Big Data
  • 62. Base de données Orienté Document
  • 63. Base de données Orienté Document • Permet le stockage des informations semi-structurées • Les documents contiennent des données codées • Données textuelles: XML , JSON, BSON • Données binaires: PDF, MS Word, etc. • Les documents dans la base de données ont une clé unique • Peuvent également être récupéré en fonction de leur contenu • Par exemple, les informations sur une chanson en passant par son titre Stockage Big Data
  • 64. Base de données Orienté Document • Considérons les deux documents suivants: – Ils n ont aucun schéma ni structure prédéfinie Stockage Big Data
  • 65. Base de données Orienté Document • De nombreux base de données orienté documents sont disponibles: – MongoDB – CouchDB – Terrastore – OrientDB – RavenDB – Jackrabbit • Nous utiliserons MongoDB dans nos exemples et au niveau du TP Stockage Big Data
  • 66. MongoDB • Base de de données de documents open source: www.mongodb.org • Principales caractéristiques: – Modèle de données riche non limité par les contraintes du schéma – Réplication et haute disponibilité – Riches en terme de Requêtes – Agrégation flexible et traitement des données- Hadoop - Map-Reduce Stockage Big Data
  • 67. MongoDB • Prise en charge de nombreux langages de programmation – Java – C/C++ – JavaScript – .NET – Node.js – PHP – Python – Ruby Stockage Big Data
  • 68. Travailler avec MongoDB • Les documents sont stockés dans une base de données MongoDB – Une base de données contient une ou plusieurs collections » Chaque collection peut contenir plusieurs documents • Les bases sont identifiés par leur nom – Sélectionnez une base de données: use <data-store- name> » Par exemple, use rainforest » La base est Créé s'il n'existe pas – Une fois la base de données est sélectionnée, elle est référencée en utilisant le mot db Stockage Big Data
  • 69. Travailler avec MongoDB • MongoDB est livré avec une interface de ligne de commande pour – Fournir des commandes d’ insertion, de mise à jour, de suppression et pour interroger les données – C’est un shell en JavaScript • Les documents sont ajoutés aux collections des bases de données Stockage Big Data
  • 70. Travailler avec MongoDB : Exemple • Exemple ajouter un document d'enregistrement musical à la base de données: Ajouté à la collection recordings • Création: : db.createCollection(name, options) Stockage Big Data
  • 71. Les requettes MongoDB • find() Permet de rechercher des documents - Par exemple, pour trouver tous les enregistrements dont l'artiste est le Rolling Stones Stockage Big Data db.recordings.find({artist : "Rolling Stones"}) Suppression -une collection : db.collection.drop() -Base de données : use nom_base puis db.dropDatabase()
  • 72. Les requettes MongoDB • Les requêtes peuvent également spécifier des critères tels que des plages et des combinaisons logiques – Par exemple, pour chercher tout les enregistrement ayant le prix entre $5.00 et $7.00 Stockage Big Data db.recordings.find({price: {"$gte":5.00, "$lte": 7.00}}) plage spécifiée
  • 73. Les requettes MongoDB • L'opérateur non égal permet de faire correspondre des clé non égales à la valeur spécifiée Stockage Big Data db.recordings.find({artist: {"$ne":"Rolling Stones"}}) Tout les artists à l’exception de Rolling Stones
  • 74. Demonstration • Stockage Big Data mongod.exe --dbpath D:data
  • 75. Orienté Document: Cas d’utilisation • Les applications qui stockent des données dans des fichiers plats – Les base de données orientées documents fournissent une fonctionnalité de recherche structurée • Les données sont complexes à modéliser dans une base de données relationnelle • L'application a un volume élevé de "correspondance" des enregistrements – Détection de fraude Stockage Big Data
  • 77. Base de données orienté Colonne (Column Family)
  • 78. Base de données orienté Colonne • Stocker les données sous forme de tables mais sans schéma formel – L'unité de stockage principale est un espace de clé keyspace – Chaque ligne possède une clé unique • Chaque ligne peut contenir plusieurs colonnes – Connue sous le nom famille colonnes( column family ) • Paires clé-valeur liées sont stockées dans une seule ligne dans la famille de colonnes Stockage Big Data
  • 79. Base de données orienté Colonne Stockage Big Data
  • 80. Base de données orienté Colonne • Stockage Big Data
  • 81. • Utilisation principale: pour des ensembles de données très volumineux – Les lignes peuvent contenir des millions de colonnes – Variable / flexible quant aux données à stocker • Plusieur base de données orienté colonnes sont disponibles – Cassandra – HBase – Hypertable – Amazon SimpleDB • Nous utiliserons Cassandra dans nos exemples Storing Big Data Base de données orienté Colonne
  • 82. Cassandra • Support plusieurs langage de programmation – Java – Python – PHP – Perl – C# Storing Big Data
  • 83. Working With Cassandra • Cassandra dispose de trois niveaux d'adressage – Keyspace qui contient des familles de colonnes – Familles de colonnes qui contiennent des colonnes – Colonnes contenant des valeurs • Travailler avec Cassandra nécessite – La création d'un espace de clé (Keyspace) – La création d'une famille de colonnes – L’ajout de données à une famille de colonnes Storing Big Data
  • 84. Working With Cassandra Example • L'exemple ci-dessous montre la création d'un keyspace: • Création column family = définition d’un schéma pour une DB – Le schéma de Column family peut changer dynamiquement Storing Big Data CREATE KEYSPACE rainforest; CREATE COLUMN FAMILY recordings WITH comparator = UTF8Type AND key_validation_class = UTF8Type AND column_metadata = [ {column_name: Artist, validation_class: UTF8Type} {column_name: Price, validation_class: DoubleType} ]; Key will be string For searching Data type of column
  • 85. Reading and Writing Data • Les commandes de base GET, SET, et DEL peuvent être executées en ligne de commandes Storing Big Data SET recordings['Beggars Banquet']['Price'] = '9.55'; SET recordings['Beggars Banquet']['Artist'] = 'Rolling Stones'; Column family Row key Column GET recordings['Beggars Banquet']; Get column data for Beggars Banquet
  • 86. Reading and Writing Data • Tous les enregistrement peuvent etre lister par la commande LIST • Les Keyspaces et les column families peucnet etre supprimer par la commande DROP Storing Big Data LIST recordings; DROP columnfamily recordings; Remove column family recordings
  • 87. Cassandra Query Language (CQL) • Similaire au SQL pour créer une column families • Pour créer un keyspace, on utilise • Pour utiliser un keyspace on utilise la commande USE Storing Big Data CREATE KEYSPACE rainforest WITH replication={'class':'SimpleStrategy', 'replication_factor':'1'}; Only replicate to one other node Data is in one data center only USE rainforest;
  • 88. Reading and Writing Data With CQL • On peut créer une column family par la commande : CREATE COLUMNFAMILY • Pour inserer les données : INSERT Storing Big Data CREATE COLUMNFAMILY recordings( Title varchar PRIMARY KEY, Artist varchar, Price double); Will be title of recording INSERT INTO recordings(Title, Artist, Price) values ('Beggars Banquet', 'Rolling Stones', 9.99);
  • 89. Reading and Writing Data With CQL • Extration des données par le CQL par la commande SELECT • Keyspaces et les column families peuvent etre supprimés par la commande DROP Storing Big Data SELECT * FROM recordings; Retrieve all data from recordings column family DROP COLUMNFAMILY recordings;
  • 90. Demo • Your instructor will now demonstrate working with a Cassandra data store Storing Big Data
  • 91. Column Family Use Cases • Event logging – Application errors can be stored in Cassandra • Column family stores – Application name – Event/Error – Timestamp – Enables data to be processed for analysis using Hadoop • Blogging/user-generated content – Enables fast searching on tags Storing Big Data
  • 93. Exercise 2.3 • Storing Big Data Refer to Labs : • Exercise 2.3: Working With Cassandra
  • 95. Graph Data Stores • Graph databases can be queried in many different ways – For example, get all nodes of people who live in New York and who like The Killers – Known as traversing the graph • Provide great flexibility in traversing the graph – Also very high performance Storing Big Data
  • 96. Graph Data Stores • Adding new relationships to a graph data store is easy – Relational database requires schema changes and data movement • There are a number of graph data stores available – FlockDB – InfiniteGraph – Neo4j – OrientDB • We will use Neo4j in our examples Storing Big Data
  • 97. Neo4j • An open-source graph database: www.neo4j.org • Key features include: – Durable – Reliable―support for ACID transactions – Massively scalable – Highly available – Fast―high-speed graph queries – Simple to use Storing Big Data
  • 98. Neo4j • Support for many programming languages – Java – Python – JRuby – Scala – Clojure Storing Big Data
  • 99. Working With Neo4j • The following code example creates two nodes – Adds a relationship between them Storing Big Data Node rollingStones = graphDb.createNode(); rollingStones.setProperty("Artist", "Rolling Stones"); Node beggarsBanquet = graphDb.createNode(); beggarsBanquet.setProperty("Title", "Beggars Banquet"); rollingStones.createRelationship(beggarsBanquet, ARTIST); ARTIST The Rolling Stones Beggars Banquet Accesses music recording database Relationship name
  • 100. Transactions • Neo4j is ACID compliant – All changes must be undertaken within a transaction • Otherwise, an error will occur – Reading can be performed without a transaction Storing Big Data Transaction transaction = graphDb.beginTx(); try{ Node rollingStones = graphDb.createNode(); rollingStones.setProperty(“Artist”, “Rolling Stones”); transaction.success(); } finally{ transaction.finish(); } Initiate transaction Mark work completed successfully Complete transaction
  • 101. Neo4j Query Features • Provides Cypher query language to query the graph • General structure of Cypher is Storing Big Data START beginningNode = (beginning node specification) MATCH (relationship, pattern matches) WHERE (filtering condition: on data in nodes and relationships) RETURN (what to return: nodes, relationships, properties) ORDER BY (properties to order by) SKIP (nodes to skip from top) LIMIT (limit results)
  • 102. Neo4j Query Features • Find all the titles of recordings whose artist is Rolling Stones Storing Big Data START rolling_stones = node(nodeId) MATCH (rolling_stones)-[:ARTIST]-(recordings) RETURN recordings.Title; Properties to select from friends ARTIST The Rolling Stones Beggars Banquet
  • 103. Running Queries From Java • Use ExecutionEngine to run Cypher queries Storing Big Data String query = "START rolling_stones = node(rollingStones.getId())" + "MATCH (rolling_stones)-[:ARTIST]-(recordings)" + "RETURN recordings.Title"; ExecutionEngine engine = new ExecutionEngine(graphDb); ExcutionResult result = engine.execute(query); // Process results here Execute query from Java code Identify node by id
  • 104. Demo • Your instructor will now demonstrate querying a Neo4j data store using Cypher Storing Big Data
  • 105. Graph Use Cases • Connected data – Represent employees and their skills – Projects worked on • Dispatch services for retail delivery – Each delivery person and delivery is a node – Relationships can have distance property Storing Big Data
  • 106. Graph Use Cases • Recommendation engines – Any information application with users can make use of this • “Customer” nodes link to “hotels booked” nodes • Recommend similar hotels to customers based on previous purchase history • Can you add any more to the list above? Storing Big Data
  • 108. Exercise 2.4 • Storing Big Data Refer to Labs : • Exercise 2.4: Working With Neo4j
  • 109. The End That’s all folks! Storing Big Data
  • 112. Préfixes multiplicatifs Signe préfixe facteur exemple représentatif K Kilo 103 M Mega 106 G Giga 109 DVD, clé USB T Téra 1012 disque dur P Péta 1015 E Exa 1018 FaceBook, Amazon,Google Z Zetta 1021 internet tout entier depuis 2010 112
  • 113. Mégadonnées (Rappel) • Les mégadonnées ou Big Data sont des collections d’informations qui auraient été considérées comme gigantesques, impossible à stocker et à traiter, il y a une dizaine d’années. • Internet : – Google en 2015 : 10 Eo (10 milliards de Go) – Facebook en 2014 : 300 Po de données (300 millions de Go), 4 Po de nouvelles données par jour – Amazon : 1 Eo. • BigScience : télescopes (1 Po/jour), CERN (500 To/jour, 140 Po de stockage), génome, environnement. . . • Les informations sont très difficiles à trouver. • La raison est que tout est enregistré sans discernement, dans l’idée que ça pourra être exploité. Certains prêchent pour que les données collectées soient pertinentes (smart data) plutôt que volumineuses 113
  • 114. Mégadonnées (Exploitation) • Le traitement d’aussi grandes quantités de données impose des méthodes particulières. • Un SGBD classique, même haut de gamme, est dans l’incapacité de traiter autant d’informations. • Répartir les données sur plusieurs machines (jusqu’à plusieurs millions d’ordinateurs) • système de fichiers spécial permettant de ne voir qu’un seul espace pouvant contenir des fichiers gigantesques et/ou très nombreux (HDFS) • Système de gestion de données distrubués – Hadoop , Spark • bases de données spécifiques (Hbase, cassandra ….) • Traitements du type « map-reduce » : – algorithmes faciles à écrire, – exécutions faciles à paralléliser. 114
  • 115. Hadoop • Hadoop est un système de gestion de données et de traitements distribués • Le projet Hadoop consiste en deux grandes parties: – Stockage des données : HDFS (Hadoop Distributed File System) – Traitement des données : MapReduce / Yarn • HDFS un système de fichier qui répartit les données sur de nombreuses machines, • YARN un mécanisme d’ordonnancement de programmes de type MapReduce. • Principe : – Diviser les données – Les sauvegarder sur une collection de machines, appelées cluster – Traiter les données directement là où elles sont stockées, plutôt que de les copier à partir d’un serveur distribué • Il est possible d’ajouter des machines à votre cluster, au fur et à mesure que les données augmentent 115
  • 117. Ecosystème de Hadoop • En plus des briques de base Yarn Map Reduce/HDFS, plusieurs outils existent pour: – L’extraction et le stockage des données de/sur HDFS – La simplification des opérations de traitement sur ces données – La gestion et coordination de la plateforme – Le monitoring du cluster 117
  • 118. Ecosystème de Hadoop • Parmi ces outils, certains se trouvent au dessus de la couche Yarn/MR, tel que: – Pig: Langage de script – Hive: Langage proche de SQL (Hive QL) – R Connectors: permet l’accès à HDFS et l’exécution de requêtes Map/Reduce à partir du langage R – Mahout: bibliothèque de machine learning et mathématiques – Oozie: permet d’ordonnancer les jobs Map Reduce, en définissant des workflows 118
  • 119. Ecosystème de Hadoop • D’autres outils sont directement au dessus de HDFS, tel que : – Hbase : Base de données NoSQL orientée colonnes – Impala (pas représenté dans la figure): Permet le requêtage de données directement à partir de HDFS (ou de Hbase) en utilisant des requêtes Hive SQL 119
  • 120. Ecosystème de Hadoop • Certains outils permettent de connecter HDFS aux sources externes, tel que: – Sqoop: Lecture et écriture des données à partir de bases de données externes – Flume: Collecte de logs et stockage dans HDFS • Enfin, d’autres outils permettent la gestion et administration de Hadoop, tel que: – Ambari: outil pour le provisionnement, gestion et monitoring des clusters – Zookeeper: fournit un service centralisé pour maintenir les information de configuration, de nommage et de synchronisation distribuée 120
  • 121. Hadoop Distributed File System • HDFS est un système de fichiers distribué. C’est à dire : un dispositif de stockage et d’accès à des fichiers • ces fichiers sont stockés sur un grand nombre de machines de manière à rendre invisible la position exacte d’un fichier. L’accès est transparent, quelle que soient les machines qui contiennent les fichiers. • HDFS permet de voir tous les dossiers et fichiers de ces milliers de machines comme un seul arbre, contenant des Po de données, comme s’ils étaient sur le disque dur local. 121
  • 122. Hadoop Distributed File System • Les caractéristiques de HDFS: – Il est distribué: les données sont réparties sur tout le cluster de machines. – Il est répliqué: si une des machines du cluster tombe en panne, aucune donnée n'est perdue. 122
  • 123. Hadoop Distributed File System Commande hdfs dfs • La commande hdfs dfs et ses options permet de gérer les fichiers et dossiers : hdfs dfs –help hdfs dfs -ls [noms...] (pas d’option -l) hdfs dfs -cat nom hdfs dfs -mv ancien nouveau hdfs dfs -cp ancien nouveau hdfs dfs -mkdir dossier hdfs dfs -rm -f -r dossier (pas -fr) 123
  • 124. Hadoop Distributed File System Commande hdfs dfs Échanges entre HDFS et le monde • Pour placer un fichier dans HDFS, deux commandes équivalentes : hdfs dfs -copyFromLocal fichiersrc fichierdst hdfs dfs -put fichiersrc [fichierdst] • Pour extraire un fichier de HDFS, deux commandes possibles : hdfs dfs -copyToLocal fichiersrc dst hdfs dfs -get fichiersrc [fichierdst] • Exemple : hdfs dfs -mkdir -p livres wget http://www.textfiles.com/etext/FICTION/dracula hdfs dfs -put dracula livres hdfs dfs -ls livres hdfs dfs -get livres/center_earth 124
  • 125. Architecture HDFS • HDFS repose sur deux serveurs (des daemons): – Le NameNode, qui stocke les informations relatives aux noms de fichiers. C'est ce serveur qui, par exemple, va savoir que le fichier « toto.txt » dans le répertoire « data_input » comporte 58 blocs de données, et qui sait où ils se trouvent. Il y a un seul NameNode dans tout le cluster Hadoop. – Le DataNode, qui stocke les blocs de données eux-mêmes. Il y a un DataNode pour chaque machine au sein du cluster, et ils sont en communication constante avec le NameNode pour recevoir de nouveaux blocs, indiquer quels blocs sont contenus sur le DataNode, signaler des erreurs, etc... Par défaut, les données sont divisées en blocs de 64KB (configurable). • Hadoop est inspiré de GFS, un système de fichier distribué conçu par Google. • L'implémentation de HDFS a son origine dans un whitepaper issu du département de recherche de Google (« The Google File System », 2003) 125 Hadoop Distributed File System
  • 126. Hadoop Distributed File System • Chaque bloc est enregistré dans un noeud différent du cluster – DataNode : démon sur chaque noeud du cluster – NameNode : Démon s’exécutant sur une machine séparée • Contient des méta-données • Permet de retrouver les noeuds qui exécutent les blocs d’un fichier 126 File Block 3 Block 2 Block 1 DataNode 1 Block 1 Block 2 DataNode 2 Block 1 DataNode 3 Block 2 Block 3 Block 3
  • 127. Hadoop Distributed File System • Les datanodes contiennent des blocs (notés A,B,C. . . ). Les mêmes blocs sont dupliqués (replication) sur différents datanodes, en général 3 fois. Cela assure : – fiabilité des données en cas de panne d’un datanode, – accès parallèle par différents processus aux mêmes données. • Le namenode sait à la fois : – sur quels blocs sont contenus les fichiers, – sur quels datanodes se trouvent les blocs voulus. – On appelle cela les metadata. 127
  • 128. Hadoop Distributed File System 128
  • 129. Hadoop Distributed File System 129
  • 130. Hadoop Distributed File System • Si le NameNode a un problème : – Pas de problème? – Données perdues à jamais ? – Données inaccessibles? 130 Si c’est un problème d’accès (réseau), les données sont temporairement inaccessibles Si le disque du NN est défaillant, les données seront perdues à jamais
  • 131. Hadoop Distributed File System 131 Mode high availability Pour éviter cela, le NameNode sera dupliqué, non seulement sur son propre disque, mais également quelque part sur le système de fichiers du réseau le secondary namenode ((standby namenode)) archive les metadata, par exemple toutes les heures. pour reprendre le travail si le NameNode actif est défaillant
  • 132. Hadoop Distributed File System API Java pour HDFS • Hadoop propose une API complète pour accéder aux fichiers de HDFS. Elle repose sur deux classes • principales : – FileSystem représente l’arbre des fichiers (file system). Cette classe permet de copier des fichiers locaux vers HDFS (et inversement), renommer, créer et supprimer des fichiers et des dossiers – FileStatus gère les informations d’un fichier ou dossier • taille avec getLen() • nature avec isDirectory() et isFile() 132
  • 133. Hadoop : MapReduce ,YARN 133
  • 134. ● Pour exécuter un problème large de manière distribué, il faut: - Le découper en plusieurs problèmes de taille réduite à exécuter sur chaque machine (diviser pour régner). ● De multiples approches existent et ont existé pour cette division d'un problème en plusieurs « sous-tâches ». ● MapReduce est un paradigme (un modèle) visant à généraliser les approches existantes pour produire une approche unique applicable à tous les problèmes. ● MapReduce existait déjà depuis longtemps, - Dans les langages fonctionnels (Lisp, Scheme), - En 2004 Google publié un whitepaper (« MapReduce: Simplified Data Processing on Large Clusters »). Où il a presenté le MapReduce généralisable à tous les problèmes et orientée calcul distribué est Large Clusters »). Présentation 1/4 134 MapReduce
  • 135. MapReduce définit deux opérations distinctes à effectuer sur les données d'entrée: ● MAP: va transformer les données d'entrée en une série de couples clef/valeur. Elle va regrouper les données en les associant à des clefs, choisies de telle sorte que les couples clef/valeur aient un sens par rapport au problème à résoudre. ● REDUCE, va appliquer un traitement à toutes les valeurs de chacune des clefs distinctes produite par l'opération MAP. Au terme de l'opération REDUCE, on aura un résultat pour chacune des clefs distinctes. 135 Présentation 2/4 MapReduce
  • 136. On distingue donc 4 étapes distinctes dans un traitement MapReduce: ● Decouper (split) les données d'entrée en plusieurs fragments. ● Mapper chacun de ces fragments pour obtenir des couples (clef ; valeur). ● Grouper (shuffle) ces couples (clef ; valeur) par clef. ● Réduire (reduce) les groupes indexés par clef en une forme finale, avec une valeur pour chacune des clefs distinctes. En modélisant le problème à résoudre de la sorte, on le rend parallélisable – chacune de ces tâches à l'exception de la première seront effectuées de manière distribuée. 136 Présentation 3/4 MapReduce
  • 137. Pour résoudre un problème via la méthodologie MapReduce avec Hadoop, on devra donc: ● Choisir une manière de découper les données d'entrée de telle sorte que l'opération MAP soit parallélisable. ● Définir quelle CLEF utiliser pour notre problème. ● Écrire le programme pour l'opération MAP. ● Écrire le programme pour l'opération REDUCE. … et Hadoop se chargera du reste (problématiques calcul distribué, groupement par clef distincte entre MAP et REDUCE, etc.). 137 Présentation 4/4 MapReduce
  • 138. Imaginons que vous ayez plusieurs magasins que vous gérez à travers le monde • Un très grand livre de comptes contenant TOUTES les ventes • Supposons que les lignes du livres ont la forme : Jour ; Ville ; produit; Prix • Objectif : Calculer le total des ventes par magasin pour l’année 2016 Jour Ville produit Prix 2016--‐01--‐01 London Clothes 25.99 2016--‐01--‐01 Miami Music 12.15 2016--‐01--‐02 Casa Toys 3.10 2016--‐01--‐02 Miami Clothes 50.00 138 MapReduce Exemple concret
  • 139. Possibilité : o Pour chaque entrée, saisir la ville et le prix de vente o Si on trouve une entrée avec une ville déjà saisie, on les regroupe en faisant la somme des ventes Dans un environnement de calcul traditionnel, on utilise généralement des Hashtables, sous forme de: o Clef Valeur Dans notre cas, la clef serait l’adresse du magasin, et la valeur le total des ventes. 2016--‐01--‐01 London Clothes 25.99 2016--‐01--‐01 Miami Music 12.15 2016--‐01--‐02 Casa Toys 3.10 2016--‐01--‐02 Miami Clothes 50.00 London 25.99 Miami 12.15 Casa 3.10 London 25.99 Miami 62.15 Casa 3.10 139 Exemple concret MapReduce
  • 140. Si on utilise les hashtables sur 1To, Problèmes ?  Ça ne marchera pas ?  Problème de mémoire ?  Temps de traitement long ?  Réponses erronées ? 2016--‐01--‐01 London Clothes 25.99 2016--‐01--‐01 Miami Music 12.15 2016--‐01--‐02 Casa Toys 3.10 2016--‐01--‐02 Miami Clothes 50.00 London 25.99 Miami 12.15 Casa 3.10 London 25.99 Miami 62.15 Casa 3.10 140 Exemple concret MapReduce Le traitement séquentiel de toutes les données peut s’avérer très long  Plus on a de magasins, plus l’ajout des valeurs à la table est long  Il est possible de tomber à court de mémoire pour enregistrer cette table  Mais cela peut marcher, et le résultat sera correct
  • 141. Map-Reduce : Moyen plus efficace et rapide de traiter ces données Au lieu d’avoir une seule personne qui parcourt le livre, si on en recrutait plusieurs? Appeler un premier groupe les Mappers et un autre les Reducers Diviser le livre en plusieurs parties, et en donner une à chaque Mapper Les Mappers peuvent travailler en même temps, chacun sur une partie des données Mappers Reducers 141 Exemple concret MapReduce
  • 142. Miami L. A. N.Y.C N.Y.C. N.Y.C. Miami L. A. Miami Miami L. A. L. A. N.Y.C N.Y.C N.Y.C $300,578 $603.768 $432.900 Mappers Pour chaque entrée, saisir la ville, et le total des ventes et les enregistrer dans une fiche  Rassembler les fiches du même magasin dans une même pile Reducers  Chaque Reducer sera responsable d’un ensemble de magasins  Ils collectent les fiches qui leur sont associées des différents Mappers  Ils regroupent les petites piles d’une même ville en une seule  Ils parcourent ensuite chaque pile par ordre alphabétique des villes (L.A avant Miami), et font la somme de l’ensemble desenregistrements Reducers Mappers 142 Exemple concret MapReduce
  • 143. Mappers Le code de notre opération MAP sera donc (ici en pseudo code): POUR CHAQUE LIGNE, FAIRE: GENERER COUPLE (VILLE ; PRIX ) (London ; 25.99) (Miami; 12.15) (Casa ; 3.10) (Miami ;50.00) (London ; 33.60) (Paris ;40.80) (NY ; 16.20) (Casa; 15.10) …. (Paris ;10.0) Pour chacun de nos fragments, les couples (clef; valeur) générés seront donc: 143 Exemple concret MapReduce
  • 144. Une fois notre opération MAP effectuée (de manière distribuée), Hadoop groupera (shuffle) tous les couples par clef commune. Cette opération est effectuée automatiquement par Hadoop. Elle est, là aussi, effectuée de manière distribuée en utilisant un algorithme de tri distribué, de manière récursive. Après son exécution, on obtiendra les groupes de couple suivants: (Casa ; 3.10 ) (Casa; 15.10) (London ; 25.99) (London ; 33.60) (Miami; 12.15) (Miami ;50.00) (NY ; 16.20) (NY ; 6.0) (Paris ;40.80) (Paris ;10.0) …. 144 Exemple concret MapReduce
  • 145. Il nous reste à créer notre opération REDUCE, qui sera appelée pour chacun des groupes/clef distincte. Dans notre cas, elle va simplement consister à additionner toutes les valeurs liées à la clef spécifiée: TOTAL=0 POUR COUPLE dans GROUPE, FAIRE: TOTAL=TOTAL+ COUPLE [2] RENVOYER TOTAL 145 Exemple concret MapReduce
  • 146. Une fois l'opération REDUCE effectuée, on obtiendra donc une valeur unique pour chaque clef distincte. En l’occurrence, notre résultat sera: (Casa ; 18.20 ) (London ; 59.59) (Miami; 62.15) (NY ; 22.20) (Paris ;50.80) …. L’intérêt du modèle MapReduce : -Il suffit de développer les deux opérations du traitement: MAP et REDUCE, - Et de bénéficier automatiquement de la possibilité d'effectuer le traitement sur un nombre variable de machines de manière distribuée. 146 Exemple concret MapReduce
  • 147. Données d’entrée 2016--‐01--‐01 London Clothes 25.99 2016--‐01--‐01 Miami Music 12.15 2016--‐01--‐02 Casa Toys 3.10 2016--‐01--‐04 Casa Music 15.10 …. …. 2016--‐01--‐31 Paris Clothes 10.0 2016--‐01--‐02 Miami Clothes 50.00 2016--‐01--‐03 Paris Toys 40.80 2016--‐01--‐03 NY Music 16.20 …. (Paris ;10.0) (Miami ;50.00) (Paris ;40.80) (NY ; 16.20) (London ; 25.99) (Miami; 12.15) (Casa ; 3.10) (Casa; 15.10) … 2016--‐01--‐01 London Clothes 25.99 2016--‐01--‐01 Miami Music 12.15 2016--‐01--‐02 Casa Toys 3.10 2016--‐01--‐02 Miami Clothes 50.00 2016--‐01--‐03 Paris Toys 40.80 2016--‐01--‐03 NY Music 16.20 2016--‐01--‐04 Casa Music 15.10 …. 2016--‐01--‐31 Paris Clothes 10.0 Spliting (fragmentation) MAP Paris ;40.80) (Paris ;10.0) (London ; 25.99) (London ; 33.60) (Casa ; 3.10) (Casa; 15.10) (Miami; 12.15) (Miami ;50.00) Shuflling Méllange/trie (Paris ;50.80) (London ; 59.59) (Casa ; 18.20) (Miami ;62.15) REDUCE (NY ; 16.20) (NY ; 6.0) (NY ; 22.20) Casa ; 18.20 London ; 59.59) Miami; 62.15) NY ; 22.20) Paris ;50.80) 147
  • 148. Un autre exemple: on souhaite compter le nombre de visiteurs sur chacune des pages d'un site Internet. On dispose des fichiers de logs sous la forme suivante: Ici, notre clef sera par exemple l'URL d’accès à la page, et nos opérations MAP et REDUCE seront exactement les mêmes que celles qui viennent d'être présentées: on obtiendra ainsi le nombre de vue pour chaque page distincte du site. /index.html [19/Oct/2015:18:45:03] /news.php?id=18 [20/Oct/2016:15:00:34] /contact.html [19/Oct/2016:18:46:15] /news.php?id=5 [24/Oct/2016:18:13:02] /news.php?id=4 [24/Oct/2016:18:13:12] /news.php?id=18 [24/Oct/2016:18:14:31] /index.html [19/Oct/2016:23:45:03] /contact.html [23/Oct/2016:10:06:33] ...etc... 148 Autres Exemples MapReduce
  • 149. Exercice 1 : Écrire le pseudo code des deux fonctions MAP et REDUCE pour calculer le nombre d’occurrences des mots dans un livre (texte) procéder par ligne Exercice 2 : Dans un réseau social, On souhaite afficher quand un utilisateur va sur la page d'un autre utilisateur une indication « Vous avez N amis en commun ». On va donc développer des programmes MAP et REDUCE pour cette opération. Les données d’entrer se présentent sous la formes suivante: A est amis de B,C, D . B est amis de A, C, D et E et ainsi de suite A => B, C, D B => A, C, D, E C => A, B, D, E D => A, B, C, E E => B, C, D 149 Exercices MapReduce
  • 150. 150 MapReduce v1 intègre trois composants • API  Pour permettre au programmeur l’écriture d’applications MapReduce • Framework  Services permettant l’exécution des Jobs MapReduce, le Shuffle/Sort… • Resource Management  Infrastructure pour gérer les noeuds du cluster, allouer des ressources et ordonnancer les jobs MapReduce 1 API Framework Resource Management Composants MapReduce V1 (MRv1)
  • 151. 151 • JobTracker  Divise le travail sur les Mappers et Reducers, s’exécutant sur les différents nœuds • TaskTracker  S’exécute sur chacun des nœuds pour exécuter les vraies tâches de Map- Reduce  Choisit en général de traiter (Map ou Reduce) un bloc sur la même machine que lui  S’il est déjà occupé, la tâche revient à un autre tracker, qui utilisera le réseau (rare) Démons MapReduce V1 (MRv1)
  • 152. 152 • Un job Map-Reduce (ou une Application Map-Reduce) est divisé sur plusieurs tâches appelées mappers et reducers • Chaque tâche est exécutée sur un nœud du cluster • Chaque nœud a un certain nombre de slots prédéfinis:  Map Slots  Reduce Slots • Un slot est une unité d’exécution qui représente la capacité du task tracker à exécuter une tâche (map ou reduce) individuellement, à un moment donné • Le Job Tracker se charge à la fois:  D’allouer les ressources (mémoire, CPU…) aux différentes tâches  De coordonner l’exécution des jobs Map-Reduce  De réserver et ordonnancer les slots, et de gérer les fautes en réallouant les slots au besoin Fonctionnement MapReduce V1 (MRv1)
  • 153. • Le Job Tracker s’exécute sur une seule machine, et fait plusieurs tâches (gestion de ressources, ordonnancement et monitoring des tâches…)  Problème de scalabilité: les nombreux datanodes existants ne sont pas exploités, et le nombre de noeuds par cluster limité à 4000 • Si le Job Tracker tombe en panne, tous les jobs doivent redémarrer  Problème de disponibilité: • Le nombre de map slots et de reduce slots est prédéfini  Problème d’exploitation: si on a plusieurs map jobs à exécuter, et que les map slots sont pleins, les reduce slots ne peuvent pas être utilisés, et vice- versa • Le Job Tracker est fortement intégré à Map Reduce  Problème d’interoperabilité: impossible d’exécuter des applications non- MapReduce sur HDFS 153 Problémes MapReduce V1 (MRv1)
  • 154. MapReduce V2 (MRv2) Composants • MapReduce v2 sépare la gestion des ressources de celle des tâches MR • Pas de notion de slots:  les nœuds ont des ressources (CPU, mémoire..) allouées aux applications à la demande • Définition de nouveaux démons  La plupart des fonctionnalités du Job Tracker sont déplacées vers l'Application Master  Un cluster peut avoir plusieurs Application Masters • Support les applications MR et non-MR MapReduce 2 MR API Framework YARN Resource Management YARN API 154
  • 155. YARN (Yet Another Resource Negociator) est un mécanisme permettant de gérer des travaux (jobs) sur un cluster de machines. YARN permet aux utilisateurs de lancer des jobs Map-Reduce sur des données présentes dans HDFS, et de suivre (monitor) leur avancement, récupérer les messages (logs) affichés par les programmes. Éventuellement YARN peut déplacer un processus d’une machine à l’autre en cas de défaillance ou d’avancement jugé trop lent. YARN est transparent pour l’utilisateur. On lance l’exécution d’un programme MapReduce et YARN fait en sorte qu’il soit exécuté le plus rapidement possible MapReduce V2 (MRv2) YARN
  • 156. Démons • Resource Manager (RM)  Tourne sur le nœud master  Ordonnanceur de ressources global  Permet l’arbitrage des ressources entre plusieurs applications • Node Manager (NM)  S’exécute sur les nœuds esclaves  Communique avec RM • Containers  Créés par RM à la demande  Se voit allouer des ressources sur le nœud esclave • Application Master (AM)  Un seul par application  S’exécute sur un container  Demande plusieurs containers pour exécuter les tâches de l’application Resource Manager Node Manager Application Master 1 GB 1 core 3 GB 1 core MapReduce V2 (MRv2)
  • 157. Lancement d’une Application dans un Cluster YARN Resource Manager Node Manager 1 Lance application MyApp Node Manager Node Manager Client Déclenche 2 Application Master 157 Node Manager MapReduce V2 (MRv2)
  • 158. Lancement d’une Application dans un Cluster YARN Resource Manager Node Manager Node Manager Node Manager Node Manager Clie nt Demande Ressources 3 Allocation 4 Allocation 4 5 IDs Containers 158 Application Master MapReduce V2 (MRv2)
  • 159. Lancement d’une Application dans un Cluster YARN Resource Manager Node Manager Node Manager MyApp Node Manager Node Manager Clie nt Application Master 6 MyApp Déclenche 6 Déclenche 6 15 MapReduce V2 (MRv2)
  • 160. Lancement d’une Application dans un Cluster YARN Resource Manager Node Manager YourApp Node Manager Node Manager MyApp Clie nt Application Master MyApp Clie nt Application Master 160 Node Manager MapReduce V2 (MRv2)
  • 161. Lancement d’une Application dans un Cluster YARN Resource Manager Node Manager YourApp Node Manager Node Manager Node Manager MyApp Client Application Master MyApp Client Application Master YourApp 161 MapReduce V2 (MRv2)
  • 162. 162 Exécution d’un Job Map-Reduce Resource Manager Node Manager Node Manager Node Manager Node Manager Clie nt myData Block1 DataNode Block2 DataNode DataNode DataNode WordCount Déclenche Application Master MapReduce V2 (MRv2)
  • 163. 163 Exécution d’un Job Map-Reduce Resource Manager Node Manager Node Manager Node Manager Node Manager Clie nt myData Block1 Block2 DataNode DataNode DataNode DataNode Demande Ressources (Mappers) Application Master Allocation MapReduce V2 (MRv2)
  • 164. Exécution d’un Job Map-Reduce Resource Manager Node Manager WordCount Map Task Node Manager WordCount Map Task Node Manager Node Manager Client myData Block1 DataNode Block2 DataNode DataNode DataNode Application Master 32 MapReduce V2 (MRv2)
  • 165. 165 Exécution d’un Job Map-Reduce Resource Manager Node Manager Node Manager WordCount Map Task Node Manager Node Manager Client myData Block1 DataNode Block2 DataNode DataNode DataNode Application Master WordCount Map Task Demande Ressources (Reducers) Allocation MapReduce V2 (MRv2)
  • 166. 166 Exécution d’un Job Map-Reduce Resource Manager Node Manager Node Manager Node Manager Node Manager Client myData Block1 Block2 DataNode DataNode DataNode DataNode Application Master WordCount ReduceTask WordCount ReduceTask MapReduce V2 (MRv2)
  • 168. ● Pour exécuter un problème large de manière distribué, il faut: - Le découper en plusieurs problèmes de taille réduite à exécuter sur chaque machine (diviser pour régner). ● De multiples approches existent et ont existé pour cette division d'un problème en plusieurs « sous-tâches ». ● MapReduce est un paradigme (un modèle) visant à généraliser les approches existantes pour produire une approche unique applicable à tous les problèmes. ● MapReduce existait déjà depuis longtemps, - dans les langages fonctionnels (Lisp, Scheme), mais la présentation du paradigme sous une forme - Google en 2004 a Google publié en 2004 whitepaper (« MapReduce: Simplified Data Processing on Large Clusters »). Où il la presenter le MapReduce généralisable à tous les problèmes et orientée calcul distribué est Large Clusters »). Présentation 168
  • 169. MapReduce définit deux opérations distinctes à effectuer sur les données d'entrée: ● MAP: va transformer les données d'entrée en une série de couples clef/valeur. Elle va regrouper les données en les associant à des clefs, choisies de telle sorte que les couples clef/valeur aient un sens par rapport au problème à résoudre. ● La seconde, REDUCE, va appliquer un traitement à toutes les valeurs de chacune des clefs distinctes produite par l'opération MAP. Au terme de l'opération REDUCE, on aura un résultat pour chacune des clefs distinctes. Présentation 169
  • 170. On distingue donc 4 étapes distinctes dans un traitement MapReduce: ● Découper (split) les données d'entrée en plusieurs fragments. ● Mapper chacun de ces fragments pour obtenir des couples (clef ; valeur). ● Grouper (shuffle) ces couples (clef ; valeur) par clef. ● Réduire (reduce) les groupes indexés par clef en une forme finale, avec une valeur pour chacune des clefs distinctes. En modélisant le problème à résoudre de la sorte, on le rend parallélisable – chacune de ces tâches à l'exception de la première seront effectuées de manière distribuée. Présentation 170
  • 171. Pour résoudre un problème via la méthodologie MapReduce avec Hadoop, on devra donc: ● Choisir une manière de découper les données d'entrée de telle sorte que l'opération MAP soit parallélisable. ● Définir quelle CLEF utiliser pour notre problème. ● Écrire le programme pour l'opération MAP. ● Ecrire le programme pour l'opération REDUCE. … et Hadoop se chargera du reste (problématiques calcul distribué, groupement par clef distincte entre MAP et REDUCE, etc.). Présentation 171
  • 172. Exemple concret Imaginons que vous ayez plusieurs magasins que vous gérez à travers le monde • Un très grand livre de comptes contenant TOUTES les ventes • Supposons que les lignes du livres ont la forme : Jour ; Ville ; produit; Prix • Objectif : Calculer le total des ventes par magasin pour l’année 2016 Jour Ville produit Prix 2016--‐01--‐01 London Clothes 25.99 2016--‐01--‐01 Miami Music 12.15 2016--‐01--‐02 Casa Toys 3.10 2016--‐01--‐02 Miami Clothes 50.00 172
  • 173. Possibilité : o Pour chaque entrée, saisir la ville et le prix de vente o Si on trouve une entrée avec une ville déjà saisie, on les regroupe en faisant la somme des ventes Dans un environnement de calcul traditionnel, on utilise généralement des Hashtables, sous forme de: o Clef Valeur Dans notre cas, la clef serait l’adresse du magasin, et la valeur le total des ventes. 2016--‐01--‐01 London Clothes 25.99 2016--‐01--‐01 Miami Music 12.15 2016--‐01--‐02 Casa Toys 3.10 2016--‐01--‐02 Miami Clothes 50.00 London 25.99 Miami 12.15 Casa 3.10 London 25.99 Miami 62.15 Casa 3.10 173
  • 174. Si on utilise les hashtables sur 1To, Problèmes ?  Ça ne marchera pas ?  Problème de mémoire ?  Temps de traitement long ?  Réponses erronées ? Le traitement séquentiel de toutes les données peut s’avérer très long  Plus on a de magasins, plus l’ajout des valeurs à la table est long  Il est possible de tomber à court de mémoire pour enregistrer cette table  Mais cela peut marcher, et le résultat sera correct 2016--‐01--‐01 London Clothes 25.99 2016--‐01--‐01 Miami Music 12.15 2016--‐01--‐02 Casa Toys 3.10 2016--‐01--‐02 Miami Clothes 50.00 London 25.99 Miami 12.15 Casa 3.10 London 25.99 Miami 62.15 Casa 3.10 174
  • 175. Map-Reduce : Moyen plus efficace et rapide de traiter ces données  Au lieu d’avoir une seule personne qui parcourt le livre, si on en recrutait plusieurs? Appeler un premier groupe les Mappers et un autre les Reducers Diviser le livre en plusieurs parties, et en donner une à chaque Mapper Les Mappers peuvent travailler en même temps, chacun sur une partie des données Mappers Reducers 175
  • 176. Map-R educe Miami L. A. N.Y.C N.Y.C. N.Y.C. Miami L. A. Miami Miami L. A. L. A. N.Y.C N.Y.C N.Y.C $300,578 $603.768 $432.900 Mappers Pour chaque entrée, saisir la ville, et le total des ventes et les enregistrer dans une fiche  Rassembler les fiches du même magasin dans une même pile Reducers  Chaque Reducer sera responsable d’un ensemble de magasins  Ils collectent les fiches qui leur sont associées des différents Mappers  Ils regroupent les petites piles d’une même ville en une seule  Ils parcourent ensuite chaque pile par ordre alphabétique des villes (L.A avant Miami), et font la somme de l’ensemble desenregistrements Reducers Mappers 176
  • 177. Mappers Le code de notre opération MAP sera donc (ici en pseudo code): POUR CHAQUE LIGNE, FAIRE: GENERER COUPLE (VILLE ; PRIX ) (London ; 25.99) (Miami; 12.15) (Casa ; 3.10) (Miami ;50.00) (London ; 33.60) (Paris ;40.80) (NY ; 16.20) (Casa; 15.10) …. (Paris ;10.0) Pour chacun de nos fragments, les couples (clef; valeur) générés seront donc: 177
  • 178. Une fois notre opération MAP effectuée (de manière distribuée), Hadoop groupera (shuffle) tous les couples par clef commune. Cette opération est effectuée automatiquement par Hadoop. Elle est, là aussi, effectuée de manière distribuée en utilisant un algorithme de tri distribué, de manière récursive. Après son exécution, on obtiendra les groupes de couple suivants: (Casa ; 3.10 ) (Casa; 15.10) (London ; 25.99) (London ; 33.60) (Miami; 12.15) (Miami ;50.00) (NY ; 16.20) (NY ; 6.0) (Paris ;40.80) (Paris ;10.0) …. 178
  • 179. Il nous reste à créer notre opération REDUCE, qui sera appelée pour chacun des groupes/clef distincte. Dans notre cas, elle va simplement consister à additionner toutes les valeurs liées à la clef spécifiée: TOTAL=0 POUR COUPLE dans GROUPE, FAIRE: TOTAL=TOTAL+ COUPLE [2] RENVOYER TOTAL 179
  • 180. Une fois l'opération REDUCE effectuée, on obtiendra donc une valeur unique pour chaque clef distincte. En l’occurrence, notre résultat sera: (Casa ; 18.20 ) (London ; 59.59) (Miami; 62.15) (NY ; 22.20) (Paris ;50.80) …. L’intérêt du modèle MapReduce : -Il suffit de développer les deux opérations du traitement: MAP et REDUCE, - Et de bénéficier automatiquement de la possibilité d'effectuer le traitement sur un nombre variable de machines de manière distribuée. 180
  • 181. Données d’entrée 2016--‐01--‐01 London Clothes 25.99 2016--‐01--‐01 Miami Music 12.15 2016--‐01--‐02 Casa Toys 3.10 2016--‐01--‐04 Casa Music 15.10 …. …. 2016--‐01--‐31 Paris Clothes 10.0 2016--‐01--‐02 Miami Clothes 50.00 2016--‐01--‐03 Paris Toys 40.80 2016--‐01--‐03 NY Music 16.20 …. (Paris ;10.0) (Miami ;50.00) (Paris ;40.80) (NY ; 16.20) (London ; 25.99) (Miami; 12.15) (Casa ; 3.10) (Casa; 15.10) … 2016--‐01--‐01 London Clothes 25.99 2016--‐01--‐01 Miami Music 12.15 2016--‐01--‐02 Casa Toys 3.10 2016--‐01--‐02 Miami Clothes 50.00 2016--‐01--‐03 Paris Toys 40.80 2016--‐01--‐03 NY Music 16.20 2016--‐01--‐04 Casa Music 15.10 …. 2016--‐01--‐31 Paris Clothes 10.0 Spliting (fragmentation) MAP Paris ;40.80) (Paris ;10.0) (London ; 25.99) (London ; 33.60) (Casa ; 3.10) (Casa; 15.10) (Miami; 12.15) (Miami ;50.00) Shuflling Méllange/trie (Paris ;50.80) (London ; 59.59) (Casa ; 18.20) (Miami ;62.15) REDUCE (NY ; 16.20) (NY ; 6.0) (NY ; 22.20) Casa ; 18.20 London ; 59.59) Miami; 62.15) NY ; 22.20) Paris ;50.80) 181
  • 182. Un autre exemple: on souhaite compter le nombre de visiteurs sur chacune des pages d'un site Internet. On dispose des fichiers de logs sous la forme suivante: Ici, notre clef sera par exemple l'URL d’accès à la page, et nos opérations MAP et REDUCE seront exactement les mêmes que celles qui viennent d'être présentées: on obtiendra ainsi le nombre de vue pour chaque page distincte du site. /index.html [19/Oct/2015:18:45:03] /news.php?id=18 [20/Oct/2016:15:00:34] /contact.html [19/Oct/2016:18:46:15] /news.php?id=5 [24/Oct/2016:18:13:02] /news.php?id=4 [24/Oct/2016:18:13:12] /news.php?id=18 [24/Oct/2016:18:14:31] /index.html [19/Oct/2016:23:45:03] /contact.html [23/Oct/2016:10:06:33] ...etc... 182
  • 183. Exercice 1 : Écrire le pseudo code des deux fonctions MAP et REDUCE pour calculer le nombre d’occurrences des mots dans un livre (texte) procéder par ligne Exercice 2 : Dans un réseau social, On souhaite afficher quand un utilisateur va sur la page d'un autre utilisateur une indication « Vous avez N amis en commun ». On va donc développer des programmes MAP et REDUCE pour cette opération. Les données d’entrer se présentent sous la formes suivante: A est amis de B,C, D . B est amis de A, C, D et E et ainsi de suite A => B, C, D B => A, C, D, E C => A, B, D, E D => A, B, C, E E => B, C, D 183
  • 184. MapReduce v1 intègre trois composants • API Pour permettre au programmeur l’écriture d’applications MapReduce • Framework Services permettant l’exécution des Jobs MapReduce, le Shuffle/Sort… • Resource Management Infrastructure pour gérer les noeuds du cluster, allouer des ressources et ordonnancer les jobs Composants MapReduce V1 (MRv1) API Framework Resource Management MapReduce V1 184
  • 185. 185 MapReduce V1 (MRv1) Composants MapReduce v1 intègre trois composants • API  Pour permettre au programmeur l’écriture d’applications MapReduce • Framework  Services permettant l’exécution des Jobs MapReduce, le Shuffle/Sort… • Resource Management  Infrastructure pour gérer les noeuds du cluster, allouer des ressources et ordonnancer les jobs MapReduce 1 API Framework Resource Management
  • 186. MapReduce V1 (MRv1) Démons 186 • JobTracker  Divise le travail sur les Mappers et Reducers, s’exécutant sur les différents nœuds • TaskTracker  S’exécute sur chacun des nœuds pour exécuter les vraies tâches de Map- Reduce  Choisit en général de traiter (Map ou Reduce) un bloc sur la même machine que lui  S’il est déjà occupé, la tâche revient à un autre tracker, qui utilisera le réseau (rare)
  • 187. MapReduce V1 (MRv1) 187 Fonctionnement • Un job Map-Reduce (ou une Application Map-Reduce) est divisé sur plusieurs tâches appelées mappers et reducers • Chaque tâche est exécutée sur un nœud du cluster • Chaque nœud a un certain nombre de slots prédéfinis:  Map Slots  Reduce Slots • Un slot est une unité d’exécution qui représente la capacité du task tracker à exécuter une tâche (map ou reduce) individuellement, à un moment donné • Le Job Tracker se charge à la fois:  D’allouer les ressources (mémoire, CPU…) aux différentes tâches  De coordonner l’exécution des jobs Map-Reduce  De réserver et ordonnancer les slots, et de gérer les fautes en réallouant les slots au besoin
  • 188. MapReduce V1 (MRv1) Problèmes • Le Job Tracker s’exécute sur une seule machine, et fait plusieurs tâches (gestion de ressources, ordonnancement et monitoring des tâches…)  Problème de scalabilité: les nombreux datanodes existants ne sont pas exploités, et le nombre de noeuds par cluster limité à 4000 • Si le Job Tracker tombe en panne, tous les jobs doivent redémarrer  Problème de disponibilité: SPoF • Le nombre de map slots et de reduce slots est prédéfini  Problème d’exploitation: si on a plusieurs map jobs à exécuter, et que les map slots sont pleins, les reduce slots ne peuvent pas être utilisés, et vice- versa • Le Job Tracker est fortement intégré à Map Reduce  Problème d’interoperabilité: impossible d’exécuter des applications non- MapReduce sur HDFS 188
  • 189. MapReduce V2 (MRv2) Composants • MapReduce v2 sépare la gestion des ressources de celle des tâches MR • Pas de notion de slots:  les nœuds ont des ressources (CPU, mémoire..) allouées aux applications à la demande • Définition de nouveaux démons  La plupart des fonctionnalités du Job Tracker sont déplacées vers le Application Master  Un cluster peut avoir plusieurs Application Masters • Support les applications MR et non-MR MapReduce 2 MRAPI Framework YARN Resource Management YARNAPI 189
  • 190. 1.4.1. Qu’est-ce que YARN ? YARN (Yet Another Resource Negociator) est un mécanisme permettant de gérer des travaux (jobs) sur un cluster de machines. YARN permet aux utilisateurs de lancer des jobs Map-Reduce sur des données présentes dans HDFS, et de suivre (monitor) leur avancement, récupérer les messages (logs) affichés par les programmes. Éventuellement YARN peut déplacer un processus d’une machine à l’autre en cas de défaillance ou d’avancement jugé trop lent. En fait, YARN est transparent pour l’utilisateur. On lance l’exécution d’un programme MapReduce et YARN fait en sorte qu’il soit exécuté le plus rapidement possible
  • 191. MapReduce V2 (MRv2) Démons • Resource Manager (RM)  Tourne sur le nœud master  Ordonnanceur de ressources global  Permet l’arbitrage des ressources entre plusieurs applications • Node Manager (NM)  S’exécute sur les nœuds esclaves  Communique avec RM • Containers  Créés par RM à la demande  Se voit allouer des ressources sur le nœud esclave • Application Master (AM)  Un seul par application  S’exécute sur un container  Demande plusieurs containers pour exécuter les tâches de l’application Resource Manager Node Manager Application Master 1 GB 1 core 3 GB 1 core 191
  • 192. MapReduce V2 (MRv2) Lancement d’une Application dans un Cluster YARN Resource Manager Node Manager 1 Lance application MyApp Node Manager Node Manager Client Déclenche 2 Application Master 192 Node Manager
  • 193. MapReduce V2 (MRv2) Lancement d’une Application dans un Cluster YARN Resource Manager Node Manager Node Manager Node Manager Node Manager Clie nt Demande Ressources 3 Allocation 4 Allocation 4 5 IDs Containers 193 Application Master
  • 194. MapReduce V2 (MRv2) Lancement d’une Application dans un Cluster YARN Resource Manager Node Manager Node Manager MyApp Node Manager Node Manager Clie nt Application Master 6 MyApp Déclenche 6 Déclenche 6 19
  • 195. MapReduce V2 (MRv2) Lancement d’une Application dans un Cluster YARN Resource Manager Node Manager YourApp Node Manager Node Manager MyApp Clie nt Application Master MyApp Clie nt Application Master 195 Node Manager
  • 196. MapReduce V2 (MRv2) Lancement d’une Application dans un Cluster YARN Resource Manager Node Manager YourApp Node Manager Node Manager Node Manager MyApp Client Application Master MyApp Client Application Master YourApp 196
  • 197. 197 MapReduce V2 (MRv2) Exécution d’un Job Map-Reduce Resource Manager Node Manager Node Manager Node Manager Node Manager Clie nt myData Block1 DataNode Block2 DataNode DataNode DataNode WordCount Déclenche Application Master
  • 198. 198 MapReduce V2 (MRv2) Exécution d’un Job Map-Reduce Resource Manager Node Manager Node Manager Node Manager Node Manager Clie nt myData Block1 Block2 DataNode DataNode DataNode DataNode Demande Ressources (Mappers) Application Master Allocation
  • 199. MapReduce V2 (MRv2) Exécution d’un Job Map-Reduce Resource Manager Node Manager WordCount Map Task Node Manager WordCount Map Task Node Manager Node Manager Client myData Block1 DataNode Block2 DataNode DataNode DataNode Application Master 32
  • 200. 200 MapReduce V2 (MRv2) Exécution d’un Job Map-Reduce Resource Manager Node Manager Node Manager WordCount Map Task Node Manager Node Manager Client myData Block1 DataNode Block2 DataNode DataNode DataNode Application Master WordCount Map Task Demande Ressources (Reducers) Allocation
  • 201. 201 MapReduce V2 (MRv2) Exécution d’un Job Map-Reduce Resource Manager Node Manager Node Manager Node Manager Node Manager Client myData Block1 Block2 DataNode DataNode DataNode DataNode Application Master WordCount ReduceTask WordCount ReduceTask