Vous êtes sur la page 1sur 20

3ème année cycle d’ingénieur

Ingénierie Informatique et Technologies Emergentes (2ITE)

Gestion et Traitement
BIG DATA

Prof. HANINE Mohamed


Laboratoire Télécommunications, Réseaux et Informatique (TRI)
ENSA Eljadida, Université Chouaib Doukkali, Maroc
Email: m.hanine.ensaj@gmail.com Année universitaire 2020/2021
Planning de Semestre
• Séance 1 : Introduction au BIG DATA
• Séance 2 : Hadoop + TP 1 : Installation + Manipulation HDFS
• Séance 3 : Hadoop + TP 2 : Solution Cloudera + MapReduce (en Java)
• Séance 4 : Hadoop + TP 3 : Solution HortonWorks + MapReduce ( en Python)
• Séance 5 : Rappel sur Mongodb +MapReduce avec MongoDB et/ou Scala + TP 4
• Séance 6 : Contrôle mi-semestre (Théorique et Pratique)
• Séance 7 : Rappel sur NoSql+ HBase + TP 5
• Séance 8 : PIG + TP 6
• Séance 9 : HIVE + TP 7
• Séance 10 :Exposés + Mini Projet
Examen Final

Année universitaire 2020/2021


MongoDB- Rappel
• MongoDB fait partie d'une catégorie de systèmes de gestion de bases de données qu'on
désigne sous le terme NoSQL.
• MongoDB stocke les données sous la forme de documents au format variable mais
structuré (généralement JSON ou XML)
• Des APIs sont disponibles pour de nombreux langages: C/C++, Java, Python, PHP,
PigLatin…

Année universitaire 2020/2021


MongoDB- Rappel
• Un connecteur Hadoop est par ailleurs disponible; permettant de lire les
données d'entrée d'un programme Hadoop directement depuis MongoDB, et
d'écrire les résultats d'un tel programme directement dans MongoDB
également.
• Les documents sont par ailleurs insérés au sein de collections. Il s'agit de
groupes de documents, généralement similaires.

Année universitaire 2020/2021


Architecture de MongoDB -Rappel

• MongoDB a deux propriétés importantes en terme d'architecture interne:


• Il peut être répliqué, pour éviter toute perte de données (Réplicat Set).
• Il est extrêmement scalable, par le biais d'une approche qu'on appelle le sharding.

Année universitaire 2020/2021


Stratégies de Réplication -Rappel
• Définition d’un Replicat Set: groupe de processus mongod qui fournit la redondance et la
haute disponibilité
• Types de membres dans un replicat set:
• Primaire: Reçoit toutes les opérations d’écriture
• Secondaire: réplication des opérations du primaire pour maintenir des répliques identiques à
l’original
• Arbitre: ne conserve pas de copie de la donnée, mais joue un rôle dans les élections qui
sélectionnent un membre primaire, si le primaire actuel est indisponible

Architecture d'un ReplicaSet

Année universitaire 2020/2021


Stratégies de Réplication
• Primaire
• Seul membre qui reçoit les opérations d’écriture
• MongoDB applique les opérations d’écriture sur le primaire, puis les enregistre dans son log (oplog)
• Les membres secondaires dupliquent ce log et appliquent les opérations sur leurs données
• Tous les membres d’un replicat set peuvent accepter une opération de lecture
• Par défaut, une application dirige ces opérations vers le primaire
• Un replicat set a au plus un primaire
• Si le primaire tombe en panne, une élection a lieu pour en choisir un autre

Année universitaire 2020/2021


Stratégies de Réplication
• Secondaires
• Maintiennent une copie des données du primaire
• Pour répliquer les données, un secondaire applique les opérations du oplog du primaire sur ses propres
données, de manière asynchrone
• Un replicat set peut avoir un ou plusieurs secondaires
• Même si les clients ne peuvent pas écrire des données sur les secondaires, ils peuvent en lire
• Un secondaire peut devenir un primaire, suite à une élection
• Il est possible de configurer un secondaire :
• L’empêcher d’être élu pour devenir primaire, lui permettant de rester toujours comme un backup
• Empêcher les applications de lire à partir de lui, lui permettant ainsi de se consacrer à certaines
applications nécessitant un trafic séparé
• Exécuter des snapshots périodiques pour garder un historique

Année universitaire 2020/2021


Stratégies de Réplication

• Arbitre
• N’a pas de copie des données et ne peut pas devenir un primaire
• Permet de voter pour un primaire
• Doit être défini pour les replicat sets avec un nombre pair de membres

Année universitaire 2020/2021


• Élections Stratégies de Réplication
• Ont lieu à la création d’un replicat set, ou bien quand un primaire devient
indisponible
• Processus qui prend du temps, et qui rend le replicat set en readonly
• Chaque membre a une priorité déterminant son éligibilité à devenir primaire
• L’élection choisit le membre ayant la plus haute priorité comme primaire
• Par défaut, tous les membres ont la même priorité (1)
• Il est possible de modifier la priorité d’un membre ou groupe,
selon leur position géographique par exemple
• Chaque membre a la possibilité de voter pour un seul autre membre
• Le membre recevant le plus grand nombre de votes devient primaire

Année universitaire 2020/2021


Distribution des données avec MongoDB: Sharding
• MongoDB utilise la notion de Sharding (ou horizontal scaling ou scale out) pour stocker ses
données dans le cluster
• Division des données et leur distribution entre plusieurs serveurs ou shards
• Chaque shard est une base indépendante, et mis ensemble, forment une seule base de données logique
• Réduction du nombre d’opérations que chaque machine gère
• Chaque machine gère les données qui y sont stockées
• Réduction de la quantité de données que le serveur a besoin de stocker
• Plus le cluster grandit, moins un serveur contient de données

Année universitaire 2020/2021


Distribution des données avec MongoDB: Sharding
• Query Routers
• Instances mongos
• Interfaçage avec les applications clientes
• Redirige les opérations vers le shard approprié et retourne le résultat au client
• Plusieurs QR pour la répartition des tâches
• Shards
• Stockent les données
• Les données sont distribuées et répliquées sur les shards
• Config Servers
• Stockent les méta-données du cluster
• Définissent le mapping entre les data et les shards

NB: La composition minimum d’un cluster est de 2 mongos, 3 Config Servers et 2 shards.

Année universitaire 2020/2021


Distribution des données avec MongoDB: Sharding
• Partitionnement des Données
Un partitionnement se fait toujours en fonction d’une clé (shard key), donc la première décision à
faire c’est le choix de la clé.
• Champ simple ou composé indexé qui existe dans chaque document de la collection
• MongoDB divise les valeurs de la clef en morceaux (chunks) et les distribuent de manière
équitable entre les shards
• La répartition des clefs suit l’une de ces deux méthodes de partitionnement:
• Basée sur le rang (Partitionnement par intervalle)
• Basée sur le Hash (Partitionnement par hachage)

Année universitaire 2020/2021


Distribution des données avec MongoDB: Sharding
Partitionnement des Données par intervalle (Rang)
• Définition d’intervalles qui ne se chevauchent pas, dans lesquelles les valeurs de la shard key
peuvent se trouver
• Permet aux documents avec des clefs proches de se trouver dans le même shard
• Plus facile de retrouver le shard pour une donnée
• Risque de distribution non équitable des données (par exemple si la clef est le temps, alors toutes
les requêtes dans un même intervalle de temps sont sur le même serveur, d’où une grande
différence selon les heures de grande ou de faible activité)
Distribution des données avec MongoDB: Sharding
Partitionnement des Données par hachage (Hash)
• Calcul de la valeur du hash d’un champ, puis utilise ces hash pour créer des partitions
• Deux documents ayant des clefs proches ont peu de chance de se trouver dans le même shard
• Distribution aléatoire d’une collection dans le cluster, d’où une distribution plus équitable
• Moins efficace, car le temps de recherche de la donnée est plus grand
• Dans le cas d’une requête portant sur des données se trouvant dans un intervalle défini, le
système doit parcourir plusieurs shards

Année universitaire 2020/2021


MongoDB- Fonction MapReduce
• Au delà des points d'intégration Hadoop qui vont être abordés par la suite, MongoDB
possède également une fonction mapReduce() interne.
• Elle est relativement limitée (essentiellement par le type de traitement qu'on peut effectuer
sur les données), mais peut avoir son utilité.
• Sa syntaxe est la suivante:
db.COLLECTION.mapReduce(
FONCTION_MAP,
FONCTION_REDUCE,
{query:{CONDITIONS}, Optionnel
out: "NOM_SORTIE" ,
sort: "document" ,
limit: "number"}
)
Année universitaire 2020/2021
MongoDB- Fonction MapReduce
• Imaginons qu'on ait par exemple une collection « Orders»; contenant les documents
suivants:

• Calculer le totaux des commandes ayant comme status « A » pour chaque client

Année universitaire 2020/2021


MongoDB- Fonction MapReduce
• On va exécuter la commande suivante:

Année universitaire 2020/2021


MongoDB- Fonction MapReduce
• Le traitement et son résultat:

Année universitaire 2020/2021


Questions
• Map-Reduce de Hadoop vs Map reduce de MongoDB.
Quels sont les avantages et les inconvénients de chaque solution ?

• Présentation: MapReduce en langage R et le RHadoop

Vous aimerez peut-être aussi