Donc, cette thèse va étudier la programmation en MapReduce avec Hadoop pour modélisation des textes en modèle d’espace vectoriel et le modèle de fréquence sur la base de nuage informatiq
Trang 1Département de Technologie de logiciel
Faculté des Technologies de l’information
Mémoire présenté pour l’obtention du diplôme d’ingénieur en informatique
Juillet 2013
NGUYEN Ngoc Thanh, 2013
Trang 3Tuteur: Prof.TRẦN Cao Đệ - Auteur: NGUYỄN Ngọc Thành
de MapReduce et faire élastiquement le groupe des ordinateurs d’Hadoop Donc, cette thèse va étudier la programmation en MapReduce avec Hadoop pour modélisation des textes en modèle d’espace vectoriel et le modèle de fréquence sur
la base de nuage informatique d’Openstack et le projet de Savanna
Mots – Clés : modélisation des textes, modèle d’espace vectoriel, modèle
de fréquence, MapReduce, Hadoop, nuage informatique, Openstack, Savanna Openstack
Trang 4ABSTRACT
Text modeling is a preprocessing step which is very important in different domains such as textual data exploitation and natural language processing Currently, there are many models for the text modeling We can see now some models such as vector space model and frequency model that are simple and efficient However, in the era of big data, we can’t realize the modeling of texts with the sequent processing The large data processing exceeds a capacity of a computer and requires a cluster of computers, means organizing a computation on tens, hundreds or thousands of computers Therefore, distributed processing models become very important Typically, that is the MapReduce model and an actual installation is Hadoop In addition, the Openstack and Savanna project open source cloud operating system will optimize hardware resources and elasticize the Hadoop cluster of computers This thesis will study the MapReduce programming model with Hadoop to model texts by the vector space model and the frequency model on the Openstack and Savanna project cloud computing basis
Keywords: text modeling, vector space model, frequency model,
MapReduce, Hadoop, cloud computing, Openstack, Savanna Openstack
Trang 5TABLE DES MATIÈRES
TABLE DES MATIÈRES 1
LISTE DE FIGURES 4
LISTE DES TABLEAUX 6
SYMBOLE ET ABRÉGEMENT DU MOT 7
REMERCIEMENTS 8
CHAPITRE 1 : GÉNÉRALITÉ 9
1.1 PROBLÉMATIQUE 9
1.2 RÉTROSPECTIVE DU PROBLÈME DE MODÉLISATION DES TEXTES 9
1.3 CONTENU DU PROBLÈME 10
1.4 OBJECTIF DU PROBLÈME 10
1.5 ÉCHELLE DU PROBLÈME 10
1.6 MÉTHODOLOGIE D’ÉTUDE ET SOLUTION 10
1.6.1 En théorie 10
1.6.2 En expérimentation 11
CHAPITRE 2 : THÉORIE DE BASE 12
2.1 MODÉLISATION DES TEXTES 12
2.2 MÉTHODES DE MODÉLISATION DES TEXTES EN VIETNAMIEN 12 2.2.1 Modèle logique 12
2.2.2 Modèle d’analyse syntaxique 13
2.2.3 Modèle d’espace vectoriel 14
2.2.4 Modèle Booléen 15
2.2.5 Modèle de fréquence 15
2.3 PROGRAMMATION EN MODÈLE DE MAPREDUCE 16
2.3.1 Idées principales de MapReduce 16
2.3.2 Principe de l’algorithme de MapReduce - Diviser pour mieux régner18 2.3.3 Origine de MapReduce 18
2.3.4 Structure de donnée dans MapReduce 19
2.3.5 Mapper et Reducer - Composants principaux de MapReduce 20
Trang 62.3.6 Partitioner et Combiner 21
2.3.7 Execution framework 22
2.3.8 Système de fichier distribué dans MapReduce 22
2.3.9 Principe de fonctionnement de MapReduce 23
2.4 CADRE D’HADOOP (HADOOP FRAMEWORK) 24
2.4.1 Introduction 24
2.4.2 Groupe des ordinateurs d’Hadoop (Hadoop Cluster) 24
2.4.3 Architecture d’HDFS 25
2.4.4 Modèle réalisé d’application de MapReduce dans Hadoop 26
2.5 NUAGE INFORMATIQUE 27
2.5.1 Concept 27
2.5.2 Point de vue sur le nuage informatique 27
2.5.3 Caractéristiques du nuage informatique 28
2.5.4 Avantage et Inconvénient du nuage informatique 29
2.5.5 Technologie virtuelle du nuage informatique 30
2.5.6 Modèles de service et de déploiement 31
2.6 SYSTÈME D’EXPLOITATION DE NUAGE DE SOURCE OUVERT D’OPENSTACK 34
2.6.1 L’infrastructure de calcul d’OpenStack (Nova) 35
2.6.2 Le service d’image d’OpenStack (Glance) 36
2.6.3 L’infrastructure de stockage d’OpenStack (Swift) 36
2.6.4 Le service d’identité d’OpenStack (Keystone) 37
2.6.5 L’interface administratif d’OpenStack (Horizon) 37
2.7 PROJET DE SAVANNA 37
2.7.1 Concept 37
2.7.2 Communication entre le projet de Savanna et les composants d’Openstack 38
2.7.3 Composants de l’architecture de Savanna 38
CHAPITRE 3 : SEGMENTATION EN MOTS ET DE MODÉLISATION DES TEXTES 40
3.1 INTRODUCTION 40
3.2 DES ÉTAPES POUR RÉALISER LE TRAVAIL DE MAPREDUCE 42
Trang 73.3 TRAVAIL DE MAPREDUCE 1 42
3.3.1 Problème à résoudre 42
3.3.2 Méthode à résoudre 42
3.4 TRAVAIL DE MAPREDUCE 2 46
3.4.1 Problème à résoudre 46
3.4.2 Méthode à résoudre 46
3.5 TRAVAIL DE MAPREDUCE 3 49
3.5.1 Problème à résoudre 49
3.5.2 Méthode à résoudre 49
3.6 INITIALISATION ET CONFIGURATION LE SYSTÈME D’EXPLOITATION DE NUAGE DE SOURCE OUVERT D’OPENSTACK ET LE PROJET DE SAVANNA POUR FONCTIONNER CE LOGICIEL 54
3.7 RÉSULTAT EXPÉRIMENTAL 56
3.7.1 Résultat expérimental de la segmentation des mots, des méthodes de suppression des mots arrêtés et de la modélisation des textes en modèle d’espace vectoriel 56
3.7.2 Résultat expérimental de la modélisation des textes avec un grand volume de donnée en modèle de programmation de MapReduce sur un groupe des ordinateurs d’Hadoop (Hadoop Cluster) 57
CHAPITRE 4 : CONCLUSION ET SUGGESTION DE DEVELOPPEMENT 59
4.1 RÉSULTAT OBTENU 59
4.1.1 En produit de logiciel 59
4.1.2 En connaissance obtenue 59
4.2 SUGGESTION DE DEVELOPPEMENT 60
RÉFÉRENCES 61
Trang 8LISTE DE FIGURES
Figure 2.2.3.1 : Des vecteurs de texte dans l’espace bidimensionnel 14
Figure 2.3.1.1: Scale « out », not « up » 17
Figure 2.3.2.1: Diviser pour mieux régner 18
Figure 2.3.3.1 : Modèle programmation fonctionnelle 19
Figure 2.3.5.1 : Deux composants Mapper et Reducer 20
Figure 2.3.6.1 : Deux composants Partitioner et Combiner 21
Figure 2.3.9.1: Principe de fonctionnement de MapReduce 23
Figure 2.4.2.1: Groupe des ordinateurs d’Hadoop (Hadoop Cluster) 24
Figure 2.4.3.1 : Architecture d’HDFS 25
Figure 2.4.4.1 : Modèle réalisé d’application de MapReduce dans Hadoop 26
Figure 2.5.1.1 : Nuage informatique 27
Figure 2.5.3.3.1 : Utilisation de ressource commune 28
Figure 2.5.5.1 : Technologie virtuelle du nuage informatique 30
Figure 2.5.5.2 : Technologie virtuelle de système d’exploitation 31
Figure 2.5.5.3 : Technologie virtuelle de matériel 31
Figure 2.5.6.1 : Modèles de service et de déploiement 31
Figure 2.5.6.1.1 : Trois modèles de service du nuage informatique 32
Figure 2.6.1 : Architecture d’Openstack 35
Figure 2.7.2.1 : Communication entre le projet de Savanna et les composants d’Openstack 38
Figure 2.7.3.1 : Composants de l’architecture de Savanna 39
Figure 3.1.1: Processus de la segmentation et modélisation des textes 40
Figure 3.1.2 : La modélisation des textes en modèle MapReduce 41
Figure 3.2.1 : Les étapes pour réaliser le travail de MapReduce 42
Figure 3.3.2.1 : Diagramme d’algorithme du travail de MapReduce 1 43
Figure 3.3.2.2.1 : Diagramme d’algorithme de Mapper 1 44
Figure 3.3.2.3.1 : Diagramme d’algorithme de Reducer 1 45
Figure 3.4.2.1 : Diagramme d’algorithme du travail de MapReduce 2 46
Figure 3.4.2.2.1 : Diagramme d’algorithme de Mapper 2 47
Figure 3.4.2.3.1 : Diagramme d’algorithme de Reducer 2 48
Trang 9Figure 3.5.2.1 : Diagramme d’algorithme du travail de MapReduce 3 50
Figure 3.5.2.1.1 : Diagramme d’algorithme de Mapper 3 50
Figure 3.5.2.3.1 : Diagramme d’algorithme de Reducer 3.1 52
Figure 3.5.2.3.1 : Diagramme d’algorithme de Reducer 3.2 53
Figure 3.6.1 : Modèle de nuage informatique pour fonctionner le logiciel 55
Figure 3.7.2.1 : Temps d’exécution de la modélisation des textes avec un grand volume de donnée sur un groupe des ordinateurs d’Hadoop 57
Trang 10LISTE DES TABLEAUX
Tableau 2.2.1.1: Modélisation en modèle logique 1 12
Tableau 2.2.1.2 : Modélisation en modèle logique 2 13
Tableau 2.2.2.1 : Modélisation en modèle d’analyse syntaxique 14
Tableau 2.2.3.1 : Modélisation en modèle d’espace vectoriel 14
Tableau 2.2.4.1 : Modélisation en modèle de Boolean 15
Figure 3.7.1.1: Résultat expérimental de la modélisation des textes 1 56
Figure 3.7.1.2 : Résultat expérimental de la modélisation des textes 2 56
Figure 3.7.1.3 : Résultat expérimental de la modélisation des textes 3 57
Figure 3.7.2.2 : Comparaison de temps d’exécution entre 58
Standalone Mode et Pseudo-Distributed Mode 58
Trang 11SYMBOLE ET ABRÉGEMENT DU MOT
API : Application Programming Interface
DF : Document Frequency
DFS : Distributed File System
GUI : Graphic User Interface
HDFS : Hadoop Distributed File System
HPC : High Performance Computing
IaaS : Infrastructure as a Service
IDF : Inverse Document Frequency
PaaS: Platform as a Service
Trang 12REMERCIEMENTS
Je tiens à exprimer mes sincères gratitudes à Monsieur TRAN Cao De, mon tuteur de thèse qui m’a fourni des nouvelles connaissances, m’a mobilisé et m’a aidé de tout cœur à résoudre des difficultés que j’ai rencontrées au cours de la réalisation de mon mémoire
Je tiens à remercier sincèrement Monsieur BUI Vo Quoc Bao qui m’a mobilisé et m’a aidé avec l’enthousiasme à résoudre des difficultés pour installer
un nuage informatique et des connaissances de réseaux concernés
Je remercie les professeurs de la faculté de Technologie d’Information et de Communication qui non seulement m’ont guidé avec l’enthousiasme dans mes études en informatique, mais m’ont donné des conseils précieux Grâce à leur aide,
je peux accomplir bien mon programme d’études en complétant ce mémoire Je les souhaite de la santé et du succès dans la vie
Je voudrais exprimer mes sincères gratitudes à mes parents qui m’ont éduqués et créé les meilleures conditions pour que je puisse étudier et cultiver mon vertu Ils m’ont encouragé à passer toutes les difficultés dans la vie
Mes remerciements vont à mes amis de ma classe J’ai une pensée pour vous et les années passées ensembles
Avec mes sincères remerciements
Trang 13
CHAPITRE 1 : GÉNÉRALITÉ
1.1 PROBLÉMATIQUE
De nos jours, avec le développement impétueux de la technologie de l’information et de l’Internet entraîne le nombre d’utilisateur d’Internet et d’ordinateur est de plus en plus élevé Et bien sûr, la conséquence de cela est un grand volume de données généré et pose des défis dans le stockage et le traitement
En effet, il y a beaucoup de problèmes de traitement de grandes données comme
la classification des textes, l’exploitation de donnée textuelle et le traitement de langue naturelle, dans lesquels il y a la modélisation des textes La modélisation des textes est une étape de prétraitement qui est très important, on ne peut pas résoudre les problèmes mentionnés ci-dessus s'il n'y a pas de modélisation des textes Actuellement, il y a beaucoup de modèles pour modélisation des textes Toutefois, le modèle d’espace vectoriel et le modèle de fréquence sont bien simples et efficaces Donc, la question posée est la construction d'un système automatique de modélisation des textes Cependant, on ne peut pas sauvegarder un très grand volume de donnée sur un seul disque dur et le traiter en manière de lecture/écriture séquentielle car il faut perdre beaucoup de temps C’est pourquoi,
on doit sauvegarder ce très grand volume de donnée sur beaucoup de disques durs
et le traiter parallèlement par beaucoup d’ordinateurs sur ces disques durs Alors,
ce mémoire va étudier le modèle de programmation de MapReduce et le cadre d’Hadoop pour résoudre de ce problème Mais, le cadre d’Hadoop est construit afin de déployer un groupe des ordinateurs qui est basé sur le matériel commun (commodity hardware) C’est pourquoi, l’endommagement est fréquent et on doit configurer le groupe des ordinateurs d’Hadoop à la main quand on ajouter un ordinateur à ce groupe Mais, tout est résolu si on déploie le groupe des ordinateurs d’Hadoop sur la plate-forme de nuage informatique Avec le nuage informatique,
on peut créer un groupe des ordinateurs virtuels d’Hadoop plutôt que un groupe des ordinateurs physiques d’Hadoop C’est pourquoi, l’endommagement est diminué En plus, on peut ajouter ou réduire des ordinateurs à sortir du groupe des ordinateurs d’Hadoop à la demande Cela est complètement élastique et automatique Donc, ce mémoire va aussi étudier le système d’exploitation de nuage de source ouvert d’OpenStack et le projet de Savanna afin de déployer un groupe des ordinateurs virtuels d’Hadoop pour modélisation des textes en modèle d’espace vectoriel et modèle de fréquence
1.2 RÉTROSPECTIVE DU PROBLÈME DE MODÉLISATION DES TEXTES
Maintenant, on utilise souvent des modèles représentés pour résoudre la plupart de problème concernant le texte Après des textes sont modelés, les textes deviennent une structure de données intuitive, simple et peut traiter C’est pourquoi, les modèles est de plus en plus développé En effet, il y a beaucoup de
Trang 14modèles représentés comme le modèle logique, le modèle d’analyse syntaxique, le modèle Booléen Les modèles représentés traditionnels comme le modèle d’espace vectoriel, le modèle de fréquence sont les plus populaire modèles Ces modèles sont très simples et efficaces, ils représentent des textes comme le vecteur caractéristique des termes qui apparaissent dans tous les textes Le poids de la caractéristique est calculé souvent par la mesure de TF*IDF En outre, il y a le nouveau modèle comme le modèle de graphique Ce modèle peut fournir des informations importantes comme l’ordre apparu des mots dans un texte, la position apparu des mots dans un texte qui sont ignorés dans le modèle d’espace vectoriel
1.3 CONTENU DU PROBLÈME
˗ L’ordre des étapes de modélisation des textes (segmentation des mots suppression des mots arrêtés (stop words) choix d’un modèle représenté pour modélisation des textes)
˗ Des méthodes pour suppression des mots arrêtés
˗ Des modèles représentés pour modélisation des textes
˗ Le traitement un très grand volume de donnée en modèle de MapReduce, cadre d’Hadoop
˗ La technologie de nuage informatique et l’application
˗ L’étude du système d’exploitation de nuage de source ouvert d’OpenStack
et le projet de Savanna
˗ La manière pour créer un nuage informatique privé
˗ La manière pour déployer un groupe des ordinateurs virtuels d’Hadoop sur
un nuage informatique privé
Trang 15+ Le modèle de programmation de MapReduce
+ Le cadre d’Hadoop pour créer un groupe des ordinateurs d’Hadoop + Le nuage informatique
+ Le système d’exploitation de nuage de source ouvert d’Openstack pour créer un nuage informatique privé afin de déployer ce groupe des ordinateurs virtuels d’Hadoop
1.6.2 En expérimentation
˗ Je dois faire :
+ Le prétraitement des textes
Utilisez le logiciel vnTokenizer pour segmentation des mots
Supprimez des mots arrêtés basés sur une liste de mots arrêtés Vietnamien
+ Installez l’algorithme TF-IDF pour suppression des mots d’arrêt (stop words)
+ La modélisation des textes
Installez l’algorithme de modélisation des textes en modèle d’espace vectoriel et du modèle de fréquence
+ Installation d’environnement fonctionné
Installez un nuage informatique privé en logiciel d’OpenStack
Installez un groupe des ordinateurs virtuels d’Hadoop en projet de Savanna
Trang 16CHAPITRE 2 : THÉORIE DE BASE
2.1 MODÉLISATION DES TEXTES
˗ C’est une étape de prétraitement important pour l’exploitation de donnée textuelle et le traitement de langue naturelle Modélisation des textes signifient à représenter un ensemble des textes sans structure en structure
de données intuitive, simple et peut traiter comme un vecteur, un graphique
… Après, il peut résoudre les problèmes mentionnées ci-dessus en l’utilisation des opérations sur ces structure de données intuitive Donc, la partie suivante va étudier les méthodes de modélisation des textes en vietnamien
2.2 MÉTHODES DE MODÉLISATION DES TEXTES EN VIETNAMIEN 2.2.1 Modèle logique
˗ Pour ce modèle, on dénombre des mots significatifs dans chaque texte Les mots significatifs sont les mots qui contiennent des informations principales
du texte sauvegardé et quand on voit ces mots, on peut connaître le sujet du texte
˗ Après ce travail, on a l’ensemble des mots significatifs des textes Ensuite, chaque mot significatif, on détermine son nombre ordinal de position apparu dans les textes contenus
˗ Par exemple, on a deux textes suivants : texte01.txt, texte02.txt
texte01.txt : « Cộng hòa xã hội chủ nghĩa Việt Nam » texte02.txt : « Đất nước Việt Nam »
˗ La modélisation des textes suivant :
Trang 17Texte
Mot significatif
Nom du texte et position apparu
Tableau 2.2.1.2 : Modélisation en modèle logique 2
(Document de référence : Luận văn tốt nghiệp – Nguyễn Việt Cường – Đại học Công Nghệ - Đại học Quốc Gia Hà Nội)
2.2.2 Modèle d’analyse syntaxique
˗ Dans ce modèle, chaque texte doit être analysé et renvoie des informations sur les sujets du texte Ensuite, on va indexer les sujets de chaque texte Les textes sont gérés via ces sujets
˗ Par exemple, on a deux textes : texte01.txt, texte02.txt
texte01.txt : « Cộng hòa xã hội chủ nghĩa Việt Nam » texte02.txt : « CNTT ngày càng phát triển »
˗ L’analyse syntaxique des textes suivant :
+ Supposé que :
texte01.txt parle de deux sujets : sujet « Société », sujet
« Politique »
Le sujet « Société » contient les mots : « xã hội »
Le sujet « Politique » contient les mots : « Cộng hòa », « chủ nghĩa »
texte02.txt parle de sujet : sujet « Technologie »
Le sujet « Technologie » contient les mots : « CNTT »
˗ La modélisation des textes suivant :
Trang 18Tableau 2.2.2.1 : Modélisation en modèle d’analyse syntaxique
(Document de référence : Luận văn tốt nghiệp – Nguyễn Việt Cường – Đại học Công Nghệ - Đại học Quốc Gia Hà Nội)
2.2.3 Modèle d’espace vectoriel
˗ Ce modèle est simple, efficace et le plus populaire modèle Dans ce modèle, chaque texte est modélisé en un vecteur Chaque composante du vecteur est
un mot-clé distinct dans l’ensemble de texte entré et est assigné une valeur
de fonction f pour montrer la densité apparu du mot dans le texte
Figure 2.2.3.1 : Des vecteurs de texte dans l’espace bidimensionnel
˗ Par exemple, supposons qu’un texte est modélisé par un vecteur V (v1, v2,…, vn) Là-dedans, vi est la fréquence du mot-clé ordinal i dans le texte
On a deux textes : texte01.txt, texte02.txt
texte01.txt : « CNTT ngày càng phát triển » texte02.txt : « Đất nước Việt Nam »
˗ La modélisation des textes est comme le suivant :
Tableau 2.2.3.1 : Modélisation en modèle d’espace vectoriel
˗ En plus, dans ce modèle, la relation entre des textes est calculée sur les vecteurs représentés donc c’est très efficace Spécialement, les recherches
texte 1
texte 2
texte 3
texte 4
Trang 19sur la relation «similaire» entre les sites web (une des relations les plus typiques entre les pages Web) sont basées sur la représentation du modèle vectoriel
(Document de référence : Luận văn tốt nghiệp – Nguyễn Việt Cường – Đại học Công Nghệ - Đại học Quốc Gia Hà Nội)
˗ Par exemple, on a deux textes : texte01.txt, texte02.txt
texte01.txt : « Tôi yêu quê hương » texte02.txt : « Đất nước Việt Nam »
˗ La modélisation des textes suivant :
Tableau 2.2.4.1 : Modélisation en modèle de Boolean
(Document de référence : Luận văn tốt nghiệp – Nguyễn Việt Cường – Đại học Công Nghệ - Đại học Quốc Gia Hà Nội)
2.2.5 Modèle de fréquence
Pour ce modèle, la matrice W = {w ij} est déterminée par plusieurs façons en basant
sur la fréquence de mots:
2.2.5.1 Méthode basée sur la fréquence des mots-clés (TF – Term Frequency)
w ij = fij
w ij = 1 + log (fij)
𝒘𝒊𝒋 = √𝒇𝒊𝒋
Trang 20Là-dedans, w ij est le poids du mot-clé t i dans le texte d j f ij est le nombre
d’occurrence du mot t i dans le texte d j
2.2.5.2 Méthode basée sur l’inverse de fréquence de texte (IDF – Inverse Document Frequency)
mot-˗ Le poids w ij représente l'importance du mot-clé t i dans le texte d j Si t i
apparaît dans moins de textes, cela signifie qu’il est important de distinguer
le texte d j avec les autres
2.2.5.3 Méthode TF*IDF
[𝟏 + 𝐥𝐨𝐠(𝒇𝒊𝒋)]𝐥𝐨𝐠(𝒎
𝒉𝒊) Si 𝒇𝒊𝒋 ≥ 𝟏 wij =
0 si inversement
C’est le modèle qui associe des bons points de la méthode TF et de la
méthode IDF Le poids w ij est calculé par le nombre d’occurrence du mot t i dans
le texte d j et la rare mesure du mot-clé ti dans l’ensemble de texte
(Document de référence : Luận văn tốt nghiệp – Nguyễn Việt Cường – Đại học Công Nghệ - Đại học Quốc Gia Hà Nội)
2.3 PROGRAMMATION EN MODÈLE DE MAPREDUCE
MapReduce est un modèle de programmation présenté par Google pour le traitement et la génération un ensemble de grande donnée sur des groupes des ordinateurs (clusters)
2.3.1 Idées principales de MapReduce
˗ Scale « out », not « up » (Élargissez pas de mise à niveau) : Pour augmenter
la capacité de traitement, on augmente souvent le nombre de serveurs usuels (low-end server) Donc, cette solution est plus économique car elle utilise les serveurs disponibles et ajoute des autres serveurs tandis que la solution
de mise à niveau peut devoir acheter tous les serveurs nouveaux En plus,
le prix d’un serveur spécifique (high-end server) est plus beaucoup cher qu’un groupe des serveurs usuels pour une capacité de traitement égale
Trang 21Figure 2.3.1.1: Scale « out », not « up »
˗ Assume failures are commun (Assumez les échecs sont commun) :
l’augmentation de nombre de serveurs dans un groupe des serveurs (cluster), alors des erreurs sont fréquent Le modèle de MapReduce a des mécanismes automatiques pour traiter des erreurs comme un redémarrage des tâches sur des différents nœuds, un envoi des messages aux nœuds pour obtenir des informations nécessaires de la réalisation de tâche …
˗ Move processing to the data (Déplacez le traitement aux données) : Dans
les systèmes traditionnels (High Performance Computing - HPC), les nœuds
de calcul et les nœuds de stockage sont connectés via une connexion de grande vitesse C’est pourquoi, cela entraîne le phénomène de Bottleneck pour des travails ont des grandes données car il faut déplacer les données aux nœuds de calcul via le réseau Donc, dans le modèle de MapReduce, il
va déplacer le traitement à la donnée Dans l’architecture de MapReduce, les nœuds de calcul et les nœuds de donnée sont mis ensemble Alors, on peut fonctionner directement des logiciels sur les nœuds de calcul et les données locales
˗ Process data sequentially and avoid random access (traitez des données
séquentielles et évitez des aléatoires accès) : Pour augmenter la vitesse de traitement du travail MapReduce traite séquentiellement l’ensemble de donnée entrée
˗ Hide system-level details from the application developer (cachez le
détail de système pour les développeurs) : MapReduce fournit des modèles
de programmation abstractive et des interfaces simples et prédéfinis
˗ Seamless scalability : Dans le modèle de MapReduce, on peut ajouter
facilement des ordinateurs à un groupe des ordinateurs pour élargir ce groupe
Trang 222.3.2 Principe de l’algorithme de MapReduce - Diviser pour mieux régner
˗ La partition du grand problème en des plus petits problèmes
˗ Des petits problèmes sont traités parallèlement et indépendamment
˗ L’intégration des résultats intermédiaires en un résultat final
˗ Des travailleurs peuvent être :
+ Threads dans core de processeur
+ Cores dans multi-core de processeur
+ Multiple processeurs dans un ordinateur
˗ Multiple ordinateurs dans cluster
Figure 2.3.2.1: Diviser pour mieux régner
2.3.3 Origine de MapReduce
˗ L’origine de MapReduce est la programmation fonctionnelle Elle a deux fonctions de Map et de Fold La fonction de Map prend une fonction f qui
a un paramètre et applique cette fonction à tous les éléments dans la liste
La fonction de Fold prend une fonction g qui a deux paramètres et une valeur initiale La fonction g applique d’abord aux la valeur initiale et le premier élément dans le liste, le résultat est sauvegardé dans une variable intermédiaire pour l’utilisation du seconde élément
Trang 23Figure 2.3.3.1 : Modèle programmation fonctionnelle
˗ La fonction de Map dans MapReduce est correspondant avec la fonction de Map, la fonction de Reduce est correspondant avec la fonction de Fold
2.3.4 Structure de donnée dans MapReduce
˗ La structure de donnée élémentaire : des paires clé-valeur
˗ Les types de donnée des paires clé-valeur: integers, float, strings, raw bytes
ou le type de donnée défini de l’utilisateur
˗ Il y a un problème posé : la détermination la structure clé-valeur dans l’ensemble de donnée à traiter Par exemple, dans l’ensemble de site web, des key peuvent être des URL et des valeurs peuvent être des contenus de
la page de HTML
Trang 242.3.5 Mapper et Reducer - Composants principaux de MapReduce
Figure 2.3.5.1 : Deux composants Mapper et Reducer
˗ Dans MapReduce, les programmateurs définissent une classe Mapper et une classe Reducer et deux fonctions principales selon ordre dans Mapper et Reducer
+ Map (k1, v1) [(k2, v2)]
+ Reduce (k2, [v2]) [(k3, v3)]
˗ Le symbole […] est une liste des paires clé-valeur ou une liste des valeurs Des fichiers de donnée entrée d’un travail de MapReduce sont sauvegardés sur le système de fichier distribué Mapper est appliqué à tous les paires clé-valeur pour créer les paires clé-valeur intermédiaires Reducer est appliqué
à tous les valeurs qui ont key intermédiaire identique pour créer des paires clé-valeur de l’output Entre la phase Map et la phase Reduce, il y a un traitement distribué des paires clé-valeur intermédiaire basées sur key Ces paires clé-valeur intermédiaire sont envoyé à chaque Reducer selon ordre qui est arrangé par key Les paires clé-valeur de l’output de Reducer sont sauvegardées sur le système de fichier distribué L’output final est r fichiers sur le système de fichier distribué, là-dedans r est le nombre de reducer Ces
r fichiers peuvent être l’input d’un autre travail de MapReduce
Trang 252.3.6 Partitioner et Combiner
Figure 2.3.6.1 : Deux composants Partitioner et Combiner
˗ Partitioner répartit les clé-valeur intermédiaires après la phase Map et envoie ces paires clé-valeur à Reducer En d'autres termes, Partitioner indique la tâche que ces paires clé-valeur intermédiaires doivent être envoyées à là Partitioner utilise une fonction d’hachage pour répartir les paires clé-valeur intermédiaires à Reducer Mais, Partititoner ne s’intéresse pas aux valeurs dans les paires clé-valeur, c’est pourquoi, il est possible qu’il y a des situations de répartition de donnée sur Reducer
˗ Combiner est un composant optimisé qui augmente des données transporteurs entre Mapper et Reducer Combiner regarde comme un petit Reducer (mini-reducer) qui est mis à l’output de Mapper et devant la phase
Trang 26de mélange et d’arrangement (Shuffle and Sort) Chaque Combiner fonctionne séparément pour un Mapper, c’est pourquoi, ces Combiner n’accède pas l’output d’un autre Mapper Combiner ramasse des paires clé-valeur de l’output de Mapper qui ont un key identique en une paire clé-valeur avec ce key et une liste de la valeur
2.3.7 Execution framework
˗ Un programme de MapReduce (un travail de MapReduce) contient les composants emballés :
+ Les codes de classe Mapper et de classe Reducer
+ Les codes de Partitioner et Combiner
+ Les paramètres de configuration (comme la position des fichiers de l’input et de l’output)
˗ Pour fonctionner un programme de MapReduce, le programmeur donne ce programme au nœud géré de tâche dans le groupe des ordinateurs (cluster)
et le cadre d’exécution (execution framework) va traiter tous les autres travails
˗ Les fonctions principales du cadre d’exécution (execution framework) : + Scheduling : Chaque programme de MapReduce est divisé en des plus
petites tâches Scheduling maintient une file d’attente (queue) de tâche
et assigne les tâches aux nœuds pour traiter qui ont des ressources disponibles
+ Data/Code co-location (donnée/code co-localisation): L’idée de
MapReduce est une transposition de code, ce n’est pas une transposition
de donnée Mais, dans des cas, on doit transporter la donnée au code Donc, Scheduler doit démarrer une tâche au nœud qui a le bloc de donnée nécessaire pour cette tâche, sinon peut-être, une tâche va être démarrée à l’autre nœud et la donnée de cette tâche est transmise via le réseau à ce nœud
+ Synchronization (synchronisation) : synchronisation est des
mécanismes pour des processus en cours peut-être joindre comme le partage de résultat intermédiaire ou l’échange d’information d’état Dans MapReduce, synchronisation est entre la phase Map et la phase Reduce, c’est « shuffle et sort »
+ Error and fault handling (erreur et traitement des défauts) :
MapReduce est projeté pour des groupes des ordinateurs usuels (cluster), c’est pourquoi, des erreurs se passent fréquemment Donc, MapReduce a des mécanismes pour traiter ces erreurs
2.3.8 Système de fichier distribué dans MapReduce
L’idée principale du système de fichier distribué est une partition de donnée
en des blocs et une sauvegarde ces blocs dans un disque dur local des nœuds dans
un groupe des ordinateurs (cluster), la valeur par défaut est trois copies Chaque
Trang 27bloc de donnée est souvent 64MB Le système de fichier distribué utilise l’architecture de Maître-Esclave (Master-Slave), Maître maintient l’espace de nom
de fichier (métadonnée, la structure de répertoire, la cartographie (mapping) de fichier à des blocs de données, la position des blocs, le droit d’accès), Esclave gère des blocs concrets Nous allons étudier plus minutieusement sur le système de fichier distribué dans la partie de HDFS d’Hadoop
2.3.9 Principe de fonctionnement de MapReduce
Figure 2.3.9.1: Principe de fonctionnement de MapReduce
D’abord, le programme du client et la donnée d’input sont soumis à JobTracker Après JobTracker détermine ce travail Le programme du client va diviser la donnée d’input en des divisions (split) et écrire ces divisions à DFS Ensuite, JobScheduler dans JobTracker va diviser le travail de MapReduce du client en des tâches et prendre la position des divisions (split) pour fonctionnement parallèle Chaque division, JobScheduler va créer une tâche de Map, donc le nombre de tâche de Map est égal le nombre de division Mais, le nombre de tâche
de Reduce est détermine par le programme du client Après JobTracker initialise des informations nécessaires pour le travail JobTracker va attendre pour recevoir heartbeat de TaskTracker, ensuite JobTracker va allouer des tâches et la position
Trang 28de division de donnée correspondante pour fonctionnement à ce TaskTracker Si TaskTracker reçoit une tâche de Map, TaskTracker va copier la division de donnée (split) correspondante à la mémoire de RAM pour traitement La donnée d’output
de la tâche de Map va être combinée et être arrangée et être écrit aux régions (region) dans le disque dur local de l’ordinateur de ce TaskTracker en une fonction d’hachage Si TaskTracker reçoit une tâche de Reduce, la donnée d’input est une liste des positions d’une région (region), TaskTracker va copier la donnée dans chaque région à la mémoire, après TaskTracker va mélanger et arranger ces données dans un fichier de donnée intermédiaire pour traitement La donnée d’output de la tâche de Reduce va être écrite à un fichier et être sauvegardée à DFS Après TaskTracker accomplit la tâche de Reduce, TaskTracker va annoncer l’état accompli à JobTracker Si cette tâche de Reduce est la tâche finale, donc JobTracker va annoncer l’état accompli du travail de MapReduce à l’utilisateur
2.4 CADRE D’HADOOP (HADOOP FRAMEWORK)
2.4.1 Introduction
Apache Hadoop est un cadre de source ouvert qui est écrit en Java par Doug Cutting Hadoop est utilisé pour fonctionner des logiciels appliqués avec un grand volume de donnée avec la rapidité, l’exactitude, l’efficacité en façon de sauvegarder et de calculer indépendamment des données sur beaucoup de nœuds
de matériel usuel Hadoop contient deux composants principaux, ce sont un système de fichier distribué d’HDFS pour sauvegarder des données dans beaucoup
de nœuds et l’installation de modèle de MapReduce pour traiter des données
2.4.2 Groupe des ordinateurs d’Hadoop (Hadoop Cluster)
Figure 2.4.2.1: Groupe des ordinateurs d’Hadoop (Hadoop Cluster)
Trang 29˗ NameNode et DataNode sont responsable de fonctionner le système de fichier distribué d’HDFS :
+ NameNode est le maître du système d’HDFS qui gère des métadonnées comme l'espace du système de fichiers, une liste des fichiers, des blocs d’ID correspondants de chaque fichier, une liste des DataNode, l’état d’opération des DataNode via des Hearbeat
+ DataNode contient des blocs de donnée réel des fichiers sur HDFS, est responsable de répondre des demandes de lecture/écriture de donnée du client, des demandes de création/suppression des blocs de donnée de NameNode
˗ JobTracker et TaskTracker est responsable de maintenir le mécanisme de MapReduce, reçoivent et réalisent des travails de MapReduce :
+ JobTracker reçoit des travails de MapReduce du client, après il divise
ce travail en des tâches et assigne les tâches aux TaskTracker JobTracker gère aussi une liste des TaskTracker et l’état de d’opération
de tâche des TaskTracker via des Hearbeat
+ TaskTracker reçoit des tâches à partir de JobTracker pour réalisation afin d’envoyer des états réalises de tâche à JobTracker
˗ SecondaryNameNode maintient une copie des métadonnées sur NameNode pour rétablir NameNode si NameNode est endommagé
2.4.3 Architecture d’HDFS
Figure 2.4.3.1 : Architecture d’HDFS
Nom de fichier
ID de Bloc, lieu sauvegardé du Bloc
Trang 30HDFS est similaire des autres systèmes de fichier HDFS maintient une structure d’arbre des fichiers et des dossiers que les fichiers sont des nœuds de feuille Dans HDFS, chaque fichier est divisé en un ou plusieurs blocs, chaque bloc
a un ID de bloc pour identification Les blocs d’un fichier ont ensemble une taille, c’est la taille de bloc de ce fichier Chaque d’un fichier est sauvegardé en plusieurs copies différents D’abord l’application envoie une demande de nom de fichier à NameNode, NameNode va renvoyer ID de bloc et le lieu sauvegardé du bloc
à l’application Ensuite, l’application va envoyer ID de bloc à DataNode, DataNode va renvoyer la donnée de bloc à l’application Le processus d’envoi et
de réception est réalisé entre l’application et DataNode sans NameNode
2.4.4 Modèle réalisé d’application de MapReduce dans Hadoop
Figure 2.4.4.1 : Modèle réalisé d’application de MapReduce dans Hadoop
D’abord, l’ensemble de donnée d’input sur HDFS est divisé en des blocs (la taille de défaut est 64MB), ces blocs sont envoyés à InputFormat, InputFormat
va marquer des paires de clé-valeur dans chaque bloc Ensuite, le composant de
Trang 31Record Reader (RR) lit des paires de clé-valeur pour l’input des Mapper Les paires
de clé-valeur à l’output des Mapper sont envoyées à Partitioner pour diviser en des partitions (région) qui sont sauvegardées dans le disque dur local de ces Mapper, chaque partition est correspondant avec un Reducer Des paires de clé-valeur sont arrangées et sont envoyées aux Reducer Les paires de clé-valeur à l’output des Reducer sont écrits à HDFS par OutputFormat
2.5 NUAGE INFORMATIQUE
2.5.1 Concept
Le nuage informatique est un modèle distribué et consommé des types de
la ressource virtuelle d’IT comme un service élastique suivant le besoin de l’utilisateur sur l’environnement d’Internet
Figure 2.5.1.1 : Nuage informatique
2.5.2 Point de vue sur le nuage informatique
Le point de vue de l'utilisateur : les utilisateurs n’ont pas besoin de s’intéresser à l’infrastructure de matériel au-dessous Ils s’intéressent seulement à
la qualité de service du fournisseur et aux travails qu’ils doivent faire
Trang 322.5.3 Caractéristiques du nuage informatique
2.5.3.1 Self-service suivant le besoin (On-demand self-service)
Chaque fois à un besoin, l’utilisateur envoie sa demande via le site web du fournisseur de service, le système du fournisseur de service va répondre la demande de l’utilisateur C’est pourquoi, l’utilisateur n’a pas besoin de prendre contact directement avec le fournisseur de service
2.5.3.2 Accès au réseau large (Broad network access)
Le nuage informatique fourni des services via l’environnement d’Internet
En raison de cela, il suffit d’avoir l’Internet, on peut utiliser les services En plus,
le nuage informatique ne requiert pas la capacité de traitement forte au client C’est pourquoi, l’utilisateur peut accéder en équipement portable comme le téléphone portable, PDA, laptop Donc, les utilisateurs ne dépendront pas de lieu Ils peuvent accéder les services à partir de n'importe ó, à n’importe quel moment
2.5.3.3 Utilisation de ressource commune (Resource pooling)
Les ressources fournies basent sur le modèle « multi-tenant » Dans ce modèle, les ressources sont allouées dynamiquement suivant le besoin des utilisateurs Quand le besoin d’un utilisateur est diminué, il tire le meilleur parti des ressources superflues pour servir un autre utilisateur Par exemple, le client A loue 10 CPU chaque jour de 7h à 11h, le client B loue aussi 10 CPU similaire chaque jour de 13h à 17h, donc deux clients peut utiliser en commun ces 10 CPU
Figure 2.5.3.3.1 : Utilisation de ressource commune
Trang 332.5.3.4 Élasticité rapide (Rapid elasticity)
˗ C’est le plus spécial, typique, important caractère du nuage informatique Il peut élargir et réduire automatiquement le système suivant le besoin de l’utilisateur Par exemple, un client loue un serveur contenu 10 CPU S’il y
a peu d’accès, il suffit de 5 CPU, alors le système géré du fournisseur de service éteindra 5 CPU superflu Le client ne paie pas des frais pour ces CPU superflu Ces 5 CPU fourniront aux autres clients qui ont des besoins Quand la qualité d’accès est augmentée, alors le système géré du fournisseur de service ajoutera des CPU, si le besoin dépasse 10 CPU, alors
le client doit payer des frais pour la partie dépassé
˗ L’avantage pour le fournisseur de service : L’élasticité utilise exhaustif des ressources superflues et sert beaucoup d’utilisateurs
˗ L’avantage pour les utilisateurs : L’élasticité diminue des frais superflus car les utilisateurs paient seulement des frais pour les ressources utilisées
2.5.3.5 Service mesurée (Measured service)
Le système de nuage informatique contrơle et optimise automatiquement l’utilisation de ressource (la capacité sauvegardée, CPU, …) La qualité de la ressource utilisée est espionnée, est contrơlée, est rapportée clairement pour le fournisseur de service et l’utilisateur
2.5.4 Avantage et Inconvénient du nuage informatique
2.5.4.1 Avantage :
˗ La vitesse de traitement est très rapide, le cỏt n’est pas cher
˗ Le cỏt de l'investissement initial sur les infrastructures de matériel, les machines et les forces humaines gérées de système diminuent au minimum
˗ Il ne dépend plus de l'équipement et l'emplacement géographique
˗ La capacité élastique facile aide à répondre tous les besoin des utilisateurs
˗ La surveillance de l’utilisation de ressource est facile et claire
2.5.4.2 Inconvénient
˗ Le problème privé
˗ La disponibilité
˗ La capacité perdue de donnée
˗ La capacité portable de donnée et la propriété
˗ La sécurité