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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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